8月に構築した48TBファイルサーバのHDDが一つやられたので交換してみる

まさか構築して1年以内にHDDがやられるとは思いませんでした。しかもエラーが現れたのはZFSのscrub処理によってで、しかもSMARTの報告で確定するくらいのもの。はじめは「とりあえず再チェックかければなんとかなるかな…?」と思っていましたが…

 

HDD1台が不良セクタを大量に出す事態に

まず問題になったのはzpoolのstatusから。たま~にコマンド経由で何か問題がないかチェックをかけていますが、そのとき出てきた状態。ちなみにstatusなどのメッセージはちょっと控えていないので状態だけ。とりあえずこんな状態でした。

$ sudo zpool status
…
    NAME             STATE     READ WRITE CKSUM
    tank             DEGRADED     0     0     0
      raidz2-0       DEGRADED     0     0     0
        zfs1         ONLINE       0     0     0
        zfs2         ONLINE       0     0     0
        zfs3         DEGRADED     0     0   170  too many errors
        zfs4         ONLINE       0     0     0
        zfs5         ONLINE       0     0     0
        zfs6         ONLINE       0     0     0
        zfs7         ONLINE       0     0     0
        zfs8         ONLINE       0     0     0
…

zfs3だけ 大量のCheckSumエラーを出している状態です。不思議に思い一度zpool clearによりエラーを一度クリアして再度scrubによりチェックサムを確認させると同じような状態になったので「こりゃまずいのでは?」と思い、smartmontoolsを入れて問題のドライブの状態を見てみると…

$ sudo smartctl -a /dev/sde
…
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       65
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       936
  7 Seek_Error_Rate         0x000f   075   060   045    Pre-fail  Always       -       33243485
…

はい、明らかな 不良セクタの発生でした。冒頭にも書きましたが(HDDを10台同時とはいえ)稼働させて1年もたたずに1台目がやられてしまうとはびっくりです。とりあえずびっくりもしてられないので回復作業に取りかかります。念のために1台だけ予備のドライブがあるのでそれを取り付けます。

 

ZFSからRAIDZ系の回復作業を行う

ZFSでRAIDZ系を使っているときは対象のパーティションはDEGRADED状態ですがアクセスは可能ですので慌てなくても大丈夫です。後は取り外せる状態にして物理的に電源を落として交換orホットスワップによる交換を行い、再構築を行わせるだけです。まずは取り外す準備として壊れてしまったドライブを無効にする処理を行います。コマンドはzpool offlineです。

$ sudo zpool offline tank zfs3
$ sudo zpool status
…
    NAME             STATE     READ WRITE CKSUM
    tank             DEGRADED     0     0     0
      raidz2-0       DEGRADED     0     0     0
        zfs1         ONLINE       0     0     0
        zfs2         ONLINE       0     0     0
        zfs3         OFFLINE      0     0   170  too many errors
        zfs4         ONLINE       0     0     0
        zfs5         ONLINE       0     0     0
        zfs6         ONLINE       0     0     0
        zfs7         ONLINE       0     0     0
        zfs8         ONLINE       0     0     0
…

上のようにすると取り外しの準備ができます。対象のドライブがOFFLINEになっていますね。これを行った後で当該のドライブを取り外し、予備のドライブと交換します。面倒だったのはどれが/dev/sdeにあたるか、という問題。構築時にも書きましたがSATA3I10-PCIEの特性で端子(物理ドライブ)の順番と認識されているドライブの順番が一致していないので順番を間違えないように交換する必要があります。確認してみると今回対象になっていたのは物理的に一番下に来ていたドライブでした。

あとは交換してパーティションを組み直して終わりです。ドライブが交換されただけなので認識順番が変わらないことを使うとそのまま/dev/sdeになるため、

$ sudo parted /dev/sde
 - mklabel gpt
 - mkpart zfs3 zfs 2048s -1s

でzfs3の領域が元に戻り、ZFSに再構築を行わせれば完了です。

 $ sudo zpool replace tank zfs3

さすがに8TBもあるとかなり時間がかかるようですので気長に待ちましょう。RAIDZ2のよいところは2台故障まで耐えられるので1台の修復中であればそこまで怖がる必要がないことですね。完了したらTwitterにでもつぶやいておきます。

 

壊れたドライブはどうしようか…

最後はこれ。1年もたたず(というか半年すらたっていない)ので保証とか効かないかな…とは考えています。さすがにさらに予備を買っておくのはどうかと思いますので、なんとかしたいところですね。


コメントを残す

メールアドレスが公開されることはありません。

この記事のトラックバック用URL