Xenserver5.6SP2をSoftRaid1にする。
# /sbin/fdisk /dev/sda (略) Command (m for help): p Disk /dev/sda: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 523 4194304 83 Linux Partition 1 does not end on cylinder boundary. <==ここ /dev/sda2 523 1045 4194304 83 Linux /dev/sda3 1045 60801 479995393 8e Linux LVM
sda,sdbにXenserverをインストールが完了し、同じパーティション構造が作成されいるとする。今はsdaから起動されているとする。
/dev/sdb1-3をフォーマットし、ボリュームグループ(VG)削除。ただし、raid構成にしてもおかしかったら /dev/md0-2までフォーマット。
# /sbin/mkfs.ext3 /dev/sdb3
fdisk で /dev/sdbのIDをすべてのパーティションでfdに変更する
Xenserver5.6SP2はパーティションが3つあるのでradiのmount先デバイスnode(/dev/md0,md1,md2)が必要なので確認
# ls /dev/md* /dev/md0
ない場合はnodeを作成
# mknod /dev/md0 b 9 0 # mknod /dev/md1 b 9 1 # mknod /dev/md2 b 9 2
このとき、/dev/sda2はXenServerのアップグレード時に使用するため、Radi化は不要かも。今回はRadi作成しておく。
# /sbin/mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 missing mdadm: /dev/sdb1 appears to contain an ext2fs file system size=4194304K mtime=Tue Dec 27 09:41:12 2011 Continue creating array? y mdadm: array /dev/md0 started. # /sbin/mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb2 missing mdadm: array /dev/md1 started. # /sbin/mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sdb3 missing mdadm: array /dev/md2 started.
Raid作成の確認
# cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sdb3[0] 479995328 blocks [2/1] [U_] md1 : active raid1 sdb2[0] 4194240 blocks [2/1] [U_] md0 : active raid1 sdb1[0] 4194240 blocks [2/1] [U_]
LVMによるディスクパーティション(豆知識)
LVM ディスクの追加
sda1はmd0にコピーし、sda3はmd2に移動する。
sda3を追加md2に移動。
# /usr/sbin/pvcreate /dev/md2 Physical volume "/dev/md2" successfully created
# /usr/sbin/vgscan | grep VG Found volume group "VG_XenStorage-3b29f3b7-4733-534a-7b5f-f268cf6da84d" using metadata type lvm2
# /usr/sbin/vgextend VG_XenStorage-3b29f3b7-4733-534a-7b5f-f268cf6da84d /dev/md1 No physical volume label read from /dev/md1 Physical volume "/dev/md1" successfully created Volume group "VG_XenStorage-3b29f3b7-4733-534a-7b5f-f268cf6da84d" successfully extended
(以下不要かも)
# /sbin/mkfs.ext3 /dev/md2 # /usr/sbin/pvmove /dev/sda3 /dev/md2 No physical volume label read from /dev/md2 Physical volume "/dev/md2" successfully created Volume group "VG_XenStorage-3b29f3b7-4733-534a-7b5f-f268cf6da84d" successfully extended
(ここまで不要)
# /sbin/mkfs.ext3 /dev/md2
vgextend:物理ボリュームを既存のボリュームグループに追加
# /usr/sbin/vgextend VG_XenStorage-3b29f3b7-4733-534a-7b5f-f268cf6da84d /dev/md2 Volume group "VG_XenStorage-3b29f3b7-4733-534a-7b5f-f268cf6da84d" successfully extended
pvmove:空いている物理ボリュームに利用中のエクステントを移動
# /usr/sbin/pvmove /dev/sda3 /dev/md2 /dev/sda3: Moved: 20.0% /dev/sda3: Moved: 100.0% # /usr/sbin/pvremove /dev/sda3
md0にsda1をコピー
ダミーでXenServerがインストールされているのでFormtして空にしておく
# /sbin/mkfs.ext3 /dev/md0 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 524288 inodes, 1048560 blocks 52428 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1073741824 32 block groups 32768 blocks per group, 32768 fragments per group 16384 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Writing inode tables: 0/32 1/32 2/32 3/32 4/32 5/32 6/32 7/32 8/32 9/3210/\ 3211/3212/3213/3214/3215/3216/3217/3218/3219/3220/3221/3222/3223/3224/3225/\ 3226/3227/3228/3229/3230/3231/32done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 26 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
# mount /dev/md0 /mnt # cd / # cp -axv . /mnt `./opt' -> `/mnt/./opt' `./opt/likewise' -> `/mnt/./opt/likewise' `./opt/likewise/bin' -> `/mnt/./opt/likewise/bin' `./opt/likewise/bin/lw-edit-reg' -> `/mnt/./opt/likewise/bin/lw-edit-reg' (略)
/mnt/rootに作業用の領域を作成し、RAMDiskイメージを解凍。
Raid時のmountポイントに変更
/mnt/etc/fstab
/dev/md0 / ext3 defaults 1 1
に変更
RAMイメージファイル名の確認
# ls /boot/initrd-* /boot/initrd-2.6.32.12-0.7.1.xs5.6.100.323.170596kdump.img /boot/initrd-2.6.32.12-0.7.1.xs5.6.100.323.170596kdump.img.cmd /boot/initrd-2.6.32.12-0.7.1.xs5.6.100.323.170596xen.img /boot/initrd-2.6.32.12-0.7.1.xs5.6.100.323.170596xen.img.cmd /boot/initrd-2.6-xen.img
Raid時の 「/」ディレクトリで実行しても/mnt/root/initrd-raidに「initrd-2.6.32.12-0.7.1.xs5.6.100.323.170596xen-raid.img」に作成される。
# mkdir /mnt/root/initrd-raid # /sbin/mkinitrd --fstab=/mnt/etc/fstab /mnt/root/initrd-raid\ /initrd-2.6.32.12-0.7.1.xs5.6.100.323.170596xen-raid.img 2.6.32.12-0.7.1.xs5.6.100.323.170596xen /sbin/scsi_id: option requires an argument -- s /sbin/scsi_id: option requires an argument -- s
# cd /mnt/root/initrd-raid # ls initrd-2.6.32.12-0.7.1.xs5.6.100.323.170596xen-raid.img
RAMイメージを解凍
# zcat initrd-2.6.32.12-0.7.1.xs5.6.100.323.170596xen-raid.img | cpio -i 12125 blocks # ls bin etc initrd-2.6.32.12-0.7.1.xs5.6.100.323.170596xen-raid.img proc sys dev init lib
/root/initrdで作業を行い、最後にRAMイメージを作成し、/mnt/bootに配置する。
# mkdir /root/initrd # cd /root/initrd # zcat /boot/initrd-2.6.32.12-0.7.1.xs5.6.100.323.170596xen.img | cpio -i 13626 blocks # ls bin dev etc init lib proc sbin sys sysroot
# cp /lib/modules/2.6.32.12-0.7.1.xs5.6.100.323.170596xen/kernel/drivers/md/raid1.ko lib/
/root/initrd/initに以下を追加
echo "Loading raid1.ko module" <==追加 insmod /lib/raid1.ko <=追加 echo Waiting for driver initialization. の前に上の2行を追加 stabilized --hash --interval 1000 /proc/scsi/scsi mkblkdevs
resume /var/swap/swap.001 の後ろに下の3行追加 raidautorun /dev/md0 <==追加 raidautorun /dev/md1 <==追加 raidautorun /dev/md2 <==追加 echo Creating root device. mkrootdev -t ext3 -o defaults,ro /dev/md0 <==sda1をmd0に変更 echo Mounting root filesystem. mount /sysroot
RAMDiskイメージの作成し/mnt/bootに作成
# cd /root/initrd # find . -print | cpio -o -Hnewc | gzip -c > /mnt/boot/initrd-2.6.32.12-0.7.1.xs5.6.100.323.170596xen-raid.img 13691 blocks
# cd /mnt/boot # rm initrd-2.6-xen.img rm: remove symbolic link `initrd-2.6-xen.img'? y # ln -s initrd-2.6.32.12-0.7.1.xs5.6.100.323.170596xen-raid.img initrd-2.6-xen.img
/mnt/boot/extlinux.confの中の「root=LABEL=root-vfrxzzdh」を「root=/dev/md0」に変更する
/dev/sdbのMBRを変更
# cat /usr/lib/syslinux/mbr.bin > /dev/sdb # cd /mnt # /sbin/extlinux -i boot/ boot/ is device /dev/md0 # cd
sdaにもコピーして同じ内容にしておくsda,sdb両方で起動できるようにかな?不要なような気が・・・どうせ同期するから同じになる?
# cp /mnt/boot/extlinux.conf /boot/ # cp /mnt/boot/initrd-2.6.32.12-0.7.1.xs5.6.100.323.170596xen-raid.img /boot/
grubで起動デバイスをsdbに変更
# cd /root # sync # /sbin/grub Probing devices to guess BIOS drives. This may take a long time. grub> device (hd0) /dev/sdb grub> root (hd0,0) Filesystem type is ext2fs, partition type 0xfd grub> setup (hd0) Checking if "/boot/grub/stage1" exists... no Checking if "/grub/stage1" exists... noError 15: File not found grub> quit
gurbではエラー? /sbin/grubは不要かも?
再起動
# umount /dev/md0 # sync # reboot
パラレルIDEでは停止してhdaとhdbをジャンパーで入替て起動。よって起動後は/dev/md0には/dev/hda1がメンバーになっている。
/dev/fdisk /dev/sdaでIDをfdに変更する。
reboot後RAIDに/dev/sdaを追加。
# /sbin/mdadm -a /dev/md0 /dev/sda1 # /sbin/mdadm -a /dev/md1 /dev/sda2 # /sbin/mdadm -a /dev/md2 /dev/sda3
同期後
# /sbin/mdadm --detail --scan >> /etc/mdadm.conf # less /etc/mdadm.conf ARRAY /dev/md0 level=raid1 num-devices=2 metadata=0.90 UUID=744a959b:05685966:53d59aac:4eaafd88 ARRAY /dev/md2 level=raid1 num-devices=2 metadata=0.90 UUID=cacf9c0e:ff71c62d:951e152c:efaca603 ARRAY /dev/md1 level=raid1 num-devices=2 metadata=0.90 UUID=9d809b00:e2722de9:937dfcd7:7609a4e5
状態表示
# /sbin/mdadm --detail /dev/md0 /dev/md0: Version : 0.90 Creation Time : Thu Dec 22 14:56:41 2011 Raid Level : raid1 Array Size : 4194240 (4.00 GiB 4.29 GB) Used Dev Size : 4194240 (4.00 GiB 4.29 GB) Raid Devices : 2 Total Devices : 2 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Mon Dec 26 16:51:54 2011 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 UUID : 744a959b:05685966:53d59aac:4eaafd88 Events : 0.41920 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 1 1 active sync /dev/sda1
2台目のHDDに以下のように物理ボリューム(PV)Unkownがボリュームグループ(VG)にあるときはうまく動作しないので取り外す。
VGからPVを外す方法
vgreduceし、再ScanすればOKみたい
# /usr/sbin/pvdisplay Couldn't find device with uuid CaggMs-r0aV-emeU-t918-pmt9-QX8R-8VQorQ. Couldn't find device with uuid CaggMs-r0aV-emeU-t918-pmt9-QX8R-8VQorQ. --- Physical volume --- PV Name unknown device VG Name VG_XenStorage-cf36e72b-8041-21d6-0a2a-d6cc642a2d1e PV Size 923.51 GB / not usable 8.94 MB Allocatable yes PE Size (KByte) 4096 Total PE 236416 Free PE 236416 Allocated PE 0 PV UUID CaggMs-r0aV-emeU-t918-pmt9-QX8R-8VQorQ --- Physical volume --- PV Name /dev/md1 VG Name VG_XenStorage-cf36e72b-8041-21d6-0a2a-d6cc642a2d1e PV Size 4.00 GB / not usable 3.94 MB Allocatable yes PE Size (KByte) 4096 Total PE 1023 (略)
# /usr/sbin/vgreduce --removemissing VG_XenStorage-cf36e72b-8041-21d6-0a2a-d6cc642a2d1e Couldn't find device with uuid CaggMs-r0aV-emeU-t918-pmt9-QX8R-8VQorQ. Couldn't find device with uuid CaggMs-r0aV-emeU-t918-pmt9-QX8R-8VQorQ. Couldn't find device with uuid CaggMs-r0aV-emeU-t918-pmt9-QX8R-8VQorQ. Couldn't find device with uuid CaggMs-r0aV-emeU-t918-pmt9-QX8R-8VQorQ. Wrote out consistent volume group VG_XenStorage-cf36e72b-8041-21d6-0a2a-d6cc642a2d1e # /usr/sbin/vgscan Reading all physical volumes. This may take a while... Found volume group "VG_XenStorage-cf36e72b-8041-21d6-0a2a-d6cc642a2d1e" using metadata type lvm2