*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/

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS