お手軽software raid(ミラー) [FreeBSD gmirror]
ディスクは消耗品です。と分かってはいても、なかなか追加投資することができず。。自宅サーバー(このサイトを運営しているサーバー)もRAID化せずにずるずると。
そして今日、古いディスクを調達してようやくミラー化したので、記念にそれを記します^^
低価格なハードウェアRAIDがいいことは分かっていても、4万円くらいしますからねぇ。ソフトウェアRAIDはコストパフォーマンス抜群です。同じことができるんだし。^^
どこまでできるのか?
かつてはよくatacontrol を使ってソフトウェアRAIDを作ってました(FreeBSD専用ね)。ミラーです。
ディスクがぶっとんでも電源を落とさずにディスク交換やリビルドができ、非常に助かっていました。
今回もatacontrolでいいかなと思ったのですが、最近の流行はGEOMなんだそうです。atacontrolでミラー作るのよりもさらに簡単でした。
atacontrol はIDEハードディスクだけでしたが、GEOMはVFSとファイルシステムの間でごにょごにょしてくれるのだそうで、IDEとscsiを混在させることもできるようです。
なかなかいいフレームワークですね。
atacontrol も GEOM mirror(gmirror) も、こんな特徴があります。
- 起動ドライブもミラー化できます。
- 特定ハードウェアに依存しないので、どんなマシンでも使えます。移動自由。
特殊なドライバがないと使えないものより安心。
- 障害時にも電源を落とすことなく、ディスク交換,ミラーのリビルドが行えます。
- インストール済みのシステムを簡単にミラー化できます。
既存の起動ドライブをGEOMでミラー化する
gmirrorはディスクのケツの部分に何か管理用のデータを書き込むそうな。
そしてこれだけで、既存のディスクがgmirrorディスクに早変わりです。
まずは2台目のディスクを物理的に接続します。IDEの場合は同一バスにつないではいけません。こうやってしまうと障害時に無停止で交換することができなくなります。
ちなみにこうなりました。
ad0 がもともとの起動ディスク。ad2 が追加したディスクです。今回はたまたま起動ディスクと同じサイズのディスクを増設しましたが、より大きいものであればなんでも大丈夫です。IDEじゃなくてもいし。
inu# atacontrol list
ATA channel 0:
Master: ad0 ATA/ATAPI revision 7
Slave: no device present
ATA channel 1:
Master: ad2 ATA/ATAPI revision 7
Slave: no device present
それから、この処理は既にマウントされたドライブに対しては行えないため、インストールCDなどで起動してやる必要があります。
僕はたまたま一番先に目に止まったので、FreeNASのインストールCDでやりました。
CDから起動させたらshellが使える状態にして、
> gmirror loadっとやると、ad0がgmirror(/dev/mirror/gm0)なドライブとして使えるよう、ケツの部分に何かが書き込まれます。データへのアクセス方法はいくらか選択肢があって、今回はラウンドロビンを指定してあります。何がいいかは用途次第ですね。
> gmirror label -b round-robin gm0 ad0
次に、既存システムがad0をgmirrorなドライブだと認識するように設定します。
- 起動時にgmirrorをロードするように設定。
/boot/loader.conf に geom_mirror_load="YES" を追加。
- fstabを編集して、ad0でマウントしていたのをgm0でマウントするようにする。
/dev/ad0s1a ⇒ /dev/mirror/gm0s1a など。
CDから起動すると使い慣れたエディタが使えないので、予めやっておくのがいいかもしれない...。
ここまでできたら通常通り再起動 :) 手際よくやれば15分くらいの停止で済みます。
2台目のディスクを追加
無事に起動できると、ディスク1台構成のgmirrorで上がってきます。
1台じゃgmirrorしてる意味がないので、2台目を追加します。最初にやってしまってもいいんだけど、それだけ停止時間が長くなるので、後からやる方がいいですね。
> gmirror insert gm0 ad2
あとはリビルドが終わるのを待つだけです。放置でOKです。普通にサービスを提供しながら、裏でビルドしてくれます。
> gmirror listなんかで確認すべし。
> gmirror status
inu# gmirror list Geom name: gm0 State: COMPLETE Components: 2 Balance: round-robin Slice: 4096 Flags: NONE GenID: 0 SyncID: 1 ID: 476227944 Providers: 1. Name: mirror/gm0 Mediasize: 81964301824 (76G) Sectorsize: 512 Mode: r2w2e2 Consumers: 1. Name: ad0 Mediasize: 81964302336 (76G) Sectorsize: 512 Mode: r1w1e1 State: ACTIVE Priority: 0 Flags: NONE GenID: 0 SyncID: 1 ID: 418770585 2. Name: ad2 Mediasize: 81964302336 (76G) Sectorsize: 512 Mode: r1w1e1 State: ACTIVE Priority: 0 Flags: NONE GenID: 0 SyncID: 1 ID: 2587817517
障害を検知せよ
ありがちなんだけど、ミラー化したってディスクに障害が起きていることに気が付かなければ意味がありません。ハードウェアRAIDと違ってLEDやブザーで警告してくれるわけではないので、何か仕掛けを用意します。
1日1回、gmirror status の状態を拾って、異常だったらメールで通知するとか、そんなものがいいでしょうか。
障害が起きたときの対処についてはまた今度^^
2008-4-19追記
実際にディスクが壊れました。リビルドの記録はこちらをどうぞ :)
トピック
- FreeNASでファイルサーバーを作る
- 自宅サーバーを安定稼動させるテクニック
- お手軽software raid(ミラー) [FreeBSD gmirror]
- gmirrorのリビルド[FreeBSD]
- muninでWindows機を監視しよう
- 低価格ハードウェアRAID ARAID2000
- おうちサーバーの監視 その2(雷で切れまくるADSL)
- ホームサーバーに最適なPCとは
- 雷さまとUPS(落雷で停電する理由)
- 怪現象が起きる場合は湿度を疑え
- お手軽 NAT TX-ERROR 対策
- 情報漏洩を防ぐには
- 発想を変えて... 『古河の中学校で個人情報流出』
- PacketiX Desktop VPN インストールの種類
- PacketiX Desktop VPN は、Home Edition 以外のOS必須
- PacketiX Desktop の仕組み(概要のみ)
- Desktop VPN のインストール
- もう1つのDesktop VPN:Teratermのポートフォワード(ssh) + リモートデスクトップ
- スタイルシート
- その他
トラックバック
このエントリーのトラックバックURL: