标签: zfsonlinux

为什么重新启动会导致我的 ZFS 镜像的一侧变为 UNAVAIL?

我最近刚刚将批量数据存储池(ZFS On Linux 0.6.2,Debian Wheezy)从单设备 vdev 配置迁移到双向镜像 vdev 配置。

之前的池配置是:

    NAME                     STATE     READ WRITE CKSUM
    akita                    ONLINE       0     0     0
      ST4000NM0033-Z1Z1A0LQ  ONLINE       0     0     0
Run Code Online (Sandbox Code Playgroud)

resilver 完成后一切正常(我在 resilver 完成后启动了清理,只是为了让系统再次检查所有内容并确保一切正常):

  pool: akita
 state: ONLINE
  scan: scrub repaired 0 in 6h26m with 0 errors on Sat May 17 06:16:06 2014
config:

        NAME                       STATE     READ WRITE CKSUM
        akita                      ONLINE       0     0     0
          mirror-0                 ONLINE       0     0     0
            ST4000NM0033-Z1Z1A0LQ  ONLINE       0     0     0
            ST4000NM0033-Z1Z333ZA  ONLINE       0     0     0

errors: No known data errors
Run Code Online (Sandbox Code Playgroud)

然而,在重新启动后,我收到一封电子邮件,通知我游泳池不漂亮而且花花公子。我看了一下,这就是我看到的: …

linux zfs mirror udev zfsonlinux

13
推荐指数
1
解决办法
2796
查看次数

ZFS 校验和错误,何时更换驱动器?

我对 ZFS 还很陌生,我有一个带有 8 个驱动器的简单镜像存储池设置。运行了几周后,一个驱动器似乎产生了很多错误,所以我更换了它。

又过了几个星期,现在我看到池周围出现了小错误(见zpool status下面的输出)。我应该担心这个吗?如何确定错误是否指示需要更换驱动器?

# zpool status
  pool: storage
 state: ONLINE
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-9P
  scan: scrub repaired 22.5K in 1h18m with 0 errors on Sun Jul 10 03:18:42 2016
config:

        NAME        STATE …
Run Code Online (Sandbox Code Playgroud)

zfs hard-drive zfsonlinux

13
推荐指数
2
解决办法
1万
查看次数

为什么 Linux 上的 ZFS 无法充分利用 AWS i2.8xlarge 实例上的 8x SSD?

我对 ZFS 完全陌生,所以一开始我想我会对它做一些简单的基准测试,以了解它的行为方式。我想突破它的性能极限,所以我配置了一个 Amazon EC2i2.8xlarge实例(几乎 7 美元/小时,时间就是金钱!)。此实例有 8 个 800GB SSD。

fio对 SSD 本身进行了测试,并得到以下输出(已修剪):

$ sudo fio --name randwrite --ioengine=libaio --iodepth=2 --rw=randwrite --bs=4k --size=400G --numjobs=8 --runtime=300 --group_reporting --direct=1 --filename=/dev/xvdb
[trimmed]
  write: io=67178MB, bw=229299KB/s, iops=57324, runt=300004msec
[trimmed]
Run Code Online (Sandbox Code Playgroud)

57K IOPS 用于 4K 随机写入。可敬。

然后我创建了一个跨越所有 8 个的 ZFS 卷。起初我有一个raidz1包含所有 8 个 SSD 的 vdev,但我读到了这对性能不利的原因,所以我最终得到了四个mirrorvdev,如下所示:

$ sudo zpool create testpool mirror xvdb xvdc mirror xvdd xvde mirror xvdf xvdg mirror xvdh xvdi
$ sudo zpool list …
Run Code Online (Sandbox Code Playgroud)

zfs amazon-web-services zfsonlinux

12
推荐指数
1
解决办法
5244
查看次数

为什么 ZFS 比 ext4 和 btrfs 慢这么多?

问题

我最近安装了一个新磁盘并在其上创建了一个 zpool:

/# zpool create morez /dev/sdb
Run Code Online (Sandbox Code Playgroud)

使用了一段时间后,我发现它很慢:

/morez# fio --name rw --rw rw --size 10G
   read: IOPS=19.6k, BW=76.6MiB/s (80.3MB/s)(5120MiB/66834msec)
  write: IOPS=19.6k, BW=76.6MiB/s (80.3MB/s)(5120MiB/66834msec)
Run Code Online (Sandbox Code Playgroud)

这个测试与我的实际用例非常相似。我正在从磁盘读取中等数量(~10k)的图像(每个~2 MiB)。当磁盘大部分为空时,它们是一次性写入的,所以我不希望它们被碎片化。

为了比较,我测试了 ext4:

/# gdisk /dev/sdb
...
/# mkfs.ext4 -f /dev/sdb1 && mount /dev/sdb1 /mnt && cd /mnt
/mnt# fio --name rw --rw rw --size 10G
   read: IOPS=48.3k, BW=189MiB/s (198MB/s)(5120MiB/27135msec)
  write: IOPS=48.3k, BW=189MiB/s (198MB/s)(5120MiB/27135msec)
Run Code Online (Sandbox Code Playgroud)

和 btrfs:

/# mkfs.btrfs -f /dev/sdb1 && mount /dev/sdb1 /mnt && cd /mnt
/mnt# fio --name rw --rw rw --size …
Run Code Online (Sandbox Code Playgroud)

performance zfs hard-drive zfsonlinux

11
推荐指数
2
解决办法
5677
查看次数

zfs销毁后恢复数据

在 Debian 8.7 上,我有一个 zfs 池。(显然在 Linux 上使用 ZFS,而不是 Oracle 或 Solaris zfs)

需要将 ZFS 池从 2 个磁盘上的镜像扩展到 4 个磁盘上的 raidz。我做了备份(一份数据副本 - 这是我的第一个错误)

我认为zpool destroy在我删除所有数据集(卷)之前这不会起作用,所以我做到了zfs destroy(这是我的第二个错误)。

之后我发出'zpool destroy',重新分区所有4个磁盘,发现备份已损坏。

所以我开始了我的恢复冒险:ZFS 的第一个好处是它能够导入被破坏的池。之后zpool destroy yourPoolName您可以调用zpool import -D以查看已销毁池的列表。然后,您可以使用 imoprt 它,zpool import -D yourPoolName或者如果您销毁了多个具有相同名称的池,那么您可以通过 id 导入它,由zpool import -D.

zpool import -D需要在其原始位置进行分区。它必须精确到部门。我曾经用fdisk确切的开始和结束扇区号创建分区。我曾经cfdisk设置分区类型(因为它对用户更友好:))然后您应该调用partprobe以确保操作系统知道更改的分区。

zpool import -D像魅力一样工作,我的游泳池再次处于完美健康状态!.. 但后果是zfs destroy- 所有数据都丢失了。

ZFS 在事务中存储对文件和文件系统的更改,这些更改以事务组 (TXG) 的形式保存到磁盘。我的进一步研究表明,我必须回滚最后一个事务组。

有两种回滚 …

zfs data-recovery zfsonlinux

10
推荐指数
0
解决办法
7281
查看次数

如何在 zfs 中“重新平衡”数据?(确保数据分布在所有条纹镜像中)

以条带镜像(Raid 10)为例,如果将两个磁盘扩展为四个,那么如何在两个镜像之间“重新平衡”(扩展)来自两个磁盘的数据?

也就是说,如何将写入一个镜像的文件写入两个镜像以利用条带磁盘?

linux zfs hard-drive disk-space-utilization zfsonlinux

10
推荐指数
2
解决办法
7176
查看次数

9x7 驱动器 raidz2 (ZFS ZoL 0.8.1) 上的缓慢顺序速度

我正在运行一个大型 ZFS 池,该池为 256K+ 请求大小的顺序读写通过 iSCSI(用于备份)在 Ubuntu 18.04 上运行。考虑到对高吞吐量和空间效率的需求,以及对随机小块性能的较少需求,我使用了条带化raidz2而不是条带化镜像。

然而,256K 的顺序读取性能远低于我的预期(100 - 200MBps,峰值高达 600MBps)。当 zvols 在 iostat 中达到 ~99% iowait 时,后备设备通常在 10% 到 40% iowait 之间运行,这向我表明瓶颈是我在配置中缺少的东西,因为它不应该是背板或 CPU这个系统和顺序工作负载不应该让 ARC 工作得太辛苦。

我已经玩了很多模块参数(下面的当前配置),阅读了数百篇文章,OpenZFS github 上的问题等。调整预取和聚合使我达到了这个性能水平 - 默认情况下,我在大约 50MBps 上运行ZFS 向磁盘发送 TINY 请求时的顺序读取 (~16K)。随着聚合和预取工作正常(我认为),磁盘读取要高得多,在 iostat 中平均约为 64K。

NIC 是 LIO iscsi 目标,具有 cxgbit 卸载 + Windows Chelsio iscsi 启动器在 ZFS zvol 之外运行良好,直接映射的 optane 在 NIC 上返回几乎全线速(~3.5GBps 读写)。

是我期待太多了吗?我知道 ZFS 将安全性置于性能之上,但我希望 7x9 raidz2 提供比单个 9 驱动器 mdadm raid6 更好的顺序读取。

系统规格和日志/配置文件:

Chassis: Supermicro 6047R-E1R72L
HBAs: 3x …
Run Code Online (Sandbox Code Playgroud)

performance zfs storage iscsi zfsonlinux

10
推荐指数
1
解决办法
1257
查看次数

Linux (ZoL) 上的 ZFS 和实时复制

我想了解在通过 10 GbE 链接连接的 Linux (ZoL) 机器上的两个 ZFS 之间进行实时复制的最佳解决方案是什么。目标是将它们用于虚拟机;一次只有一个机器会运行虚拟机和 ZFS 文件系统本身。快照需要在第一个(活动的)盒子上是可能的。我打算使用企业级/近线级SATA盘,所以双口SAS盘是没有问题的。

我想到了以下可能性:

  • 使用 iSCSI 导出远程磁盘并在本地机器的 ZFS 磁盘和远程 iSCSI 磁盘之间建立镜像。该解决方案的更大吸引力在于它的简单性,因为它使用 ZFS 自己的镜像。另一方面,ZFS 不会优先考虑本地磁盘而不是远程磁盘,这可能会导致一些性能下降(我想在 10 GbE 网络上几乎不相关)。此外,更令人担忧的是,如果两个机器之间的网络链接丢失,ZFS 将如何表现。当远程机器可用时,它会重新同步阵列,还是需要手动干预?
  • 使用 DRBD 同步两个 ZVOLS 并将 ZFS 放在 DRBD 设备之上。换句话说,我说的是堆叠的 ZVOL + DRBD + ZFS 解决方案。这对我来说似乎是首选方法,因为 DRBD 8.4 非常稳定且经过验证。然而,许多 I/O 层在这里发挥作用,性能可能会受到影响。
  • 在顶部使用普通 ZFS + GlusterFS。从 ZFS 的角度来看,这是更简单/更好的解决方案,因为所有复制流量都委托给 GlusterFS。你觉得 GlusterFS 足够稳定吗?

你觉得更好的方法是什么?谢谢。

zfs replication zfsonlinux

9
推荐指数
1
解决办法
9241
查看次数

使用快照的 ZFS 可以使用同步协议 A 替换 DRBD 吗?

这个问题与以前的更通用的问题有关,但这次我想更具体地询问 ZFS 是否可以在像我这样的用例中替换 DRBD。即两台服务器,都托管自己的 VM 或其他服务,同时将 VM 或其他一些数据相互复制,以缩短硬件故障或维护时的停机时间。此设置符合预期,我想要首选的本地读/写,并且可以在任意时间范围内承受潜在的数据丢失。

DRBD 支持这种具有不同镜像协议的场景,其中复制协议 A是异步的,因为我需要它。DRBD 在我的设置中的主要好处是切换到更同步的协议很容易,只需配置和重新启动即可。此外,可以将 dm-crypt 放在 DRBD 块设备的顶部,并将文件系统放入 dm-crypt 中,以便对每个数据进行加密。

另一方面,DRBD 的问题是它需要块设备,并且必须使用其他技术(如 RAID 和 LVM 等)关心它们的可用性和大小。尤其是调整大小的事情似乎很有趣,因为我的服务器有空闲插槽可以在将来连接更多磁盘。为了支持调整大小,我需要在 DRBD 下使用 LVM,首先使用 LVM 添加存储,然后调整 DRBD 的大小以考虑新的存储。比我还需要处理 dm-crypt,文件系统本身等。这读起来非常复杂,而且我容易出错。

另一方面,像 ZFS 这样的文件系统已经提供了自己的 LVM,并且能够发送/接收增量快照。所以理论上 ZFS 应该能够实现相同的协议 像 DRBD 这样的方法不需要使用 RAID、LVM 等。只需将存储添加到服务器,将其放入 ZFS 池中,它就可以立即用于托管更多/更大的虚拟机或其他。发送/接收快照听起来与 DRBD 所做的任何事情一样有效,因为它只是增量二进制数据,需要任何开销来描述要在接收 ZFS 中理解的更改。我读过人们使用无睡眠时间的无限循环发送/接收 ZFS 快照,然后再次直接在源中删除它们,因为它们只用于短期复制。

不过,加密对 ZFS 来说似乎是一个问题。dm-crypt 可能适用于 zvols 之类的东西,将来它可能会直接支持加密,但目前不支持。此外,发送/接收快照似乎总是异步的,如果需要,没有办法实现像 DRBD 提供的更多同步协议。不过,这可能是可以接受的,因为不需要使用 LVM 并使整体设置更容易。

或者我错了,除了发送/接收快照之外,还有其他方法 ZFS 如何将数据转发到开箱即用的其他主机和仅 ZFS?

与 DRBD 镜像协议相比,您是否看到在短时间内使用 ZFS 频繁发送/接收快照的一些基本性能差异或限制?后者可能会更有效一点,因为我猜只有块级别。 …

zfs replication drbd zfsonlinux

9
推荐指数
1
解决办法
2382
查看次数

如何将 zfs 池中的驱动器引用从 /dev/sdX 更改为 /dev/disk/by-id (ata-XXXXXX)

在下面的示例中,如何更改第二个镜像中的设备,以便它们引用而/dev/disk/by-id不是/dev/sdX

user@pc:~$ sudo zpool status
  pool: storage
 state: ONLINE
  scan: scrub repaired 0 in 8h30m with 0 errors on Sun May 28 08:54:48 2017
config:

    NAME                                  STATE     READ WRITE CKSUM
    storage                               ONLINE       0     0     0
      mirror-0                            ONLINE       0     0     0
        ata-ST2000AS0002-1NA12Z_Z840MHWP  ONLINE       0     0     0
        ata-ST2000AS0002-1NA12Z_Z840MHTQ  ONLINE       0     0     0
      mirror-1                            ONLINE       0     0     0
        sdd                               ONLINE       0     0     0
        sde                               ONLINE       0     0     0
Run Code Online (Sandbox Code Playgroud)

linux zfs zfsonlinux ubuntu-16.04

9
推荐指数
2
解决办法
6243
查看次数