NTT-X store にて2台で2万円で買ってしまったHP Proliant ML115G5 ( HP-ProLiant-ML115 G5まとめwiki - トップページ ) の FakeRAID (BIOS RAID) を使って RAID5 のストレージを Gentoo 上に構築した記録.
用意するもの
- HP Prolian ML115 G5
- Gentoo インストール済み
- HGST Deskstar 7K2000
- 出来ることなら対応ドライバ (参照.まとめwiki - 全般)
取り付け
まずは,普通にディスクを取り付けて起動して, BIOS から 取り付けたディスクで RAID5 を構成するように設定する.HP ProLiant ML115 Server series - Manuals (guides, supplements, addendums, etc) - HP Business Support Center の nForce Software for Linux MediaShield User’s Guide をもとにBIOS と RAID BIOS を設定をする.
この状態で起動すると,普通に /dev/sdb,/dev/sdc,/dev/sdd
として見えるので,kernel の作り直しや必要なドライバ類のセットアップを行う.
kernel とドライバの用意
FakeRAID に必要な sys-fs/dmraid
,kernel 構築用に genkernel
,パーティション設定用に sys-apps/parted
と sys-fs/multipath-tools
( kpartx 用 )をそれぞれ emerge しておく.
RAID5 対応 kernel を構築するために,http://people.redhat.com/heinzm/sw/dm/dm-raid45/ から パッチを持ってきて当てる.
試した時点(2010/01/20 )では2.6.30 用のパッチしかなく Gentoo 10.1 の kernel は 2.6.31 (ACCEPT_KEYWORD="~amd64"
していると 2.6.32) なので問題ないかどうかは不明.実際 drivers/md/Makefile
へのパッチがちゃんと当たらなかったり,2.6.32 では block デバイスIO に関して変更があるため, dm-raid45.c の bio_barrier(bio)
を bio_rw_flagged(bio, BIO_RW_BARRIER)
と書き換えないとコンパイルすら通らなかったりするので適宜修正する.
genkernel が dmraid 用に組み込むモジュールの一覧 (/usr/share/genkernel/arch/x86_64/modules_load
) を以下のように変更して,dm-raid45
を起動時に読み込むようにする.
MODULES_DMRAID="dm-mod dm-mirror dm-crypt dm-raid45"
# genkernel --dmraid --multipath --menuconfig all
として,kernel を構築する.--dmraid --multipath
は dmraid
と kpartx
を組み込むようにするために付ける.--menuconfig
は先に当てた dmraid-45
のモジュールを作るために menuconfig を呼び出すために付ける.
menuconfig の画面になったら Device Drivers ---> Multiple devices driver support (RAID and LVM)
と進んで,一番下の RAID 4/5 target (EXPERIMENTAL)
にチェックを入れる.その他は RAID/NVRAID with dmraid 参照.
また,今回の構成では 2TB を超えるので GPT サポートを有効にする.
File systems
---> Partition Types
---> Advanced partition selection
---> EFI GUID Partition support
出来上がった kernel に合わせて適宜 grub.conf
を書き換えて,起動する.
パーティションとフォーマット
ここまでの作業が成功していると,/dev/mapper/nvidia_djbdafbe
というデバイスが見えているようになるので,パーティションを切り FS を設定する.nvidia_
の後の文字列は個体ごとに異なるので,以下では /dev/mapper/nvidia_fakeraid
としておく.
今回のように 2TiB を超える場合,fdisk は使えないため #parted /dev/mapper/nvidia_fakeraid
で好きなようにパーティションを切る.
注意点としては,パーティションテーブルに gpt を指定(mklabel gpt
)し,parted が ext2 以外 でのフォーマットには対応してないので mkpartfs
ではなく mkpart
で切るようにする必要がある.そのほかの操作は適宜 help を呼び出すか,GNU parted マニュアル を参照.
パーティションを切ったら,#kpartx -a /dev/mapper/nvidia_fakeraid
とすると,/dev/mapper/nvidia_fakeraid1
などのように見えるようになるので普通のHDDと同じようにフォーマットする.(ex. #mkfs.ext4 /dev/mapper/nvidia_fakeraid1
)
mount と initrd の修正
フォーマットした領域がひとまず mount できるか確認した後,/etc/fstab
に追記するなど,普通の HDD の追加と同じ作業をする.
だが,このまま再起動すると dmraid が gpt をサポートして無いため( dmraid cannot handle disks with GPT),起動時に正しく mount するには先ほどのように kpartx -a
を呼び出す必要がある.
/usr/share/genkernel/default/linuxrc
の startVolumes
後に次のように追加する.
kpartx -a /dev/mapper/
/sbin/dmraid -r -craidname
修正後 #genkernel –dmraid –multipath initramfs
して,修正した initrd を再構築して再起動する.