3TBの大容量HDDでXenserver6をraid1化する。(v6.0.2)
・参考URL
http://blog.codeaddict.org/?p=5#
http://pastebin.com/psaWg7QK#
http://orangesooda.com/centos_redhat/2009/05/xenserverraid1.html
・前提
XenserverはGPT形式でインストールされる。
fdiskはMBR形式しか扱えないため、GPT形式に対応しているgdiskを利用する。(MBR形式は2TB以上は認識しない)
GPTとは?>> http://plaza.rakuten.co.jp/bluearth/diary/20100115/
/dev/sdaは最低限しか扱わないようにして、/dev/sdbだけでとりあえず起動出来る形にしておき
最後にArrayに追加する方法にしている。
試行錯誤してやって最後にまとめたので間違いがあるかも。上の参考URLに書いてある事を混ぜながらやったので
出来ない場合はそちらを参考にしてください。責任は取れませんので^^;
・使用HDD
/dev/sda … 3TB HDDその1(こちらにXenserverがインストールされている)
/dev/sdb … 3TB HDDその2(空っぽ)
はじめに/dev/sdaと/dev/sdbのパーティションを同じ構成にする
# gdisk -l /dev/sda Number Start (sector) End (sector) Size Code Name 1 2048 8388641 4.0 GiB 0700 2 8390656 16777249 4.0 GiB 0700 3 16779264 5860533134 2.7 TiB 8E00 # sgdisk --zap-all /dev/sdb # sgdisk --mbrtogpt --clear /dev/sdb # sgdisk --new=1:34:8388641 /dev/sdb # sgdisk --typecode=1:fd00 /dev/sdb # sgdisk --attributes=1:set:2 /dev/sdb # sgdisk --new=2:8388642:16777249 /dev/sdb # sgdisk --typecode=2:fd00 /dev/sdb # sgdisk --new=3:16777250:5860533134 /dev/sdb # sgdisk --typecode=3:fd00 /dev/sdb
パーティションを作ったのでとりあえず一度reboot。
再起動後、RAID1を/dev/sdbだけで組み上げる。
# mknod /dev/md0 b 9 0 # mknod /dev/md1 b 9 1 # mknod /dev/md2 b 9 2 # mdadm --create /dev/md0 --level=1 --raid-devices=2 missing /dev/sdb1 # mdadm --create /dev/md1 --level=1 --raid-devices=2 missing /dev/sdb2 # mdadm --create /dev/md2 --level=1 --raid-devices=2 missing /dev/sdb3 # mdadm --grow /dev/md0 -b internal # mdadm --grow /dev/md1 -b internal # mdadm --grow /dev/md2 -b internal
ボリュームグループ(VG)に/dev/md2 を追加する
# pvcreate /dev/md2 # vgextend VG_/dev/md2 # pvmove /dev/sda3 /dev/md2 sda3からVGを削除する # vgreduce VG_ /dev/sda3 # pvremove /dev/sda3
/dev/sda1の中身を/dev/md0にコピーする
# mkfs.ext3 /dev/md0 # mount /dev/md0 /mnt # cd / # cp -axR . /mnt
ブートイメージを作成する
# mkdir /mnt/root/initrd # cd /mnt/root/initrd # zcat /mnt/boot/initrd-`uname -r`.img | cpio -i # ls /lib/modules/`uname -r`/kernel/drivers/md/raid* # cp /lib/modules/`uname -r`/kernel/drivers/md/raid1.ko lib/ # vi init "echo Waiting for driver initialization." の前の行に次を追加。 echo "Loading raid1.ko module" insmod /lib/raid1.ko "resume /var/swap/swap.001"の後の行に次を追加。 echo Running raidautorun raidautorun /dev/md0 raidautorun /dev/md1 raidautorun /dev/md2 その次の行の "・・・sda1" を "・・・md0" に直す。 # find . -print | cpio -o -Hnewc | gzip -c > /mnt/boot/initrd-`uname -r`.img# cp -f /mnt/boot/extlinux.conf /boot/extlinux.conf# vi /mnt/etc/fstab 一番上の行のLABELを以下に変更 /dev/md0 / ext3 defaults 1 1 # vi /mnt/boot/extlinux.conf 5つほど「root=LABEL=**********」という箇所があるので全て「root=/dev/md0」に変更する /dev/sdbのマスターブートレコードにextlinuxを書き込む # cat /mnt/usr/share/syslinux/gptmbr.bin > /dev/sdb # cd /mnt # extlinux --raid -i boot/
再起動するとmd2が外れたり不安定なのでこの段階でmdadmの設定ファイルを書きだしておくとよい
# mdadm --detail --scan > /mnt/etc/mdadm.conf /dev/md0をアンマウント # cd # umount /dev/md0 # sync 最後に再起動 # reboot
BIOSから2つ目のHDD(/dev/sdb)から起動してみて、無事起動すれば成功。ロゴで止まったりすれば失敗なので
ブート関連を再度チェック。私のM/Bの場合、起動時にF10を押すとBOOT選択画面に遷移。
無事起動した後は/dev/sdaをRaid1に参加させる。
# mkdir root/initrd # cd /root/initrd # find . -print | cpio -o -Hnewc | gzip -c > /mnt/boot/initrd-`uname -r`.img# sgdisk --typecode=1:fd00 /dev/sda # sgdisk --typecode=2:fd00 /dev/sda # sgdisk --typecode=3:fd00 /dev/sda # mdadm -a /dev/md0 /dev/sda1 # mdadm -a /dev/md1 /dev/sda2 # mdadm -a /dev/md2 /dev/sda3 進捗確認(CTRL+Cで終了) # watch -n 1 cat /proc/mdstat
[2012/07/12]sionoさんコメント参考に修正