2012年2月7日火曜日

ソフトウェアRAID(MD)とgrubの備忘録

要するに、ソフトウェアRAID(RAID1構成)で、ディスクが1本死んだ時の対応のハナシ


珍しく、mdとか使ったので備忘録。
環境はCentOS 6.2。SATA接続のsdaとsdbというDISKが刺さっています。

ま、ミラクル・リナックスさんの「ブートディスクをソフトウェア RAID 1 (ミラーリング) に構成する場合、2本目のディスクに GRUB を手動でインストールしなければなりません。
インストールしない状態でもしも1本目のディスクが壊れた場合、2本目のディスクには GRUB が入っていないため、システムが起動しません。
」って話です。リンク先見てしまえば、下記はおまけみたいなものです。。。

まず、Kickstartで下記のようなスライスを切りました。

clearpart --all --initlabel

part raid.1 --size 100 --ondrive=sda
part raid.2 --size 100 --ondrive=sdb
part raid.3 --size 2048 --ondrive=sda
part raid.4 --size 2048 --ondrive=sdb
part raid.5 --size 30720 --ondrive=sda
part raid.6 --size 30720 --ondrive=sdb

raid /boot --fstype ext4 --level 1 --device md0 raid.1 raid.2
raid swap --fstype swap --level 1 --device md1 raid.3 raid.4
raid / --fstype ext4 --level 1 --device md2 raid.5 raid.6

これだと、sdbにgrubがなくて、sdaが死んだ時に、再起動してもあがってこないというちょっとだけ困ったことになるので、Kickstartに以下の記述を追加しました。

cat </grub/raid1.grub
root (hd1,0)
setup (hd1)
quit
EOF

grub --batch < raid1.grub


grubコマンドでsdbにもインストールしてあげればよいわけですな。めでたしめでたし。
試しに、sdaを抜いてテストしたところちゃんとsdbにて、bootしてきました。

あと、DISKを抜き差ししたときに、


mdadm --manage /dev/md2 --add /dev/sdb1


とかしようとしたら、「mdadm --zero-superblock /dev/ほげほげ しなされ」みたいに怒られたので


mdadm --zero-superblock /dev/sdb1

とかちゃんとしてあげないといかんらしいです。

ちなみに、新品のDISKの場合は、ちゃんとスライス切ってあげないといけないのは言うまでもありませんねー。