ZFSのRAID-ZのHDDを交換する

投稿者: | 9月 22, 2025

はじめに

半年くらい前に
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台分やってめんどくさかったです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)