NAS4Freeで運用してるRAID-Zプール内のHDDがぶっ壊れたときの対処 #NAS4Free #ZFS

Posted on February 27, 2015 at 11:06:09 UTC


ついにこの時が来てしまったか…。NASのHDDが壊れただと…?(ただし、RAID-Z2使ってるのでデータは無事)

というわけでこうなっていたらしいです。

最終的にはHDDを交換しなくてもよいことになったのですが、SMARTにて不穏なエラー吐いてる他のHDDがあって次にいつクラッシュしてもおかしくはないので「Xデー」のために復旧手順を記録することにしますた。この対処がいいかはわからないけど。

どんな環境を使ってたか

3TBのHDD6台でRAID-Z2を構築して、実効容量12TBという漢のストレージ。

詳細スペックはこんな感じです

  • CPU(APU):A4-3300
  • メモリ:8GB+2GB
  • HDD:ST3000DM001を6台
  • NAS4FreeはUSBブート

ちなみに、ケースは前の前のマシンからの転用、マザーボードとCPU(APU)は秋葉原でセット価格4980円だった激安品、メモリは某所で壊れたと判断されて捨てられていたものの中に明らかな正常なメモリが紛れていたのを発見したのでそれを貰って使用…。何かおかしい気がしますが気にしたら負けです。

あと、「速い・安い・(ニアラインモデルよりは)壊れやすい」の3拍子揃ったST3000DM001なんてものを使っていることから分かるように、HDDは壊れるのだと割り切ってRMAを活用してじゃんじゃん交換する方針で運用してます。家庭用?だからこういうのも許されるはず。

まあ保証期間切れるぐらいになったら8TBぐらいのHDDがコモディティに降りてくるでしょうし。

ぶっこわれてもRAID-Zだし(以下略

いやたしかにそうなんだけど、その辺のNASと違って(?)復旧は手動でやる必要があります。
つまり、zfsを操作するためのコマンドを自分で打つ必要があるということです。FreeBSDにSSHであれこれするのと同様に。

もっとも、NAS4Freeの場合はこのようにコマンドを実行するのを補助してくれる仕組みがあるので少しは楽できます。

ですが、コマンド知ってないと使いようがなかったりするのでオラクルのZFS関連コマンドのマニュアルを少しは読んでおく必要があります。

参考資料

復旧手順

  1. とりあえずclearなりscrubなりしてみる
  2. 故障HDDの特定
  3. HDDチェックツールによる診断
  4. HDDを新規購入し、交換&再構築
  5. RMA申請
  6. 交換されたHDDをホットスペアに追加する

とりあえずclearしてみる

HDDが認識しないような明らかな故障は除いて、とりあえずこれを実行。エラー出てるのにこれ実行するのは何か間違っている気がしますが、たまたまエラー出てるだけかもしれないですし。

http://docs.oracle.com/cd/E19253-01/819-6260/gbbzv/index.html

これやってまたエラーが出たらやっぱり壊れているのでしょう…。

故障HDDの特定

NAS4Freeではディスク→マネージメントからHDDを一覧できます。そこでシリアルナンバーが見れるので壊れているHDDのシリアルナンバーを調べておきましょう。

HDDチェックツールによる診断

Seagateの場合、Seatoolsという専用ツールがあります。それによって壊れてるかどうかのチェックができるそうです。

まあRMAには必要ないらしいけど、もしかすると壊れていない可能性もあるし、壊れていないドライブを送りつけた場合は交換の対象にならない上に手数料とられるよとのことなので一応確認しておきます。

スキャンは該当ドライブ(シリアルナンバーからわかる)をとりあえずShort Scanしてみて、それで正常であると出るようであればFull Scanしてみればいいでしょう。

USBブートできるSeatoolsの作成(*nix等の場合)

Windowsの場合はググればいくらでも情報が手に入るのですが、*nixの場合は日本語の情報が意外にないので念のためここに記します。

  1. SeagateのウェブページからSeatoolsをダウンロード
  2. ダウンロードしたisoをマウント
  3. 中にあるSeaTools.imaをddコマンドでUSBメモリに書き込む

これでUSBブートできるようになります。

HDDを新規購入し、交換&再構築

メーカーにもよりますが、RMA手続きは地味に時間かかります。RAID-Z2とはいえ待っている間に他のHDDが故障したら最悪の事態もありうるわけで。
さっさと元の容量以上の適当なHDDを購入して交換しておきましょう。ウウッいい値段する…。

新しいHDDを買ったらオラクルのマニュアルの「例 11–1 ZFS ストレージプール内のデバイスを置き換える」にしたがい、該当HDDをdetachして普通に交換します。自作機やサーバー機ベースだとホットスワップに対応していたりもしますが、ダウンタイムが気にならないような用途であれば素直に電源を切って交換したほうがいいでしょう。

交換が終わったらzpool replaceを行って、再構築が完了するまでひたすら待ちます。残り時間100時間とかになっても泣かない。データ消えるよりはずっといいのだから。

RMA申請

RMAによるHDD交換対象かのチェック

クソ長い時間のかかるスキャン中にでも交換対象かどうか調べましょう。Seagateの場合はこちらから。

http://support.seagate.com/customer/ja-JP/warranty_validation.jsp

モデルナンバーとシリアルナンバーを入れればすぐに出ます。保証期間過ぎてたら諦めましょう。

他メーカーの場合はこちらを参考に。

http://wiki.nothing.sh/page/HDD%20RMA

壊れたHDDを送るための手続きをする

これについては「RMAによるHDD交換対象かのチェック」からそのまま手続きができるのでそれにしたがって手続きし、指定の住所にHDDを送ります。

HDDを送るときの梱包

誰の家にも1つはあるHDD交換で使用するケース。つまり以前にもHDDクラッシュ…。

これはWDのケースですがこういうスポンジで上下を包み込むケースと静電防止袋が必要です。壊れたHDDごときにこんな上等な包装が必要なのか…。

こんなもの普通はもってねーよという人はこちらを参考にしてみると良いでしょう。

http://engineersideline.com/2011/09/28/

交換されたHDDをホットスペアに追加する

忘れたころにHDDが送られてきます。これは、今後のいざというときに備えてホットスペアにしておくと良いでしょう。HDDクラッシュはいつでもあなたのそばにいるのですから。

結局どうだった?

clearしてみて治らなかったのでやっぱり壊れてると思い「HDDチェックツールによる診断」を実行。しかしロングテストでもなぜかエラーなし。テストを行った後にclearやってみたらエラーなく動くようになってました。謎だ。

ただ、別のHDDのSmartが怪しいので、とりあえず購入したHDDをホットスペアにしておくことに。