ゲストOSのクローン

クローンなんつってもただのファイルコピーであります。
ここをみれば詳しいことが。

ゲストOSを停止する

ホストOSのコンソールからxmコマンドでゲストOSを停止します。

[root@xen ~]# xm destroy cos1
[root@xen ~]# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0      994     1 r-----   1019.1
ゲストOSのファイルをコピーする

ゲストOS作成時に指定したイメージファイルをコピーします。
ディスクの空き容量がちゃんと足りているか確認しましょうね。

[root]# cp -p cos1.img cos2.img
定義ファイルを作成する

/etc/xen/ディレクトリに定義ファイルがあります。
ゲストOSの名前のファイルとなっていますので、コピーして編集します。
ここではname、uuid、vif、diskを変更する必要があります。
uuidは「uuidgen」コマンドでユニークなIDを作ることが出来ます。

[root]# uuidgen

vifはスクリプトで生成します。

[root]# vi macgen.py
#! /usr/bin/python
# macgen.py script generates a MAC address for Xen guests

import random
mac = [ 0x00, 0x16, 0x3e,           <-- 実際のMACアドレスの上位3オクテット(ベンダーID)を指定します。
random.randint(0x00, 0x7f),
random.randint(0x00, 0xff),
random.randint(0x00, 0xff) ]
print ':'.join(map(lambda x: "%02x" % x, mac))

実行権限をつけて、スクリプトを実行します。

[root]# chmod +x macgen.py
[root]# ./macgen.py

コピーして、エディタで変更してください。

[root]# cp -p cos1.img cos2.img
[root]# vi cos2
name = "cos2"   <-- 修正
uuid = "c121db9d-6016-4ee5-a75f-f28b5352822f"   <-- 修正
maxmem = 256
memory = 256
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [  ]
disk = [ "tap:aio:/var/lib/xen/images/cos2.img,xvda,w" ]   <-- 修正
vif = [ "mac=00:16:3e:60:cf:c4,bridge=xenbr0" ]   <-- 修正

「xm create」コマンドで新規ドメインを作成して完了です。

[root@xen xen]# xm create cos2
Using config file "./cos2".
Started domain cos1

ゲストOS上のホスト名、IPアドレス等についてはネットワーク環境によって変更する必要が発生することもありますが、DHCP使ってる場合は特に必要ありません。