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の複製方法後半で触れているので、そちらを参考に。
管理者としてのまとめ
設定ファイルをがんばって編集しなければならない手間が省けるのでこちらのほうが楽です。
また、ちょくちょく複製することを考えた場合、以下のようにするとよいかも。
- 複製元用のアドレス確保
- 基本構成の仮想OSイメージ作成、アドレスは複製元用に設定しておく
- 基本構成の仮想OSイメージは常に停止、たまにyumで更新する
- SSH経由のシェルで自動的にアドレス、ホスト名を変えるスクリプトを作る
- 複製は、virt-clone→複製OS起動→自動更新スクリプト
なんてのがよいのかも。
時間ができたら自動更新スクリプトを作ってみようか……つか、どこかに落ちてないものか?