家で使用している、ファイルサーバはFreeBSD 8.0とZFSを使用して構築したものです。
先日、接続すると上手く反応してくれなくなっていたので、調べてみたら一つのディスクがエラーを出している様子。
環境は以下のようになります。
da0: Seagate ST3500410AS
da1 – da7: HGST HDP725050GLA360
新しいHDD: HGST HDS721010CLA332
ログは確かこんな感じ(消してしまったので適当に細工)。
# zpool status pool: pool state: DEGRADED 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: none requested config: NAME STATE READ WRITE CKSUM pool DEGRADED 0 0 0 raidz2 DEGRADED 0 0 0 da1 ONLINE 0 0 0 81.1M resilvered da2 ONLINE 0 0 0 81.1M resilvered da3 DEGRADED 209 449K 0 da4 ONLINE 0 0 0 81.1M resilvered da5 ONLINE 0 0 0 81.1M resilvered da6 ONLINE 0 0 0 81.1M resilvered da7 ONLINE 0 0 0 81.1M resilvered spares da0 AVAIL
da3の調子が悪いみたいです。
こんなときにと用意していた、ホットスペアは勝手に使用してくれない様なので、手動でreplaceします。
# zpool replace da3 da0 # zpool status pool: pool state: DEGRADED 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 2h14m with 0 errors on Thu Jul 1 03:24:59 2010 config: NAME STATE READ WRITE CKSUM pool DEGRADED 0 0 0 raidz2 DEGRADED 0 0 0 da1 ONLINE 0 0 0 81.1M resilvered da2 ONLINE 0 0 0 81.1M resilvered spare DEGRADED 0 0 0 da3 OFFLINE 209 449K 0 da0 ONLINE 0 0 0 152G resilvered da4 ONLINE 0 0 0 81.1M resilvered da5 ONLINE 0 0 0 81.1M resilvered da6 ONLINE 0 0 0 81.1M resilvered da7 ONLINE 0 0 0 81.1M resilvered spares da0 INUSE currently in use
このままだとずっとdegradedという嫌な表示が出たままなのでda3を切り離します。
# zpool detach pool da3
いったんマシンの電源を落とし、新しいHDDを入れて起動すると
# zpool status NAME STATE READ WRITE CKSUM pool UNAVAIL 0 0 0 insufficient replicas raidz2 UNAVAIL 0 0 0 insufficient replicas da1 ONLINE 0 0 0 da2 ONLINE 0 0 0 da0 ONLINE 0 0 0 da4 FAULTED 0 0 0 corrupted data da5 FAULTED 0 0 0 corrupted data da6 FAULTED 0 0 0 corrupted data da7 UNAVAIL 0 0 0 corrupted data
となってしまい、使用できない状態。
どうなっているのかを調べてみると、da3 => da7になり、da4以降が一つずつ前にずれている状態。
先でda3はdetachされているので、da4だったda3が見えていないと。
HDDのScan Orderは変えられないし、どうしたものかと悩んで調べていたら、ただ単純にexportしてimportすれば良いだけということがわかりました。
# zpool export pool # zpool import pool
# zpool status pool: pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 raidz2 ONLINE 0 0 0 da1 ONLINE 0 0 0 da2 ONLINE 0 0 0 da0 ONLINE 0 0 0 da3 ONLINE 0 0 0 da4 ONLINE 0 0 0 da5 ONLINE 0 0 0 da6 ONLINE 0 0 0
めでたく戻ってる!
最後は、spareはspareに戻しました。
# zpool replace pool da0 da7 # zpool status pool: pool state: ONLINE 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. scrub: resilver in progress for 0h47m, 40.25% done, 1h10m to go config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 raidz2 ONLINE 0 0 0 da1 ONLINE 0 0 0 31.1M resilvered da2 ONLINE 0 0 0 31.1M resilvered replacing ONLINE 0 0 0 da0 ONLINE 0 0 0 da7 ONLINE 0 0 0 61.4G resilvered da3 ONLINE 0 0 0 31.0M resilvered da4 ONLINE 0 0 0 31.0M resilvered da5 ONLINE 0 0 0 31.0M resilvered da6 ONLINE 0 0 0 31.0M resilvered
# zpool add pool spare da0 # zpool status pool: pool state: ONLINE scrub: resilver completed after 2h21m with 0 errors on Sat Jul 3 07:07:19 2010 config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 raidz2 ONLINE 0 0 0 da1 ONLINE 0 0 0 79.7M resilvered da2 ONLINE 0 0 0 79.6M resilvered da7 ONLINE 0 0 0 152G resilvered da3 ONLINE 0 0 0 79.6M resilvered da4 ONLINE 0 0 0 79.6M resilvered da5 ONLINE 0 0 0 79.6M resilvered da6 ONLINE 0 0 0 79.6M resilvered spares da0 AVAIL errors: No known data errors
らくちんらくちんです。