NAS4FreeでHDD故障・交換

NAS4FreeでHDD故障・交換の記録

今回の環境

NAS4Free 11.0.0.4.4249
WD40EZRX 10台 RAIDZ2構成

2014年の春頃に組んだNASでしたが
3年経って1台目の故障を検知したので交換対応になりました

RAIDZ2構成なので故障は2台まで安心ですが即交換します

なぜならRAIDはリビルド中が全HDDで読み込み処理が発生して
追加でHDD故障を検知しやすい危険なタイミングだからです

RAIDZ2は2台同時に故障することに対応するためではなく
1台故障してそのリビルド中に追加で1台故障しても大丈夫な状態を作るための設定

今回は交換用の予備HDDとしてセールで確保しておいた
同じ4TB HDDのWD40EZRZ-RT2を使って交換作業を実施します

故障したHDDを確認

当然ながら現状のRAIDZ2状態確認と交換するHDDを確認しなければならないので
NAS4Free管理画面で確認

まずはトップ画面

状態がDEGRADEDになってるのが確認できます
ここは正常な状態だとONLINEです

次はディスク→ZFS→情報タブ

  pool: ********
 state: DEGRADED
status: One or more devices has been removed by the administrator.
  Sufficient replicas exist for the pool to continue functioning in a
  degraded state.
action: Online the device using 'zpool online' or replace the device with
  'zpool replace'.
  scan: none requested
config:

  NAME                     STATE     READ WRITE CKSUM
  ********                 DEGRADED     0     0     0
    raidz2-0               DEGRADED     0     0     0
      ada0.nop             ONLINE       0     0     0
      ada1.nop             ONLINE       0     0     0
      ada2.nop             ONLINE       0     0     0
      ada3.nop             ONLINE       0     0     0
      7757709661830618737  REMOVED      0     0     0  was /dev/ada4.nop
      ada5.nop             ONLINE       0     0     0
      ada6.nop             ONLINE       0     0     0
      ada7.nop             ONLINE       0     0     0
      ada8.nop             ONLINE       0     0     0
      ada9.nop             ONLINE       0     0     0

errors: No known data errors

ここでもstateがDEGRADEDです
HDDはada4が故障した模様
既に故障検知したのでREMOVEDになってRAIDZ2構成から取り外されてます

次にディスク→マネージメント

ada4のステータスが失敗になってます
上に出てるエラー文言
Configuration information about devices is different from physical devices. Please remove those devices and re-add them or run import disks with clear configuration option enabled.
これはNAS4Freeに保存されているHDD情報と現在接続されている情報が違うので
HDDインポート作業した方がいいよってやつですが
今回は故障検知によってada4がREMOVED処理されている状態なので
情報に差異があるのが正常であり問題ありません

最後にステータス→ディスク

ada4だけI/O統計と温度が取得できずステータスが失敗になってます

温度が全体的に高いのはHDD交換前に最重要データだけ
バックアップ処理してた影響でDEGRADEDになると温度が上がったりはしません

ここで重要なのは故障したHDDの型番とシリアル番号をメモっておきましょう
交換する際に正常なHDDを取り外すミスを防ぎます

この辺の作業ミスはデータ消失に直結するので慎重に
(1台故障しか対応できないRAIDZの人は特に)

実際にHDDを交換する

先ほど確認した故障HDDと正常なHDDを交換します

今回の場合は普通のデスクトップPCで組んでいるので
一度電源を落としてケースを開けて交換を実施しましたが
ホットスワップ対応ケースを使用している場合は電源を落とす必要はありません

電源は普通に管理画面からシャットダウンすればいいです

今回はWD40EZRX-00SPEB0→WD40EZRZ-00GXCB0
WD40EZRZ-00GXCB0はIntelliParkが有効になっているので
事前に無効にしておきましょう

WDの場合はHDD表面のラベルだけでなく
コネクタの反対側(側面)にもシリアル番号が書いたシールがあるので
抜いて表面ラベル見て確認しなくてもいいので簡単です

HDD交換後はいつも通り起動します

交換したHDDを確認

NAS4Free管理画面にて交換したHDDの認識状態を確認します

まずディスク→マネージメント

ada4のデバイスモデルがまだ更新されていないのは正常です
ここで確認するのはステータスが変更になっているかどうかです

変更になっていればToolboxでada4を編集します

ここでディスクが交換後のWD40EZRZになっているのが確認できます
概要は前のままなので変えるなら手動で変えてください
今回はS.M.A.R.T.をオンにしただけで保存ボタンを押す

HDD管理の画面に戻ります

ada4のデバイスモデルが更新されステータスも修正になってます

なぜかサイズがWD40EZRXの時は3815448MB認識なのに
今回のWD40EZRZだと4.00TBで認識されています
前のHDDより多くなる分には問題ありませんが足りない場合は容量不足でエラーになるかも

HDD変更を保存するため「変更の適用」を選択

ステータスがすべてオンラインになり準備完了

リビルド開始

ディスク→ZFS→ツールからreplace処理を開始させます

Step1は「Replace a device」を選択してNextボタンをクリック

Step2はSelect Poolでプールを選択

Force Operationはチェックなしでいいです
プールが複数ある人は間違えないようにしてNextボタンをクリック

Step3でReplaceするデバイスを選択

今回もForce Operationはチェックなし
Pool Devicesで故障したHDDのスロット(今回はada4)
Select Data Deviceもデバイスを選択(こっちも同じada4)
最後にNextボタンをクリック

Step4はコマンド実行結果です

最後のOutput→SuccessがCommand execution was successfulになっていればOK

後はツールの右にある情報タブへ移動して進行状況の確認

  pool: ********
 state: DEGRADED
status: One or more devices is currently being resilvered.  The pool will
  continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
  scan: resilver in progress since Mon May 29 09:33:49 2017
        35.9G scanned out of 16.5T at 497M/s, 9h37m to go
        3.42G resilvered, 0.21% done
config:

  NAME                       STATE     READ WRITE CKSUM
  ********                   DEGRADED     0     0     0
    raidz2-0                 DEGRADED     0     0     0
      ada0.nop               ONLINE       0     0     0
      ada1.nop               ONLINE       0     0     0
      ada2.nop               ONLINE       0     0     0
      ada3.nop               ONLINE       0     0     0
      replacing-4            UNAVAIL      0     0     0
        7757709661830618737  UNAVAIL      0     0     0  was /dev/ada4.nop
        ada4                 ONLINE       0     0     0  (resilvering)
      ada5.nop               ONLINE       0     0     0
      ada6.nop               ONLINE       0     0     0
      ada7.nop               ONLINE       0     0     0
      ada8.nop               ONLINE       0     0     0
      ada9.nop               ONLINE       0     0     0

errors: No known data errors

stateはreplaceが終わるまでDEGRADEDのままですが
scanのところで進行状況が確認できます

この場合使用容量が16.5TBあってこのままいくと9時間37分後に終わる予定
下の3.42Gのところが交換したHDDへ転送しているデータ量

使用容量によって処理時間は変化するので同じ4TBx10台のRAIDZ2リビルドでも
使っているデータ量が少なければ早く終わるでしょう

リビルド結果

今回はリビルド時間を計測するためファイル転送をせず
リビルド処理に専念させました

最初は残り9時間37分とか出てましたが
結果的には9:33:49→22:12:15なので12時間38分26秒でした

終わる直前ぐらいの状態

  pool: ********
 state: DEGRADED
status: One or more devices is currently being resilvered.  The pool will
  continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
  scan: resilver in progress since Mon May 29 09:33:49 2017
        16.4T scanned out of 16.5T at 380M/s, 0h0m to go
        1.56T resilvered, 99.89% done
config:

  NAME                       STATE     READ WRITE CKSUM
  ********                   DEGRADED     0     0     0
    raidz2-0                 DEGRADED     0     0     0
      ada0.nop               ONLINE       0     0     0
      ada1.nop               ONLINE       0     0     0
      ada2.nop               ONLINE       0     0     0
      ada3.nop               ONLINE       0     0     0
      replacing-4            UNAVAIL      0     0     0
        7757709661830618737  UNAVAIL      0     0     0  was /dev/ada4.nop
        ada4                 ONLINE       0     0     0  (resilvering)
      ada5.nop               ONLINE       0     0     0
      ada6.nop               ONLINE       0     0     0
      ada7.nop               ONLINE       0     0     0
      ada8.nop               ONLINE       0     0     0
      ada9.nop               ONLINE       0     0     0

errors: No known data errors

最初は490M/sぐらいでしたが徐々に速度が低下し最終的には380M/s
32GBのメモリも半分程度しか使われず
CPUも35%ぐらいで推移してました(Celeron G1820)

リビルド終了後

  pool: ********
 state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
  still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
  the pool may no longer be accessible by software that does not support
  the features. See zpool-features(7) for details.
  scan: resilvered 1.57T in 12h38m with 0 errors on Mon May 29 22:12:15 2017
config:

  NAME          STATE     READ WRITE CKSUM
  ********      ONLINE       0     0     0
    raidz2-0    ONLINE       0     0     0
      ada0.nop  ONLINE       0     0     0
      ada1.nop  ONLINE       0     0     0
      ada2.nop  ONLINE       0     0     0
      ada3.nop  ONLINE       0     0     0
      ada4      ONLINE       0     0     0
      ada5.nop  ONLINE       0     0     0
      ada6.nop  ONLINE       0     0     0
      ada7.nop  ONLINE       0     0     0
      ada8.nop  ONLINE       0     0     0
      ada9.nop  ONLINE       0     0     0

errors: No known data errors

stateがONLINEに戻り正常な状態に戻りました

管理画面トップでも正常に戻る

S.M.A.R.T.と温度も取得できているか確認したら
NAS4Freeを再起動して再度確認
異常がない場合は最後に設定をバックアップして完了!

nopについて

お気づきの方もいるでしょうが
既存のHDDは全て「4KBラッパーをONにする」設定でnop経由になってますが
今回の交換デバイスにはnopは付いてません(というか付けませんでした)

これは数年前の構築当時は必要という情報を見つけたので付けて構築したのですが
2017年現在は標準で4KBに対応しておりnopは不要です

今のプールが4KB対応かどうかはzdbコマンドでわかります

nas4free: ~# zdb | grep ashift
            ashift: 12

12ならOK
9みたいな12以外で4KセクターのHDDを使ってる場合はnopが必要かも

ちなみにこの段階でnopをつけてなくても「4KBラッパーをONにする」が有効なら
起動時に勝手に作成されるみたいなので
ついてもついてなくても今のところ性能差はないです

この辺の挙動はあまり検証してないので各自起動ログにて確認ください

最後に

ZFSのHDD交換も3回目でだいぶ慣れてきたので
スムーズに交換完了できました

HDDがRMA期間に壊れてくれなかったのは残念でしたが
予備のHDDを確保しておくと何かと安心です

予備といってもそんなすぐ壊れたりしないので複数台は必要なく
現状はNASとして動かしている4TBHDDが24台に対して予備は1台でも十分です

今回の作業中にずっとactionでzpoolをアップグレードしろと言われていたので
次はzpool upgradeを実施しようかなと思います