XenServerの SoftRaid化

更新日 2012-01-28 (土) 21:05:59

Xenserver5.6SP2をSoftRaid1にする。

方法

XenserverのRaid1

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

概要

  • 通常に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等になるようにする。 hdaなどパラレルIDEではHDDのジャンパーでhdaとhdbを入れ替える
  • リブート後sdaをmdadmでraidに参加させる。

方法

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イメージの作成

/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

Raid 管理

状態表示

# /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について

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

参考


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-01-28 (土) 21:05:59 (2391d)