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 

データ エラーがなく、プール全体に障害が発生していないのはなぜでしょうか?

1 つのドライブsdfで SMART に対する smartctl テストが失敗しread fail、他のドライブでは修正不可能/保留中のセクターまたは UDMA CRC エラーというやや軽微な問題が発生しています。

障害のあるドライブを 1 つずつオフラインにしてからオンラインに戻すという操作を試みましたが、効果はありませんでした。

    $ 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 をゼロにして、それ自体で置き換えます。これは問題ありませんが、本当にデータが失われている場合は、回復するためにこれらの最後の 2 つのボリュームが必要になる可能性があります。

これを今は机の上に置いていますsdfが、取り外しました。最悪の場合でも、これを使って回復を助けられると思います。

その間、劣化したドライブの最初の数 MB を dev/zero して、それ自体と交換し、交換品が手に入るまで、2 番目の障害のあるドライブで同じことを繰り返して、うまくいくと思います。

質問 何が起こったのか、プールはどうやって持ちこたえたのか、あるいはデータが欠落している可能性があるのか​​(zfs とそのレポートの整合性を考えると疑わしい)

スタックの最上位ドライブが故障しなかったなど、故障の順序が幸運だった可能性はありますか?

質問 これは参考情報であり、トピックとは関係ありません。3 つすべてが同時に失敗した原因は何ですか? きっかけはスクラブだったと思います。前日の夜に確認したところ、すべてのドライブがオンラインでした。

ケーブル配線は最近問題になっています。オフィスは夜になると寒くなりますが、それらの問題はdrive unavailableチェックサム エラーとは対照的です。ケーブル配線の問題ではなく、5 年前のドライブの老朽化が原因だと思います。しかし、1 日に 3 回も故障するなんて? 冗談でしょう、それは私たちの多くが怖がるには十分です!

答え1

RAID-Z2はダブルパリティです、RAID 6 と同様の冗長性。2 つのディスクが完全に故障しても、データはパリティから回復されます。アレイの残りの部分は正常であると仮定します。

必ずしも I/O エラーが発生するわけではありません。DEGRADEDはZFSがディスクを使い続けていることを意味するチェックサムエラーにもかかわらず、おそらくいくつかのビット反転が原因で、ドライブはまだ機能します。リンクその出力から:

「zpool status -x」を実行して、どのプールでエラーが発生したかを判断します。

READ、WRITE、または CKSUM のエラー数がゼロ以外のデバイスを探します。これは、デバイスで読み取り I/O エラー、書き込み I/O エラー、またはチェックサム検証エラーが発生したことを示します。デバイスはミラーまたは RAID-Z デバイスの一部であるため、ZFS はエラーから回復し、その後、破損したデータを修復できました。

これらのエラーが一定期間継続する場合、ZFS はデバイスに障害があると判断し、そのようにマークすることがあります。ただし、これらのエラー数は、デバイスが使用不可であることを示している場合と示していない場合があります。

ドライブの健全性について:

おそらく5年前のドライブの老朽化でしょう。しかし、1日に3回も故障するなんて? 冗談じゃない、それは私たちの多くが怖がるには十分です!

重要なデータを今すぐバックアップして復元テストします。このアレイではなく、別のメディアから行います。

劣化が続くドライブは交換してください。カーネルが syslog で I/O エラーを報告する場合は、必ず交換してください。保証期間内またはサポート契約期間内であれば、それを利用してください。保証期間が過ぎている場合は、メーカーはそれほど長くは持たないと見込んでいるため、その点を考慮してください。

関連情報