公開日:2009/4/1 0:00:00

CentOS 5

Xen Domain-0関連 Domain-Uの複製方法(virt-clone)

About

まったく同じ、二つ目の仮想OSを作成する方法です。
Domain-Uの複製方法では、手間をかけて設定していましたが、こちらはお手軽にやってみようというものです。

作業はリモートから putty でアクセス。その後、rootになって行ないます。

virt-cloneとは

私的に確認しているのはCentOS5.2からですが、virt-cloneというものがあります。
説明(man virt-clone)を読むと、既存の仮想OSのクローンを作成するためのコマンドラインツールだそうです。
既存の仮想OSであれば問題なくコピーできるそうな。「一応ユニークな部分は更新するが、設定を見直してきちんと直してくれよ」とも書いてあります。

manファイルの説明にもあるんですが、どうやら「ホスティングサービスのユーザ追加時に自動でやる」事が目的で作られたようなツールです。
ちなみにこれ、日本人が作ったらしいですよ。

virt-clone実行

manのサンプルを使って実行してみます。

[root@fivestar-dom0 ~]# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0     3504     2 r-----    185.7
fivestar                                   2      511     1 -b----    315.1
[root@fivestar-dom0 ~]# 

一つだけ動いているので、これをコピーしてみます。

[root@fivestar-dom0 ~]# virt-clone \
>  --original fivestar \
>  --name blackstar \
>  --file /var/lib/xen/images/blackstar.x86_64.pvm.img
ERROR:  ドメインの状態は停止でなければなりません
[root@fivestar-dom0 ~]#

manファイルにもありましたが、止めてないと駄目だそうです。
というわけで止めてみます。

[root@fivestar-dom0 ~]# xm shutdown -a -w
Domain fivestar terminated
All domains terminated
[root@fivestar-dom0 ~]# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0     3504     2 r-----    189.5
[root@fivestar-dom0 ~]#

ではもう一度。

[root@fivestar-dom0 ~]# virt-clone \
>  --original fivestar \
>  --name blackstar \
>  --file /var/lib/xen/images/blackstar.x86_64.pvm.img
/var/lib/xen/images/fivestar.x86_64.pvm.img から /var/lib/xen/images/blackstar.x86_64.pvm.img にクローニング中
ドメインをクロー? 100% |=========================|  10 GB    xx:xx
[root@fivestar-dom0 ~]#

ファイルコピーだけじゃないのか?と思いたくもなるので確認する。
まずは設定ファイル。

[root@fivestar-dom0 ~]# ls /etc/xen/
auto       fivestar   scripts          xend-pci-permissive.sxp  xmexample.hvm  xmexample1
blackstar  qemu-ifup  xend-config.sxp  xend-pci-quirks.sxp      xmexample.vti  xmexample2
[root@fivestar-dom0 ~]# diff -cT /etc/xen/fivestar /etc/xen/blackstar 
*** /etc/xen/fivestar   2008-07-12 15:33:44.000000000 +0900
--- /etc/xen/blackstar  2008-07-12 17:40:30.000000000 +0900
***************
*** 1,5 ****
!       name = "fivestar"
!       uuid = "ea7ff86d-ef45-bc63-a27c-4912a01e7fca"
        maxmem = 512
        memory = 512
        vcpus = 1
--- 1,5 ----
!       name = "blackstar"
!       uuid = "de280d0f-db7d-1d27-4b6f-a0302243ab62"
        maxmem = 512
        memory = 512
        vcpus = 1
***************
*** 8,12 ****
        on_reboot = "restart"
        on_crash = "restart"
        vfb = [  ]
!       disk = [ "tap:aio:/var/lib/xen/images/fivestar.x86_64.pvm.img,xvda,w" ]
!       vif = [ "mac=00:16:3e:0e:ae:2e,bridge=xenbr0" ]
--- 8,12 ----
        on_reboot = "restart"
        on_crash = "restart"
        vfb = [  ]
!       disk = [ "tap:aio:/var/lib/xen/images/blackstar.x86_64.pvm.img,xvda,w" ]
!       vif = [ "mac=00:16:3e:29:b9:aa,bridge=xenbr0" ]
[root@fivestar-dom0 ~]#

変更されていますね。ただ、予想通りというかさすがにそこまではやってくれないのか、IPアドレスまでは変更してないと思いますので、変更します。
この変更手続きは、Domain-Uの複製方法後半で触れているので、そちらを参考に。

管理者としてのまとめ

設定ファイルをがんばって編集しなければならない手間が省けるのでこちらのほうが楽です。
また、ちょくちょく複製することを考えた場合、以下のようにするとよいかも。

  1. 複製元用のアドレス確保
  2. 基本構成の仮想OSイメージ作成、アドレスは複製元用に設定しておく
  3. 基本構成の仮想OSイメージは常に停止、たまにyumで更新する
  4. SSH経由のシェルで自動的にアドレス、ホスト名を変えるスクリプトを作る
  5. 複製は、virt-clone→複製OS起動→自動更新スクリプト

なんてのがよいのかも。
時間ができたら自動更新スクリプトを作ってみようか……つか、どこかに落ちてないものか?

参考サイト