2009年5月4日月曜日

Linuxサーバーのシステム部分だけRAID1する その2

前の続きです。http://amzn1.blogspot.com/2009/05/linuxraid1.html

sdbから起動できるはずが、途中で止ってしまいました。エラーを見てみると、grubのmenu.listに書いてあるHDDのUUIDが違うと言っているようでした。たぶん、起動ディスクとして認識されているのがsdaだけで、sdbは起動ディスクとして認識されていないようでした。

と言うわけで解決法ですが、/dev/md*をマウントした/mntのgrubのmenu.listを書き換えるのが正しい方法のようです。まず、シングルモードでログインして、

# cd /mnt/boot/grub
# cp -a menu.list
# vi menu.lst

title Ubuntu 8.04.2, kernel 2.6.24-23-server
root (hd0,0)
kernel /vmlinuz-2.6.24-23-server root=/dev/md1 ro quiet splash
initrd /initrd.img-2.6.24-23-server
quiet

title Ubuntu 8.04.2, kernel 2.6.24-23-server (recovery mode)
root (hd0,0)
kernel /vmlinuz-2.6.24-23-server root=/dev/md1 ro single
initrd /initrd.img-2.6.24-23-server

赤字の所を/boot/grub/menu.lstと同様にして書き換え。途中でkernelのアップデートがあったので、2.6.19→2.6.23になっています。
この様に書き換えてから再起動すると、sdbから起動できます。シングルモードではなく、普通にログインできます。


sdbから立ち上がっているか確認
$ mount | grep md
/dev/md1 on / type ext3 (rw,relatime,errors=remount-ro)
/dev/md0 on /boot type ext3 (rw,relatime)
/dev/md2 on /home type ext3 (rw,relatime)
sdaをRAIDに参加させるために、パーティションタイプを変更

sudo fdisk /dev/sda

パーティションタイプのコマンドはfd。最終的には下のようになる。
Device Boot Start End Blocks Id System
/dev/sda1 1 24 192748+ fd Linux raid autodetect
/dev/sda2 25 146 979965 82 Linux swap / Solaris
/dev/sda3 * 147 2578 19535040 fd Linux raid autodetect
/dev/sda4 2579 3738 9317700 5 Extended
/dev/sda5 2579 3738 9317668+ fd Linux raid autodetect

sdaをRAIDに参加させる。

sudo mdadm /dev/md0 -a /dev/sda1
sudo mdadm /dev/md1 -a /dev/sd3
sudo mdadm /dev/md1 -a /dev/sda3
sudo mdadm /dev/md2 -a /dev/sda5
RAIDに参加させられると、自動的にファイルがコピーされていく。
cat /proc/mdstatで状況を確認できる。

sdbにgrubをインストール。
# grub-install --no-floppy /dev/sdb
# grub
grub> root (hd0,0)
grub> setup(hd0)
grub> root(hd1,0)
grub> setup(hd1)
grub> quit


/boot/grub/menu.lstを書き換え。
vi grub/menu.lst
# kopt=root=/dev/md1 ro
mdadm.confに今の状況を書き加えておく。以前のARRAY *を削除した後、
mdadm --detail-scan >> /etc/mdadm/mdadm.conf
mdadm --detail --scan >> /etc/mdadm/mdadm.conf

こうしてシステム部分だけRAIDで動くサーバーが完成しました。


今、メインRAIDがsdbで、あまり嬉しくないので、メインをsdaに変更します。
まず、sdbを外して(物理的な意味で)sdaだけで起動します。その後、一度電源を落とし、sdbを繋いで起動します。そうすると、mdデバイスからsdbが外されてしまうので、

# mdadm /dev/md1 -a /dev/sdb1


でRAIDに参加させなおすと
# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sda5[0] sdb5[1]
9245312 blocks [2/2] [UU]

md1 : active raid1 sda3[0] sdb2[1]
19534976 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
192640 blocks [2/2] [UU]

unused devices:
となって、メインがsdaになります。

0 件のコメント: