Data-Recovery
zfs resilvering 能否破壞誤報設備故障的數據?
我遇到過一種情況,我將數據移動到具有四個設備的新 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”作為列表
沒有檢查程式碼,這只是猜測,但我會說“不”。ZFS
raidz
大致相當於 RAID-5,任何能勝任的 RAID-5 實施都會在失去兩個驅動器時停止修復。這就是關鍵所在:您失去了兩個驅動器。這將殺死任何單磁碟冗餘系統,無論是 ZFS
raidz1
、2 磁碟 RAID-1 還是沒有備件的 RAID-5。是的,您更換了第一個發生故障的驅動器,但根據您的問題,陣列尚未自行重建,因此它實際上仍然失去。
吸取教訓:使用雙磁碟冗餘,添加熱備件,或兩者兼而有之。如今,磁碟太大了,無法快速重建,以使單磁碟冗餘不再足夠好。