一時期さんざん記事を書いた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