Archive for 8月 2nd, 2009

NASの玉交換

Posted by ゆのじ on 8月 2nd, 2009

再構築中......

一時期さんざん記事を書いたNASだが、ついに1発トラブルが起きた。アクセスランプがつきっぱなしになっていたので見てみると、

  pool: tank
 state: DEGRADED
status: One or more devices are faulted in response to persistent errors.
        Sufficient replicas exist for the pool to continue functioning in a
        degraded state.
action: Replace the faulted device, or use 'zpool clear' to mark the device
        repaired.
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        DEGRADED     0     0     0
          raidz2    DEGRADED     0     0     0
            c5t0d0  ONLINE       0     0     0
            c6t0d0  FAULTED      8   205     0  too many errors
            c5t1d0  ONLINE       0     0     0
            c6t1d0  ONLINE       0     0     0
            c5t2d0  ONLINE       0     0     0
            c6t2d0  ONLINE       0     0     0
            c5t3d0  ONLINE       0     0     0
            c6t3d0  ONLINE       0     0     0
        spares
          c3d1      AVAIL

とのこと。何が原因かわからないが、とりあえず書き込みエラーが頻発している玉(HDD/c6t6d0)があるようだ。とりあえずこちらを参考にしつつ、下記のように作業。ホットスワップ非対応であればいったんシャットダウンしてからHDDを取り替え、4の手順からやれば良いはず。

1)玉を外す準備

cfgadmコマンド(引数なし)でデバイス一覧が出るので、その中から問題の起きている玉を見つけて、unconfigureする。unconfigureしたらcfgadmで一覧を確認して、unconfigure状態になっていることを確認。

root@melongena:~# cfgadm
Ap_Id                          Type         Receptacle   Occupant     Condition
sata4/0::dsk/c5t0d0            disk         connected    configured   ok
sata4/1::dsk/c5t1d0            disk         connected    configured   ok
sata4/2::dsk/c5t2d0            disk         connected    configured   ok
sata4/3::dsk/c5t3d0            disk         connected    configured   ok
sata5/0::dsk/c6t0d0            disk         connected    configured   ok
sata5/1::dsk/c6t1d0            disk         connected    configured   ok
sata5/2::dsk/c6t2d0            disk         connected    configured   ok
sata5/3::dsk/c6t3d0            disk         connected    configured   ok
~略~
root@melongena:~# cfgadm -c unconfigure sata5/0::dsk/c6t0d0
Unconfigure the device at: /devices/pci@0,0/pci8086,244e@1e/pci1095,3124@1:0
This operation will suspend activity on the SATA device
Continue (yes/no)? yes
root@melongena:~# cfgadm
Ap_Id                          Type         Receptacle   Occupant     Condition
sata4/0::dsk/c5t0d0            disk         connected    configured   ok
sata4/1::dsk/c5t1d0            disk         connected    configured   ok
sata4/2::dsk/c5t2d0            disk         connected    configured   ok
sata4/3::dsk/c5t3d0            disk         connected    configured   ok
sata5/0                        disk         connected    unconfigured ok
sata5/1::dsk/c6t1d0            disk         connected    configured   ok
sata5/2::dsk/c6t2d0            disk         connected    configured   ok
sata5/3::dsk/c6t3d0            disk         connected    configured   ok
~略~

2)玉を外す

おもむろに玉を外して予備の玉に付け替えて元の位置に挿入。cfgadmではemptyになる。

root@melongena:~# cfgadm
Ap_Id                          Type         Receptacle   Occupant     Condition
sata4/0::dsk/c5t0d0            disk         connected    configured   ok
sata4/1::dsk/c5t1d0            disk         connected    configured   ok
sata4/2::dsk/c5t2d0            disk         connected    configured   ok
sata4/3::dsk/c5t3d0            disk         connected    configured   ok
sata5/0                        sata-port    empty        unconfigured ok
sata5/1::dsk/c6t1d0            disk         connected    configured   ok
sata5/2::dsk/c6t2d0            disk         connected    configured   ok
sata5/3::dsk/c6t3d0            disk         connected    configured   ok
~略~

3)再度玉を認識させる

cfgadmで該当のポートにHDDが認識され、unconfigure状態になっていることを確認したら、1の手順と同じく、今度はconfigureする。

root@melongena:~# cfgadm
Ap_Id                          Type         Receptacle   Occupant     Condition
sata4/0::dsk/c5t0d0            disk         connected    configured   ok
sata4/1::dsk/c5t1d0            disk         connected    configured   ok
sata4/2::dsk/c5t2d0            disk         connected    configured   ok
sata4/3::dsk/c5t3d0            disk         connected    configured   ok
sata5/0                        disk         connected    unconfigured unknown
sata5/1::dsk/c6t1d0            disk         connected    configured   ok
sata5/2::dsk/c6t2d0            disk         connected    configured   ok
sata5/3::dsk/c6t3d0            disk         connected    configured   ok
~略~
root@melongena:~# cfgadm -c configure sata5/0::dsk/c6t0d0
root@melongena:~# cfgadm
Ap_Id                          Type         Receptacle   Occupant     Condition
sata4/0::dsk/c5t0d0            disk         connected    configured   ok
sata4/1::dsk/c5t1d0            disk         connected    configured   ok
sata4/2::dsk/c5t2d0            disk         connected    configured   ok
sata4/3::dsk/c5t3d0            disk         connected    configured   ok
sata5/0::dsk/c6t0d0            disk         connected    configured   ok
sata5/1::dsk/c6t1d0            disk         connected    configured   ok
sata5/2::dsk/c6t2d0            disk         connected    configured   ok
sata5/3::dsk/c6t3d0            disk         connected    configured   ok
~略~

4)zfsに玉が交換されたことを通知する

これで、後は勝手にresilver(再構築)が行われる。うちの場合は1.5%ほど進んだ状態で残り5h28mと出た。うちはPCIバスに4ポートSATAカードを2枚挿して、PCIバスが律速になってしまっているので特にひどく遅いが、そうでなくてもそこそこ時間がかかる。

暇にあかして時々statusを見ていたら、ぱらぱらとチェックサムエラーがほかのドライブで出たりしていることに気がついた。ケーブルの品質がやたら悪い(1本100円のケーブルが混じっている)のが原因なのだろうと思うが、本当に駄目なケーブルは以前さんざんひどい目にあって抜いてあるのでキニシナイことにする(真似してはいけませんw)。パリティが二重にあることも、この辺を深く気にしなくてすむ理由。

root@melongena:~# zpool replace tank c6t0d0
root@melongena:~# zpool status
~略~
  pool: tank
 state: DEGRADED
 scrub: scrub in progress for 0h0m, 0.00% done, 378h41m to go
config:

        NAME              STATE     READ WRITE CKSUM
        tank              DEGRADED     0     0     0
          raidz2          DEGRADED     0     0     0
            c5t0d0        ONLINE       0     0     0
            replacing     DEGRADED     0     0 5.40K
              c6t0d0s0/o  FAULTED      8   205     0  too many errors
              c6t0d0      ONLINE       0     0     0
            c5t1d0        ONLINE       0     0     0
            c6t1d0        ONLINE       0     0     0
            c5t2d0        ONLINE       0     0     0
            c6t2d0        ONLINE       0     0     0
            c5t3d0        ONLINE       0     0     0
            c6t3d0        ONLINE       0     0     0
        spares
          c3d1            AVAIL

errors: No known data errors

外した玉は別の機械で一日ほどエラーチェックし続けて、問題があるようだったら購入した店へ持ち込もうと思う。

追記:

翌日見てみたら作業が終わっていた。どーもチェックサムエラーがぽちぽち出ている。次のメンテナンス時にはケーブルを変えた方がいいかもしれない。。

root@melongena:~# zpool status
~略~
  pool: tank
 state: ONLINE
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: http://www.sun.com/msg/ZFS-8000-9P
 scrub: resilver completed after 5h20m with 0 errors on Sun Aug  2 19:52:20 2009
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          raidz2    ONLINE       0     0     0
            c5t0d0  ONLINE       0     0     5  108K resilvered
            c6t0d0  ONLINE       0     0     0  178G resilvered
            c5t1d0  ONLINE       0     0     0
            c6t1d0  ONLINE       0     0     0
            c5t2d0  ONLINE       0     0     0
            c6t2d0  ONLINE       0     0     0
            c5t3d0  ONLINE       0     0     5  108K resilvered
            c6t3d0  ONLINE       0     0     3  64.5K resilvered
        spares
          c3d1      AVAIL

errors: No known data errors