zfs raidz-2 如何從 3 個驅動器故障中恢復?
我想知道發生了什麼,ZFS 是如何完全恢復的,或者我的數據是否仍然完好無損。
當我昨晚進來時,我感到沮喪,然後感到困惑。
zpool status pool: san state: DEGRADED 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: resilvered 392K in 0h0m with 0 errors on Tue Jan 21 16:36:41 2020 config: NAME STATE READ WRITE CKSUM san DEGRADED 0 0 0 raidz2-0 DEGRADED 0 0 0 ata-WDC_WD20EZRX-00DC0B0_WD-WMC1T3458346 ONLINE 0 0 0 ata-ST2000DM001-9YN164_W1E07E0G DEGRADED 0 0 38 too many errors ata-WDC_WD20EZRX-19D8PB0_WD-WCC4M0428332 DEGRADED 0 0 63 too many errors ata-ST2000NM0011_Z1P07NVZ ONLINE 0 0 0 ata-WDC_WD20EARX-00PASB0_WD-WCAZAJ490344 ONLINE 0 0 0 wwn-0x50014ee20949b6f9 DEGRADED 0 0 75 too many errors errors: No known data errors
怎麼可能沒有數據錯誤,並且整個池都沒有故障?
一個驅動器
sdf
對 SMART 的 smartctl 測試失敗read fail
,其他驅動器的問題稍小;不可糾正/未決扇區或 UDMA CRC 錯誤。我嘗試將每個發生故障的驅動器切換到離線狀態,然後一次切換到一個線上狀態,但這沒有幫助。
$ zpool status pool: san state: DEGRADED 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: resilvered 392K in 0h0m with 0 errors on Tue Jan 21 16:36:41 2020 config: NAME STATE READ WRITE CKSUM san DEGRADED 0 0 0 raidz2-0 DEGRADED 0 0 0 ata-WDC_WD20EZRX-00DC0B0_WD-WMC1T3458346 ONLINE 0 0 0 ata-ST2000DM001-9YN164_W1E07E0G DEGRADED 0 0 38 too many errors ata-WDC_WD20EZRX-19D8PB0_WD-WCC4M0428332 OFFLINE 0 0 63 ata-ST2000NM0011_Z1P07NVZ ONLINE 0 0 0 ata-WDC_WD20EARX-00PASB0_WD-WCAZAJ490344 ONLINE 0 0 0 wwn-0x50014ee20949b6f9 DEGRADED 0 0 75 too many errors
因此,如果我的數據實際上仍然全部存在,我感到非常幸運,或者有點困惑,在檢查了最差的驅動器之後,我用我唯一的備用驅動器進行了更換。
$ zpool status pool: san state: DEGRADED status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state. action: Wait for the resilver to complete. scan: resilver in progress since Tue Jan 21 17:33:15 2020 467G scanned out of 8.91T at 174M/s, 14h10m to go 77.6G resilvered, 5.12% done config: NAME STATE READ WRITE CKSUM san DEGRADED 0 0 0 raidz2-0 DEGRADED 0 0 0 ata-WDC_WD20EZRX-00DC0B0_WD-WMC1T3458346 ONLINE 0 0 0 replacing-1 DEGRADED 0 0 0 ata-ST2000DM001-9YN164_W1E07E0G OFFLINE 0 0 38 ata-WDC_WD2000FYYZ-01UL1B1_WD-WCC1P1171516 ONLINE 0 0 0 (resilvering) ata-WDC_WD20EZRX-19D8PB0_WD-WCC4M0428332 DEGRADED 0 0 63 too many errors ata-ST2000NM0011_Z1P07NVZ ONLINE 0 0 0 ata-WDC_WD20EARX-00PASB0_WD-WCAZAJ490344 ONLINE 0 0 0 wwn-0x50014ee20949b6f9 DEGRADED 0 0 75 too many errors
resilver 確實成功完成。
$ zpool status pool: san state: DEGRADED 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: resilvered 1.48T in 12h5m with 0 errors on Wed Jan 22 05:38:48 2020 config: NAME STATE READ WRITE CKSUM san DEGRADED 0 0 0 raidz2-0 DEGRADED 0 0 0 ata-WDC_WD20EZRX-00DC0B0_WD-WMC1T3458346 ONLINE 0 0 0 ata-WDC_WD2000FYYZ-01UL1B1_WD-WCC1P1171516 ONLINE 0 0 0 ata-WDC_WD20EZRX-19D8PB0_WD-WCC4M0428332 DEGRADED 0 0 63 too many errors ata-ST2000NM0011_Z1P07NVZ ONLINE 0 0 0 ata-WDC_WD20EARX-00PASB0_WD-WCAZAJ490344 ONLINE 0 0 0 wwn-0x50014ee20949b6f9 DEGRADED 0 0 75 too many errors
我現在正處於十字路口。我通常
dd
將故障驅動器的前 2MB 歸零,然後用它自己替換,我可以這樣做,但是如果確實有數據失去,我可能需要最後兩個卷來恢復。我現在桌子上有這個
sdf
,已刪除。我覺得我可以,在最壞的情況下,用這個來幫助恢復。與此同時,我想我現在要對降級驅動器的前幾 MB 進行開發/歸零,並自行更換,我認為事情應該會解決,沖洗並重複第二個故障驅動器,直到我能得到一些替換手上。
問題 發生了什麼,池如何能夠掛起,或者我可能失去了一些數據(考慮到 zfs 及其報告的完整性,值得懷疑)
可能是由於幸運的失敗順序,例如失敗的堆棧的頂部驅動器?
問題 這只是僅供參考,與主題無關。是什麼導致所有 3 個同時失敗?我認為這是一種磨砂膏,它是催化劑。我前一天晚上檢查了所有驅動器都線上。
請注意,最近佈線一直是個問題,辦公室晚上很冷,但這些問題只是
drive unavailable
,而不是校驗和錯誤。我認為那不是佈線,而是老化的驅動器,它們已經 5 年了。但是一天3次失敗?來吧,這足以嚇到我們很多人!
RAID-Z2 是雙奇偶校驗,冗餘類似於 RAID 6。兩個磁碟可能完全失效,數據從奇偶校驗中恢復。假設陣列的其餘部分是健康的。
您不一定有 I/O 錯誤。DEGRADED 表示 ZFS 繼續使用磁碟,儘管有校驗和錯誤。也許是因為一些翻轉,但驅動器仍然可以工作。根據該輸出的連結:
執行“zpool status -x”以確定哪個池出現錯誤。
查找 READ、WRITE 或 CKSUM 錯誤計數非零的設備。這表明設備遇到了讀取 I/O 錯誤、寫入 I/O 錯誤或校驗和驗證錯誤。由於該設備是鏡像或 RAID-Z 設備的一部分,因此 ZFS 能夠從錯誤中恢復並隨後修復損壞的數據。
如果這些錯誤持續一段時間,ZFS 可能會確定設備有故障並將其標記為故障。但是,這些錯誤計數可能表示或可能不表示設備不可用。
關於驅動器健康:
也許是老化的驅動器,它們已經 5 年了。但是一天3次失敗?來吧,這足以嚇到我們很多人!
現在備份恢復測試重要數據。來自不同的媒體,不是這個數組。
更換繼續降級的驅動器。肯定是核心在 syslog 中報告 I/O 錯誤。如果在保修或支持契約下,請利用這一點。如果通過保修,製造商打賭他們不會持續這麼久,所以要考慮到這一點。