Xen domainU の複製

Xen の domainU を複製する方法です。

既にある domainU vps1 から新たに domainU vps5 を作成します。

1. イメージファイルをコピーします。

vps1 の複製 vps5 を作成します。

vps1 を停止。

# xm shutdown vps1

イメージファイルをコピー。

# cp /var/lib/xen/images/vps1.img /var/lib/xen/images/vps5.img

2. vps5.img をマウント

2-1. イメージファイルを loop デバイスに接続します。

# losetup -a
# losetup -f
/dev/loop0
# losetup /dev/loop0 /var/lib/xen/images/vps5.img
# losetup -a
/dev/loop0: [0304]:197083 (/var/lib/xen/images/vps5.img)

2-2. パーティションを確認します。

# fdisk -l /dev/loop0
 
Disk /dev/loop0: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 
      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1   *           1          13      104391   83  Linux
/dev/loop0p2              14         652     5132767+  8e  Linux LVM
# kpartx -l /dev/loop0
     loop0p1 : 0 208782 /dev/loop0 63
     loop0p2 : 0 10265535 /dev/loop0 208845

2-3. LVM パーティションをマッピング

# kpartx -av /dev/loop0
add map loop0p1 : 0 208782 linear /dev/loop0 63
add map loop0p2 : 0 10265535 linear /dev/loop0 208845
# ls /dev/mapper/
control  loop0p1  loop0p2

2-4. 論理ヴォリューム活性化

# pvscan
  PV /dev/mapper/loop0p2   VG VolGroup00   lvm2 [4.88 GB / 0    free]
  Total: 1 [4.88 GB] / in use: 1 [4.88 GB] / in no VG: 0 [0   ]
# vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "VolGroup00" using metadata type lvm2
# lvscan
  inactive          '/dev/VolGroup00/LogVol00' [4.34 GB] inherit
  inactive          '/dev/VolGroup00/LogVol01' [544.00 MB] inherit
# vgchange -a y
  2 logical volume(s) in volume group "VolGroup00" now active
# lvscan
  ACTIVE            '/dev/VolGroup00/LogVol00' [4.34 GB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol01' [544.00 MB] inherit

2-5. イメージファイルの root パーティションを mount

# mount /dev/VolGroup00/LogVol00 /mnt

3. イメージファイルの設定を変更

ホスト名、IP Address、macアドレス(HWADDR)を変更します。

# vi /mnt/etc/hosts
# vi /mnt/etc/sysconfig/network
# vi /mnt/etc/sysconfig/network-scripts/ifcfg-eth0

4. イメージファイルの umount

# umount /mnt
# vgchange -a n
   0 logical volume(s) in volume group "VolGroup00" now active
# lvscan
   inactive          '/dev/VolGroup00/LogVol00' [4.34 GB] inherit
   inactive          '/dev/VolGroup00/LogVol01' [544.00 MB] inherit
# kpartx -d /dev/loop0
# ls /dev/mapper/
control
# losetup -d /dev/loop0
# losetup -a
#

5. domainU vps5 設定ファイル作成

vps1 の設定ファイルをコピーして vps5 用の設定に変更します。

uuid を生成。

# uuidgen
2843d9ea-51c5-49a6-9258-fa273e682dea

vps5 を作成して、変更します。

# cp /etc/xen/vps1 /etc/xen/vps5
# vi /etc/xen/vps5
(name, uuid, disk, vif を変更)

6. vps5 起動

# xm create vps5

※vps5 を起動できるのですが、何故か vps5 の eth0 が
UP になりませんでした。
ifcfg-eth0 が ifcfg-eth0.bak にリネームされていたので、
元にもどして ifup eth0 したところ ok でした。

参考にさせていただいたサイト: http://sokohakato.wordpress.com/linux/centos/xenimgmount/