zfs raidz-2 如何從 3 個磁碟機故障中復原?

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

重新同步確實成功完成。

$ 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次?來吧,這足以嚇到我們很多人了!

答案1

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 錯誤。如果有保固或支持合同,請利用它。如果通過了保修,製造商打賭它們不會持續這麼長時間,因此請考慮這一點。

相關內容