RAIDZのディスク交換
FreeNASで構成したRAIDZはすこぶる順調に稼動してきましたが、4台のディスクの内1台で復旧不能なバッドセクターがあるという情報が出るようになりました。
そろそろ交換の時期かもしれないと考えていた所、FreeNAS自体がブートしないというトラブルが発生しました。 BIOSの画面もでないという点からマザーボードやCPU障害(CPUはオンボードなので結局はマザーボードの問題)が考えられましたが、ディスクの障害の前兆があったので、ひょっとしたらディスクが悪さしているかとも思い、4台のディスクのケーブルを1つ1つ抜いてブートを行いました。
3台目のディスクまでの調査でブートしなかったので、いよいよマザーボードの交換を覚悟しました(マザーボードの交換になると最早同じマザーボードを入手するのは困難なため、別のマザーボード購入を検討するしかなくなり、そうするとFreeNASの再インストール、RAIDZの設定、iSCSIの設定やら再構成が面倒だなと思いました)が、最後のディスクのケーブルを抜いてブートすると何の問題もなくブートし、ディスク3台構成でRAIDZも機能し、ファイルアクセスも問題ありませんでした。
そこで、ネットで出回っているRAIDZのディスク交換手順にのっとり、その障害のありそうなディスクを新しいディスクに置き換え、zpoolコマンドでリプレースをしようとしました。
ところが、replaceコマンドがうまく動作しません。
どうやら新しいFreeNAS(8.3.1)のRAIDZはバージョンが上がり、セキュリティ強化の観点でデバイス名が暗号化されているようです。
なので、ネットにあふれているデバイス名を直接指定する方法ではうまくいかないようです。
新しいバージョンでの設定方法を探してみましたが、適当なものがみつからず、これは本家のドキュメントを調べてみるしかないかと思い始めました。
とその前にWebのインタフェース上でストレージを確認してみた所、zpoolのステータスを確認するページにreplaceボタンがあり、それを押すことで簡単に交換ができました。(これほど簡単なので、ウェブ上で情報を流す必要もないのかも)
実際には、この後zpoolのstatusコマンドで確認すると、該当ドライブはresilveringという状態になっていて、これは要するにRAIDZメンバーとして完全に機能するためにデータの同期を取っている状態です。
このresilveringの処理は以外に時間が必要でして、正確に計っていませんが、2TBで10時間強くらいかかりました。
これで一件落着といきたいところでしたが、相変わらずバッドセクターのエラーメッセージが出力され、ドライブ名を見ると交換したディスクとは違うドライブで発生しています。
それで、壊れたと思ったディスクを普通にWindowsで初期化して600GBくらいのデータをコピーしてみましたが、何も異常なくコピーできてかつ読み込みも問題なさそうです。
で結局何が悪かったのかまたわからなくなりましたが、バッドセクターのディスクも気になるし、予備でディスクももう一台購入しておいたので、この際、このディスクも交換してしまおうと考えました。
方法を一度学習すれば、作業はスムーズで今回は何の問題もなくスムーズに作業は終わり、resilveringにはまたそれなりの時間がかかりましたが、最終的にバッドセクターエラーも解消され、ファイルの消失等もなさそうです。
こういう障害の時に初めてありがたみがわかるという感じですが、改めてRAIDZのすばらしさを体感しました。
ちなみにこの一連の作業で一番時間がかかったのは、実は物理的なディスクの交換作業でケースからディスクをどう取り出すかで非常に時間がかかってしまいました。
(Mini-ITXの小さな筐体なのでディスクはぎゅうぎゅう詰めになっていて、どこを緩めるとディスクを外せるか全く忘れていてえらい時間がかかってしまいました。)