zfs 重新同步是否会因错误报告的设备故障而破坏数据?

zfs 重新同步是否会因错误报告的设备故障而破坏数据?

我曾经遇到过这样的情况:我将数据移动到具有四个设备的新 zfs raidz 池中,其中一些是虚拟设备以方便迁移。系统完全挂在设备中间,将基于文件的设备替换为物理设备。

系统甚至没有响应 SysRq,必须进行物理重置。当它重新上线时,zfs 确定只有四分之二的设备在线,并开始重新同步并报告大量错误。我不知道如何阻止它这样做,即使卸载了池,它也会在后台继续运行。

当我设法在线获取完全正常的丢失设备时,它已经报告了许多错误。

这是否意味着 zfs 在重新同步时因设备丢失而损坏了数据?或者既然它已经拥有了原始设备,现在可以正确地重新同步吗?

当仅使用 2 个设备重新同步时,它会在 sda3 上重新同步,如下所示:

        NAME                             STATE     READ WRITE CKSUM
    zfs_raid                         DEGRADED     0     0 38.5K
      raidz1-0                       DEGRADED     0     0  129K
        sda3                         ONLINE       0     0     0
        sdc2                         ONLINE       0     0     0
        replacing-2                  DEGRADED     0     0     3
          /zfs_jbod2/zfs_raid/zfs.1  OFFLINE      0     0     0
          sdb1                       ONLINE       0     0     0  (resilvering)
        /zfs_jbod/zfs_raid/zfs.2     ONLINE       0     0     0  (resilvering)

错误:25852 数据错误,使用“-v”作为列表

答案1

由于没有检查代码,这只是猜测,但我会说“不”。 ZFSraidz大致相当于 RAID-5,任何有效的 RAID-5 实施都会在丢失两个驱动器时停止修复。

这就是关键:您丢失了两个驱动器。这将杀死任何单磁盘冗余系统,无论是 ZFS raidz1、2 磁盘 RAID-1 还是没有备件的 RAID-5。

是的,您更换了第一个出现故障的驱动器,但根据您的问题,阵列尚未自行重建,因此它实际上仍然丢失。

吸取教训:使用双磁盘冗余,添加热备用,或两者兼而有之。如今,磁盘太大,无法足够快地重建,从而使单磁盘冗余不再足够好。

相关内容