*XenServerの SoftRaid化 [#c6527b9e] RIGHT:更新日 &lastmod(); Xenserver5.6SP2をSoftRaid1にする。 **方法 [#o34cbbfa] ***XenserverのRaid1 [#f5a8d44e] Disk1 Disk2 Disk4 ---------------------- --------------------- | | | | | | | | | sda1 | sda2 | sda3 | | sdb1 | sdb2 | sdb3 | 物理Disk | | | | | | | | ---------------------- --------------------- | | | | | | | | --------------+---- | | | | | | | | | ---------- --------+---+-- | | | | | | | | ---------------+--+-------- | --------- | | | | | | | | | | | | V V V V V V ---------- ----------- ---------- | | | | | | | md0 | | md1 | | md2 | 物理ボリューム(PV) | | | | | | ---------- ----------- ---------- | | | /にmount | | V V ----------------------------------------- | | 論理ボリュームグループ(VG) | VG_XenStorage-xxxxxxx | ----------------------------------------- | | | | V V V V ------- ----------- ------------- ------------- | MGT | | VHD-xxx | | VHD-yyyy | | VHD-zzzz | 論理ボリューム(LV) | 4MB | | 16MB | | VM1のHDD | | VM2のHDD | ------- ----------- ------------- ------------- ***概要 [#v513a1a7] -通常にXenserverをsdaにインストール -sdbにsdaと同じパーティションをfdiskで作成 しかしインストール時にsdaには以下のようにシリンダの途中でパーティションが切れているのでfdiskではやり方が判らなかったので、sdbにもXenServerをインストールして同じパーティション構造にした。 # /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 -/dev/sdb1-3をFormatする(ボリュームグループ(VG)削除) -sdbのパーティションIDをfdに変更し、それぞれのパーティションをradiして/dev/md1,/dev/md2,/dev/md3にマウントして、raidとして動作させる。 -sda1,sda2,の内容をmd0(sdb1),md1(sdb2)にコピーする。 -RAMイメージを解凍し、その後設定し、再度イメージを作成する。 -grubを書き換え起動時のmountが/dev/md0等になるようにする。 &color(red){hdaなどパラレルIDEではHDDのジャンパーでhdaとhdbを入れ替える}; -リブート後sdaをmdadmでraidに参加させる。 ***方法 [#j2800654] 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によるディスクパーティション(豆知識)'' -PV(Physical Volume) 物理ボリュームのこと。/dev/hda7や/dev/hdcと示すディスクそのものを意味する。 -VG(Volume Group) 上記のPVを束ねて作成されるボリュームのこと。この中から実際に使う「論理的な」パーティションを切り出すことになる。 -LV(Logical Volume) LVとは、ここまで「論理的な」ボリュームと称してきたものであり、VGから切り出して実際に利用することになるパーティションを示す。 ---------- ''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' (略) **Bootイメージの作成 [#d7ef849e] /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 &color(red){/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 &color(red){パラレル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 ***Raid 管理 [#wea4df44] 状態表示 # /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 ***LVMについて [#w95f6bbd] 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 **参考 [#kf52de8f] -http://www.space-i.jp/wp/?p=168 -http://blog.firstserved.net/2007/06/07/booting-xenserver-or-xenenterprise-from-software-raid/