家で使用している、ファイルサーバは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
らくちんらくちんです。
参考文献