ZFSの無限の再同期


29

Debianに2つのドライブを失った大きな(> 100TB)ZFS(FUSE)プールがあります。ドライブに障害が発生したため、停止をスケジュールし、不良ディスクを物理的に交換できるようになるまで、ドライブをスペアに交換しました。

システムを停止してドライブを交換すると、プールは予想どおりに再同期化を開始しましたが、約80%に達すると(通常約100時間かかります)、再起動します。

2台のドライブを一度に交換すると競合状態になるのか、プールのサイズが原因で他のシステムプロセスが中断して再起動するのに時間がかかるのかはわかりませんが、明確な兆候はありません「zpool status」の結果または問題を示すシステムログ。

その後、これらのプールのレイアウトを変更して、再同期のパフォーマンスを改善しましたが、このシステムを本番環境に戻すためのリードやアドバイスを歓迎します。

zpool statusの出力(前回チェックしたときからのエラーです):

  pool: pod
 state: ONLINE
status: One or more devices has experienced an error resulting in data
    corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
    entire pool from backup.
   see: http://www.sun.com/msg/ZFS-8000-8A
 scrub: resilver in progress for 85h47m, 62.41% done, 51h40m to go
config:

    NAME                                                 STATE     READ WRITE CKSUM
    pod                                                  ONLINE       0     0 2.79K
      raidz1-0                                           ONLINE       0     0 5.59K
        disk/by-id/wwn-0x5000c5003f216f9a                ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWPK    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQAM    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPVD    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ2Y    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CVA3    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQHC    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPWW    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09X3Z    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ87    ONLINE       0     0     0
        spare-10                                         ONLINE       0     0     0
          disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F20T1K  ONLINE       0     0     0  1.45T resilvered
          disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09BJN  ONLINE       0     0     0  1.45T resilvered
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQG7    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQKM    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQEH    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09C7Y    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWRF    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ7Y    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0C7LN    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQAD    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CBRC    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPZM    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPT9    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ0M    ONLINE       0     0     0
        spare-23                                         ONLINE       0     0     0
          disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F226B4  ONLINE       0     0     0  1.45T resilvered
          disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CCMV  ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0D6NL    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWA1    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CVL6    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0D6TT    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPVX    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09BGJ    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0C9YA    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09B50    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0AZ20    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BKJW    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F095Y2    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F08YLD    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQGQ    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0B2YJ    ONLINE       0     0    39  512 resilvered
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQBY    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0C9WZ    ONLINE       0     0     0  67.3M resilvered
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQGE    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ5C    ONLINE       0     0     0
        disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWWH    ONLINE       0     0     0
    spares
      disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CCMV      INUSE     currently in use
      disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09BJN      INUSE     currently in use

errors: 572 data errors, use '-v' for a list

出力を提供してくださいzpool status
ロングネック

では、使用するとどのようなエラーが報告されます-vか?
ボビー

「エラー:次のファイルで永続的なエラーが検出されました:」、エラーのある約12のファイルのリスト。
-jasongullickson

「見る」部分については、より詳細な説明を読むことができます:illumos.org/msg/ZFS-8000-8A
レイモンドタウ

回答:


56

おめでとうございます。ZFSの優れた点の1つに出くわしましたが、構成の罪も犯しました。

まず、raidz1を使用しているため、パリティデータのディスクは1つしかありません。ただし、2つのドライブで同時に障害が発生しました。ここでの唯一の可能な結果はデータ損失です。それを修正する再同期の量はありません。

スペアはここで少し役立ち、完全に壊滅的な障害からあなたを救った。ここで手足に出て、故障した2台のドライブが同時に故障することはなく、最初のスペアは2台目のドライブが故障する前に部分的にのみ再同期したと言います。

それに従うのは難しいようです。これが写真です:

イベントのシーケンス

これが実際に良いことです。これが従来のRAIDアレイの場合、2番目のドライブが故障するとすぐにアレイ全体がオフラインになり、インプレースリカバリの機会がなくなるからです。しかし、これはZFSであるため、まだ持っているピースを使用して実行でき、そうでないピースに対してブロックまたはファイルレベルのエラーを返すだけです。

修正方法は次のとおりです。短期的には、破損したファイルのリストを取得し、zpool status -vそれらのファイルをバックアップから元の場所にコピーします。または、ファイルを削除します。これにより、resilverが再開して完了することができます。

ここに設定の罪があります: raidzグループにはあまりにも多くのドライブがあります。

長期:ドライブを再構成する必要があります。より適切な構成は、raidz1で5台程度のドライブの小さなグループにドライブを配置することです。ZFSはこれらの小さなグループに自動的にストライプします。これにより、すべてのドライブではなく5台のドライブだけが参加する必要があるため、ドライブに障害が発生した場合の再同期化時間が大幅に短縮されます。これを行うコマンドは次のようになります。

zpool create tank raidz da0 da1 da2 da3 da4 \
                  raidz da5 da6 da7 da8 da9 \
                  raidz da10 da11 da12 da13 da14 \
                  spare da15 spare da16

詳細かつ有益な回答をありがとうございます。イベントのシーケンスについてはスポットオンであり、デバイス構成に関するアドバイスを既に受けています(私が作成した2番目のデバイスは、説明とほぼ同じように構成されていますが、各RAIDをハードウェアに分散させるための追加の考慮事項もあります)バックプレーンの障害などによりレイド全体が失われる可能性を減らします。
-jasongullickson

破損したファイルを削除すると、「zfs status」はファイル名ではなく16進値を返すようになりました。スクラブが最終的に終了すると、これはなくなると思いますか?
-jasongullickson

@jasongullicksonは、ファイルシステムのメタデータも完全な場合のみ。ZFSはメタデータの保護に関しては非常に積極的であるため、おそらく良いでしょう。時間だけが教えてくれます。
ロングネック

私は個人的には以前にメタデータ破損イベントに遭遇したことはないので、エラーイベントの観点からそれがどのように見えるかわかりません。
ロングネック

1
@longneck Gotcha、それから私たちは同意しています-RAID-Zグループを十分に大きくして、あなたがresilverをボトルネックにしてそれを遅くするのは間違いなく悪い考えです。また、大規模なグループのその他の大きなリスクは、再同期中に2台目のデバイスが故障する可能性が高くなることです。パリティディスクの数を増やすと(RAID-Z2または3)信頼性の問題は解決されますが、再同期の速度は改善されません。
シェーンマッデン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.