ZFSプールの故障ドライブ交換手順
概要
本記事では,Proxmox VE で運用している ZFS プールの物理ドライブの故障の際の
交換からリシーヴ完了までの手順を解説します.
※実際に作業を行う際は,必ずバックアップを取得してから実施してください.
目次
1. 故障ドライブの確認
まずはS.M.A.R.Tの状態をチェックします.
1 | $ smartctl -a /dev/sdd |
SMART overall-health self-assessment test result: PASSED との表記が見られますがReallocated_Sector_Ctが164,Current_Pending_Sectorが3,Reallocated_Event_Countが 149など,物理的故障の予兆が出ています.
次に ZFS の状態を確認します.
1 | $ zpool status |
CKSUMが98で,実際に被疑ドライブのデータが失われてチェックサムエラーが発生した痕跡が記録されています.
この時点でS.M.A.R.Tに物理故障の予兆が出ており,実際にzfsの方でデータ破損も検出しているため要交換と判断しました.
2. ドライブ交換
それでは,実際に故障ドライブの交換を行っていきます
まずはじめに,zfsの方で故障ドライブをオフラインに移行します.
1 | $ zpool offline Data ata-WDC_WD2000FYYZ-01UL1B2_WD-************ |
正常にドライブがプールから切り離されたことを確認します.
1 | $ zpool status |
故障ドライブがOFFLINEとなり,プール状態がDEGRADEDへ移行しました
続いて故障ドライブを抜去し,新しいドライブをサーバに挿入します.
誤挿抜 = 即障害のため,ディスクのシリアル番号等をしっかり確認しましょう
念のため電源を切ってから挿抜するとより安心です
交換が終わったら,交換後の/dev/sddをプールに再参加させます.
注意:旧デバイス名は ZFS が内部で認識している ata‑WD… を指定します.
1 | zpool replace Data ata-WDC_WD2000FYYZ-01UL1B2_WD-************ /dev/sdd |
このとき
/dev/disk/by-id/からドライブを指定していなかったので命名規則が崩れました.悔しい.
基本的にはここまでのステップで復旧作業は完了です.
3. 復旧の進捗確認
復旧作業が完了したので,正常に復旧処理が開始されているかどうかを確認してみます.
1 | $ zpool status |
上記のように,スキャンが進行中であることを確認できます.
完了まで数時間かかる場合がありますので,ログを定期的に確認してください.
100% に達したら再度状態を確認します.
1 | zpool status |
1 | pool: Data |
Data プールは DEGRADED のままですが,リシーヴが完了しているのでデータ保護レベルは維持されています.
4. エラーのクリア(必要に応じて)
プールの状態が DEGRADED のままで,エラーステータスが残ってしまっているため,以下でクリアします.
1 | zpool clear Data |
errors: No known data errors が表示されれば,正常です.
まとめ
今回,サーバのディスクが故障してしまったため物理ディスクの入れ替えを実施してみました.
ZFSは新しいファイルシステムのため,情報が少なく苦労しましたが,
以下のような流れでスムーズに交換が行えました.
- SMART と ZFS ステータス で故障を検知
zpool offlineでデバイスをオフライン化zpool replace <プール> <旧デバイス> /dev/<新デバイス>で交換- リシーヴ進捗を確認し,完了まで待機
- 必要に応じて
zpool clearでエラーをクリア
新しいファイルシステムだけあって抽象化度合いが高く,復旧の難易度は低めに感じました.
今回,数分のダウンタイムで交換することができましたが,ホットスワップベイを使用していれば無停止でも交換が可能だと思います.
以上,参考になれば幸いです.
ZFSプールの故障ドライブ交換手順