はじめに
半年くらい前に
110G RAMキャッシュと10G LANで超高速NASを作る
ということで作成したのですが、HDD6枚使ってN+1冗長(RAID5相当)を行ったため、割と高頻度でHDDが壊れます。
Linuxにて異常なSMART値のときにメールを送る
が早速役にたってしまいました。
参考にしたサイト
しげふぁみ「ZFS raidzのHDD交換(ホットプラグ)」
いぶろぐ雑記「【備忘録】RAID-ZのHDD交換手順」
作業
今回のPCはSATAコントローラ的にはホットスワップ対応ですが、ケースや配線が全くホットスワップのことを考慮していないので、シャットダウンして交換を行うことにします。
1. ZFSやHDDの状態の確認zpool status
でzfsの状態の把握、sudo smartctl -a /dev/sdX
でHDDの状態把握ができます。今回は代替処理済みセクタ数が2となっていました。
2. 壊れているHDDのIDを把握
メールで送られてくるのは/dev/sdxの形なので、どのHDDかわかりません。ls /dev/disk/by-id/ -l | grep sdX
を実行したりしてHDDのシリアル番号を知ったりすると良いと思います。
ここでzpool scrub プール名
とかでスキャンをしたほうが良いかも知れません。
3. 交換するディスクをオフラインにするsudo zpool offline プール名 HDD名
自分の場合はHDD名をWWNで指定しているので、2で把握したHDDをオフラインにしました。
4. 電源を切ってHDDを交換
HDD本体にシリアル番号が書いてあるので、2で把握した番号のものを探します。
交換したときに他のHDDの接続がゆるくなって認識されず、RAID崩壊みたいなことにはなりたくないので、BIOSで全部認識されていることを確認してからLinuxを起動させました。
ホットスワップの場合はecho 1 > /sys/block/sdX/device/delete
とかして切断するっぽいです。
5. 新たなHDDを識別ls /dev/disk/by-id/ | grep wwn
6. zpoolに追加sudo zpool replace プール名 旧HDD名 新HDD名
これで完了です。あとは再構築が終了するのを待つだけです。
進行状況はzpool status
で確認できます。
おわりに
ホットスワップに対応すべきだと痛感しました。該当するHDDを探すために配線を抜き差ししたりするのを6台分やってめんどくさかったです。