zfs で raid z2 なマシンをオンラインで容量を増やすには

おうちサーバのストレージの容量が逼迫してきたのと、そろそろいくつかHDDが死に始めたのでこれを機にHDDを入れ替えることにした。

おうちサーバのメインの方は RAID Z2 なので、HDDが2台死んでもデータは保存されるので、6台あるHDDを、壊れるたびに 1.5TiBから3TiBのものに 入れ替えていって、ただいま最後のHDDがリビルド中なのである。これが終わると約10TiBの大きな保存庫が完成するのである。

オンラインで容量を増やす、とタイトルには書いたが、そのためには Hot Plug できるHDDが必要で、実はおうちサーバはそれができないので、一回一回電源を落としてたりする。まあ、その辺はアレってことで。

あとは、一台づつHDDを新しいものに入れ替えて、 zpool replace するだけである。果てしなく時間がかかるが待っているだけ。これを6台分繰り返せばおしまい。さすが zfs なのだ。

はまりみち: zpool status でときどきステータスを確認していると、再構築中のプールに書き込みがあると、リビルド完了までの時間が延びるので、なるべく書き込みがないようにしておきたい。

tips: 2台以上交換が終わった時点で、前のHDDに問題がなさそうなら、別のミラープールを作成して、RAID Z2 のプールのファイルを移動させておくと、リビルドが早くなります。使用率90%くらいあった プールだと、120時間くらいかかっていたのが、使用率30%くらいになると、30時間くらいで終わるのでお勧め。

ということで、あと20時間くらいで終わる予定。 おわった。けど、容量が増えない。なんでかな? いろいろ検索した結果、autoexpand=yes になってないと自動で増えないことが判明。ぐぬぬ。 手動で増やすのであれば、 zpool online -e すればよい。 ということで、無事増えました。

まとめ: RAID Z な zfs pool は一台づつ容量の大きな HDD に交換することによって、オンラインのまま拡張することが可能。 autoexpand=yes にしておけば、最後の HDD のリビルドが終わった際に拡張される。 デフォルトでは autoexpand は yes になっていないので、 zpool online -e して手動で拡張可能。 export -> import でも増える。 リビルドにものすごく時間がかかるから、ぶっちゃけあまりお勧めはできないが、HDD不良などで交換する際についでにやったり、予防交換する場合などにはいいかも。 AFTじゃないHDDからAFTなHDDに入れ替える場合は、新たにpool 作り直さないと 4kセクタアクセスに変更することはできない。

ということで、次やるか?と聞かれたらNoですな。 あと、RAID Z2だから余裕もってできたけど、RAID Z1 だったらリビルド中にもう一台逝く可能性もあるので、ちょっと怖くて無理。

タグ: FreeBSD Zfs

過去のコメント

匿名

いつもお世話になります。 どのくらいなんでしょう。CPUとメモリをよければ教えてください。 「ものすごく時間がかかる」ことについて、実時間をわかりやすく提示しているのは 妄想エンジンさんのブログだけかなぁ。 ミニマムなZFS(2G位のファイルを複数ブロックデバイスに見立てての実験)ではさすがに瞬時に終わるけれど 実運用だとつらいんだろうな、と。心の準備がないとできませんね。 南の島 でした。

mousou

HPのML110G7でXeonの1225でメモリ32GBだったはず。 HDD盛ってる以外はしょぼいマシンです。