daemonfreaks.com

gmirrorの復旧

posted by jun-g at Wed, 15 Oct 2008 21:00 JST

以前gmirror+gstripeで構築したRAID環境で、HDDのひとつがうまく認識されなくなる、という問題が発生しました。再起動すると認識されたりされなかったりと、かなり不安定な感じだったので、HDDを交換する事にしました。

まずは現状把握。

# gmirror status
      Name    Status  Components
mirror/gm0  COMPLETE  ad2
                      ad3
mirror/gm1  DEGRADED  ad4
mirror/gm2  COMPLETE  ad6
                      ad7

ad5がいない。/devの下を確認してもいないので、HDD自体が認識されていない様子。

一旦マシンを停止してHDDを交換し、マシンを再度起動して、交換したHDDがad5で認識されている事を確認し、次のコマンドを実行。

# gmirror forget gm1

これでgm1のDEGRADED状態がクリアされる。

# gmirror status
      Name    Status  Components
mirror/gm0  COMPLETE  ad2
                      ad3
mirror/gm1  COMPLETE  ad4
mirror/gm2  COMPLETE  ad6
                      ad7

でもって交換したad5をgm1に追加。

# gmirror insert -v gm1 ad5

すると、自動的にミラーリングのリビルドが開始され、しばらく待つとリビルドが完了し、無事gm1が復旧しました。簡単。

以下、参考にしたサイト。

GEOMでRAID構築

posted by jun-g at Wed, 07 May 2008 00:04 JST

手元にHDDが沢山余っていたので、FreeBSD-7Rで構築した自宅のファイルサーバにRAIDを構築してみました。

最初、ストライプしてからミラーするべきか、ミラーしてからストライプするべきか、という素朴な疑問で悩んだのですが、RAID01とRAID10の違い:佐野裕のサーバ管理者日記:ITproという記事を読んで、RAID01とRAID10は別モノで、ストライピンググループをミラーしたRAID01よりも、ミラーしたグループをストライピングしたRAID10のほうが可用性が上である、ということがわかったので、RAID10を構築することにしました。

HDDの構成は、マザーボード上のATAセカンダリに160GBx2、増設ATAカードに120GBx4で、デバイス名はそれぞれad2~7になりました。

まずはgmirrorでRAID1のグループを3つ作ります。

# gmirror label gm0 /dev/ad2 /dev/ad3
# gmirror label gm1 /dev/ad4 /dev/ad5
# gmirror label gm2 /dev/ad6 /dev/ad7

問題なく構築できているか確認。

# gmirror status
      Name    Status  Components
mirror/gm0  COMPLETE  ad2
                      ad3
mirror/gm1  COMPLETE  ad4
                      ad5
mirror/gm2  COMPLETE  ad6
                      ad7

問題なくできているようです。次にこのRAID1アレイを束ねてgstripeでRAID0を構築します。

# gstripe create -s 131072 gs0 mirror/gm0 mirror/gm1 mirror/gm2

問題なく構築できた?

# gstripe status
      Name  Status  Components
stripe/gs0      UP  mirror/gm0
                    mirror/gm1
                    mirror/gm2

問題なし!newfsしてマウントします。

# newfs /dev/stripe/gs0
...snip...
# mount /dev/stripe/gs0 /mnt
# df -h /mnt
Filesystem         Size    Used   Avail Capacity  Mounted on
/dev/stripe/gs0    334G    4.0K    333G     0%    /mnt

できた!160+120+120=400GBなのに334GBになっているけど、細かいことは気にしません。

ということで、無事RAID環境が構築できました。この環境なら突然HDDが1本死んでも大丈夫だし、RAID10なので単純なRAID1よりもパフォーマンスも良いはず(ベンチマークは取っていませんが…)。手元に予備の160/120GBのHDDもあるので安心です。ただ、6本もHDDを使っていながらたった334GBしか容量が確保できてないというのが、電気の無駄遣いに感じてしまいますが…。最近HDD安いですもんね。

以下、今回参考にしたサイト。