Data-Recovery

zfs resilvering 能否破壞誤報設備故障的數據?

  • September 1, 2013

我遇到過一種情況,我將數據移動到具有四個設備的新 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”作為列表

沒有檢查程式碼,這只是猜測,但我會說“不”。ZFSraidz大致相當於 RAID-5,任何能勝任的 RAID-5 實施都會在失去兩個驅動器時停止修復。

這就是關鍵所在:您失去了兩個驅動器。這將殺死任何單磁碟冗餘系統,無論是 ZFS raidz1、2 磁碟 RAID-1 還是沒有備件的 RAID-5。

是的,您更換了第一個發生故障的驅動器,但根據您的問題,陣列尚未自行重建,因此它實際上仍然失去。

吸取教訓:使用雙磁碟冗餘,添加熱備件,或兩者兼而有之。如今,磁碟太大了,無法快速重建,以使單磁碟冗餘不再足夠好。

引用自:https://unix.stackexchange.com/questions/89063