最近のマザーボードでは、標準のSATAでRAIDが組めるようになっているものが多く、このページを運用しているサーバもIntel G965チップセットのMatrix RAIDでRAID1を組んで動かしています。OS/データを入れてもお釣りがくる320GのSATA HDDが1万円を切っているご時勢ですし、マザーボードの価格自体もRAID機能の有無では変わらないので、保険としては安いもんです。
さておき、最近メインで開発に使っているPen4マシンの動きがちょっと怪しいので、こちらもRAID構成マシンへのリプレースを画策。
◆ ASUSTek P5Kで痛い目を見る
サーバには、前述の通りコンサバにIntelのマザーボードを使ったので、今回は冒険してASUSTekのP5Kというマザーボードを買ってみたのですが、これが大失敗。
まず、RAIDを使う場合、写真の右上にある通常の内蔵用SATAコネクタは利用不可で、必ず緑線で囲んだ2個のコネクタを使わなければならない。見ての通り、1個は外部コネクタでもう1個もなぜかPCIスロットの間のバックパネル側に配置されています。ホットスワップ(ホットプラグにあらず)には対応していない、eSATAは通常本体と連動しない別電源になる、という不利があるのに、あえて外付けを強要するなんてなにを考えてるのかさっぱり分かりません。内部コネクタの配置からして、2本とも外付けのような使い方を意識しているのは見て取れるのですが、だったらなぜ両方ともeSATAにしないと小一時間(略)。
さらに内蔵側のコネクタもなぜこんな狭いところにわざわざといった変な位置にあり、PCIカードによってはL型、ストレートいずれのコネクタでも干渉して使えない。ビデオ非内蔵のマザーでこれは無いでしょう。
そうした不満を抱えつつ、eSATA-SATA変換ケーブルを買ってきて外部コネクタからケーブルをケース内に引き戻して接続。やっとこさスタートラインについたと思ったら更なる試練が…。
◆ JMicron BIOSにとどめを刺される
起動してBIOSからRAIDを作成、インストールまでは順調でしたが、再起動するといきなりエラー発生でDEGRATE状態に。しかもどっちのコネクタがどっちのHDDなのか分からない。試行錯誤でつきとめ、エラーが発生したディスクを内蔵SATAに繋いで確認すると特に異常なし。もう一度RAID用ポートに繋ぎなおしてBIOSに入ると、"Mirror Conflict"とおっしゃる。どうやらどちらのHDDが正常な方なのか、人間の方で覚えておいて、こっちをマスターとして使ってねと指示する必要があるようです。なんじゃそりゃ。
で、コンフリクトを解消してやっていざリビルドをかけようとすると今度はリビルドエラー。障害が出ているのは内蔵コネクタ側で、ケーブルはSATAポートを使って正常に動くことは確認済み。
一縷の望みをかけて、RAIDをいったん消去して作り直すと正常に戻ったように見える。もう一度OSをインストールしなおして再起動するとまた同じエラー。あとは内蔵側のコネクタぐらいしか考えられないんですが、ここまでですっかり嫌気がさしていた上、異常の発生したディスクの差し替えを認識できずに"Mirror Conflict"は無いっしょということで、このボードは黒歴史決定。ヤフオクで売る気にもなりません。いちおう生き残り策としてSATA(3G)RAIDカードを物色してみたのですが、玄人志向の製品がやたらと安い以外にはIntelのマザーボードを買うのとたいして変わらないか、逆に高くつく状況だったので、結局コンサバな構成に戻ることに。
結局、P5Kよりも安いIntelのBOXDG965WHMKRというマザーを買いなおして組み立て直し。ここでふと思い立ちFreeBSDをインストールしてMatrix RAIDで遊んでおくことに。
◆ FreeBSDからのRAID構築
まず、SATAとして一方のHDDにFreeBSDをインストールして、コマンドラインからRAIDを構築。
# dmesg | grep '^ad'
ad8: 476940MBat ata4-master SATA300
ad10: 476940MBat ata5-master SATA300
という構成で、ad8にOSがインストールしてある状態でこのディスクをRAID化できるかどうか実験。
# atacontrol create raid1 ad8 ad10
ar0 created
dmesgを確認
# dmesg | grep '^ar'
ar0: 476940MBstatus: READY
ar0: disk0 READY (master) using ad8 at ata4-master
ar0: disk1 READY (mirror) using ad10 at ata5-master
statusを確認
# atacontrol status ar0
ar0: ATA RAID1 subdisks: ad8 ad10 status: READY
READYはおかしいとは気づかずにリビルドをかける。
# atacontrol rebuild ar0
atacontrol: ioctl(IOCATARAIDREBUILD): Device not configured
ありゃ??再起動してBIOSで状態を確認しても変わらず。リビルドはかかっていないので、見事に危険なシステムが一丁上がり。というわけで、この方法は駄目っぽい。
もしかすると、detach→attach→addspare→rebuild→/etc/fstab編集でいけるのかもしれないけど、BIOSでRAID構築してからインストールすれば済む話なので、これ以上深追いはしないことに。
結論としては、atacontrolを使ったRAIDの構築は、HDDを増設して新しいRAIDパーティションを作る時に使うものだということで納得することに。
◆ リカバリ実験
今度はBIOSでRAIDを構築しておいて、ar0にOSインストール。HDD障害をわざと発生させてリビルドの練習。
まずad10側のケーブルを抜いてdmesg確認
ar0: WARNING - mirror protection lost. RAID1 array in DEGRADED mode
subdisk10: detached
ad10: detached
ar0の状態確認
# atacontrol status ar0
ar0: ATA RAID1 subdisks: ad8 DOWN status: DEGRADED
ad10のケーブルを挿しなおす。
ad10: 476940MBat ata5-master SATA300
挿しなおしたディスクをスペアとしてRAIDに登録
# atacontrol addspare ar0 ad10
dmesg確認
ad10: inserted into ar0 disk1 as spare
リビルド。状態確認。
# atacontrol rebuild ar0
# atacontrol status ar0
ar0: ATA RAID1 subdisks: ad8 ad10 status: REBUILDING 1% completed
ということで、いちおう稼動させたままリビルドは可能だということが分かったので、とりあえず満足して実験終了。
あ、リプレース作業がまったく進んでない。