« FreeBSDでZFSを導入してみる | トップページ | 簡単おためしZFS@FreeBSD »

2008年6月22日 (日)

ZFS (raidz2)でのデグレード→リビルド確認

さて、RAIDアレイを組んだらとりあえずやっておかないといけないこと、それは障害時にちゃんとリビルドできるかという確認。これをやっておかないと、いざというときに泣きを見ます。

とりあえず、現状は、

# zpool status
  pool: zpool0
state: ONLINE
scrub: none requested
config:


        NAME        STATE     READ WRITE CKSUM
        zpool0      ONLINE       0     0     0
          raidz2    ONLINE       0     0     0
            ad4     ONLINE       0     0     0
            ad6     ONLINE       0     0     0
            ad8     ONLINE       0     0     0
            ad10    ONLINE       0     0     0
            ad12    ONLINE       0     0     0
            ad14    ONLINE       0     0     0


errors: No known data errors

と、6台のHDDでRAID6(raidz2)を組んでいます。

ここで、ad14に障害が起きたと仮定して、えいやっとad14を引っこ抜きます(ちょっと乱暴だけど…)。すると、

# zpool status
  pool: zpool0
state: DEGRADED
status: One or more devices could not be opened.  Sufficient replicas exist for
        the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
   see: http://www.sun.com/msg/ZFS-8000-D3
scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zpool0      DEGRADED     0     0     0
          raidz2    DEGRADED     0     0     0
            ad4     ONLINE       0     0     0
            ad6     ONLINE       0     0     0
            ad8     ONLINE       0     0     0
            ad10    ONLINE       0     0     0
            ad12    ONLINE       0     0     0
            ad14    UNAVAIL      0     0     0  cannot open

errors: No known data errors

となり、見事にad14が壊れたっぽくなりました。

ここで一旦電源を落として(電源を入れたままでもよかったんだろうけど)、ad14を差し直して、再度立ち上げます。で、状態を確認すると、

# zpool status
  pool: zpool0
state: ONLINE
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://www.sun.com/msg/ZFS-8000-4J
scrub: resilver completed with 0 errors on Mon Jun 23 22:31:55 2008
config:

        NAME        STATE     READ WRITE CKSUM
        zpool0      ONLINE       0     0     0
          raidz2    ONLINE       0     0     0
            ad4     ONLINE       0     0     0
            ad6     ONLINE       0     0     0
            ad8     ONLINE       0     0     0
            ad10    ONLINE       0     0     0
            ad12    ONLINE       0     0     0
            ad14    UNAVAIL      0     0     0  corrupted data

errors: No known data errors

ちょっと状態が変わりました。メッセージにもあるとおり、zpool replaceコマンドを実行して、HDDを交換したよということをZFSに教えてあげる必要があるので、

# zpool replace zpool0 ad14

とコマンドを打ってあげます。そうしたら、HDDが頑張って働き始めて、なんかやってるっぽい感じがします。

# zpool status
  pool: zpool0
state: DEGRADED
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, 0.00% done, 510h5m to go
config:

        NAME            STATE     READ WRITE CKSUM
        zpool0          DEGRADED     0     0     0
          raidz2        DEGRADED     0     0     0
            ad4         ONLINE       0     0     0
            ad6         ONLINE       0     0     0
            ad8         ONLINE       0     0     0
            ad10        ONLINE       0     0     0
            ad12        ONLINE       0     0     0
            replacing   DEGRADED     0     0     0
              ad14/old  UNAVAIL      0     0     0  cannot open
              ad14      ONLINE       0     0     0

errors: No known data errors

実際、ad14をリビルドしていることが分かります(ZFSでは、rebuildではなくresilverというらしい)。で、しばらく放置すると元通り。

# zpool status
  pool: zpool0
state: ONLINE
scrub: none requested
config:


        NAME        STATE     READ WRITE CKSUM
        zpool0      ONLINE       0     0     0
          raidz2    ONLINE       0     0     0
            ad4     ONLINE       0     0     0
            ad6     ONLINE       0     0     0
            ad8     ONLINE       0     0     0
            ad10    ONLINE       0     0     0
            ad12    ONLINE       0     0     0
            ad14    ONLINE       0     0     0


errors: No known data errors

以上、無事リビルド完了です。本当にZFSは簡単です。

参考資料:

ちなみに、zpool replace zpool0 ad14と打った直後には、上記の通り510h5m to goなんて出ていますが、しばらく経つと次のようにまともな時間を出してくれます。

# zpool status
  pool: zpool0
state: DEGRADED
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, 39.22% done, 1h17m to go
config:

        NAME            STATE     READ WRITE CKSUM
        zpool0          DEGRADED     0     0     0
          raidz2        DEGRADED     0     0     0
            ad4         ONLINE       0     0     0
            ad6         ONLINE       0     0     0
            ad8         ONLINE       0     0     0
            ad10        ONLINE       0     0     0
            ad12        ONLINE       0     0     0
            replacing   DEGRADED     0     0     0
              ad14/old  UNAVAIL      0     0     0  cannot open
              ad14      ONLINE       0     0     0

errors: No known data errors

|

« FreeBSDでZFSを導入してみる | トップページ | 簡単おためしZFS@FreeBSD »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: ZFS (raidz2)でのデグレード→リビルド確認:

« FreeBSDでZFSを導入してみる | トップページ | 簡単おためしZFS@FreeBSD »