研究室ニュースというより, 朝倉の個人ブログの様相を呈してきた今日この頃, みなさまいかがお過ごしでしょうか. 新しい計算機を XenServer で動かし, ストレージ部分の RAID10 化に成功しましたので, 以下方法を書きます.

同じHDDが4台搭載されているサーバを使い,ストレージ部分のみの RAID10 化を試みます. XenServer のシステム部分は何もしませんでした. 残念ながら,現状のXenServer(5.5.0)は,「ハードウェアRAID は使えない」ようですので, その辺りの設定は全部初期化して,単に同じHDDが4台ついているだけの状態にします. そして,以下の作業でソフトウェアRAID化します.

まず,4台の HDD のパーティションを同じように切ります. /dev/sda のパーティション情報を参照し,/dev/{sdb,sdc,sdd} に対して作業します. このパーティション作業で得られる /dev/{sda3,sdb3,sdc3,sdd3} を RAID10化するのですが, 既に,/dev/sda3 はストレージ部としてシステムに使用されています. そこで,

  • 1台ディスクが足りない状態で RAID10化されたデバイスを作り,
  • そのデバイスをボリュームに登録し,
  • /dev/sda3 の内容をRAID10 なデバイスにコピーし,
  • /dev/sda3 をボリュームから削除し,
  • /dev/sda3 を RAID10 なデバイスに追加する,

というような手順で作業をしました.

RAIDのためのマルチディスクなデバイスを作成します. なんとなく,/dev/md2 としました.

mknod /dev/md2 b 9 2

そして,このデバイスに RAID10でディスクを追加します. 現時点では,/dev/sda3 は追加できないので,missing な状態で追加します.

mdadm --create /dev/md2 -v --raid-devices=4 --level=raid10 missing /dev/sdb3 /dev/sdc3 /dev/sdd3

デバイスの準備には時間がかかります. デバイスが準備できたら,

pvcreate /dev/md2

で LVM として使える状態にして(このあたりの説明は不正確かも),

vgextend VG_XenStorage-hogehoge /dev/md2

という形で,デバイスを追加します(デバイスを追加する先の調べ方は,参考サイトをご覧下さい). そして,

pvmove /dev/sda3 /dev/md2

でストレージの内容をコピーし,

vgreduce VG_XenStorage-hogehoge /dev/sda3
pvremove /dev/sda3

で,/dev/sda3 をボリュームから削除します. その後,再起動し,

mdadm -a /dev/md2 /dev/sda3

として,/dev/sda3 を /dev/md2 に追加します. これで,missing 状態が解消されますので,ディスク内容が同期され, 晴れて /dev/md2 が RAID10 として動きます(のはずです). 同期には時間がかかります. 同期が終わったら,

mdadm –detail –scan >> /etc/mdadm.conf

として,終了です. 今のところ問題なく動いているようです. かなりシステムの内側をいじりますので,細心の注意を払って作業して下さい.

もしかしたら私のように困っている人がいるかも,と思い公開しました. ご参考になれば幸いです. ただ,正確であるという保証はありませんのでご注意下さい. 間違っていたらごめんなさい.

参考にしたページ

作業の際に,参考にしたページです. これらのページがなければ,ハードウェアRAIDが使えない時点で,行き詰まっていました. 情報を公開していただきありがとうございました.