■virt-cloneでテンプレートマシンからの複製 環境は下記。 vmplayer内のXenを、ルーティングモードでブリッジする。 http://labunix.hateblo.jp/entry/20130714/1373786242 Xenの設定 http://labunix.hateblo.jp/entry/20130715/1373882921 NFS+Xenのライブマイグレーションを試す http://labunix.hateblo.jp/entry/20130715/1373888357 ■図にするとこんな感じ。 一番下のvmw2をテンプレートから複製する。 xen-debian1とxen-debian2のゲストOS同士は同一IPになるので、 直接ネットワークがつながらないこと。 $ echo "graph { flow: south; } \ [ Guest\nlivevm-wheezy ] -- \ [xen-debian1\nWheezy ] <-- "vmplayer/NFS" --> \ [ Host\nWheezy ] <-- "vmplayer/NFS" --> \ [ xen-debian2\nWheezy ] -- \ [ Guest\nvmw2 ]" | graph-easy +---------------+ | Guest | | livevm-wheezy | +---------------+ | | | +---------------+ | xen-debian1 | | Wheezy | +---------------+ ^ | | vmplayer/NFS v +---------------+ | Host | | Wheezy | +---------------+ ^ | | vmplayer/NFS v +---------------+ | xen-debian2 | | Wheezy | +---------------+ | | | +---------------+ | Guest | | vmw2 | +---------------+ ■virt-cloneコマンドを含むvirtinstパッケージを導入 $ apt-file search virt-clone virtinst: /usr/bin/virt-clone virtinst: /usr/share/man/man1/virt-clone.1.gz $ sudo apt-get install -y virtinst ■現在はautostartでXen起動時に自動的に起動するようになっている。 バグかどうかはともかく、virsh dominfoでは自動起動が有効かどうか確認出来ないのが難点。 (常にdiable) ■不要な仮想マシンのシャットダウン $ sudo virsh list Id Name State ---------------------------------------------------- 0 Domain-0 running 1 vmvm0 idle 2 livevm-wheezy idle $ sudo virsh shutdown vmvm0 $ sudo virsh list --all Id Name State ---------------------------------------------------- 0 Domain-0 running 2 livevm-wheezy idle - vmvm0 shut off - vmvm2 shut off ■不要な仮想マシンの削除 $ sudo virsh undefine vmvm2 Domain vmvm2 has been undefined $ sudo virsh list --all Id Name State ---------------------------------------------------- 0 Domain-0 running 2 livevm-wheezy idle - vmvm0 shut off $ sudo virsh undefine vmvm0 Domain vmvm0 has been undefined $ sudo virsh list --all Id Name State ---------------------------------------------------- 0 Domain-0 running 2 livevm-wheezy idle ■ディスクの空き容量を確認 全体の何%かだけで十分であれば以下のように。 $ df -h /media/nfs/ | awk '{print $5}' 使用% 37% ■「livevm-wheezy」はライブマイグレーションしたので xen-toolsで作成された元のファイルが無い。 作成したシステムから持ってくる。 $ sudo scp root@xen-debian2:/etc/xen/livevm-wheezy.cfg /etc/xen/ ■対象を確認してvirt-cloneを実行 仮想マシンを停止せずに行うと下記のエラーになるので注意。 ERROR Domain with devices to clone must be paused or shutoff. $ grep ^name /etc/xen/livevm-wheezy.cfg name = 'livevm-wheezy' $ ls /media/nfs/domains/livevm-wheezy/ disk.img swap.img $ sudo virsh shutdown livevm-wheezy Domain livevm-wheezy is being shutdown $ sudo virsh list --inactive Id Name State ---------------------------------------------------- - livevm-wheezy shut off $ test -d /media/nfs/domains/vmw2 || sudo mkdir /media/nfs/domains/vmw2 $ sudo virt-clone \ --original=livevm-wheezy \ --name=vmw2 \ --file=/media/nfs/domains/vmw2/disk.img \ --file=/media/nfs/domains/vmw2/swap.img ■今回はオフラインマイグレーション「-l」オプションなしでxen-debian2に移行 $ sudo virsh list --all Id Name State ---------------------------------------------------- 0 Domain-0 running - livevm-wheezy shut off - vmw2 shut off $ sudo virsh start vmw2 Domain vmw2 started $ sudo virsh list Id Name State ---------------------------------------------------- 0 Domain-0 running 6 vmw2 idle $ sudo xm migrate 6 xen-debian2 $ sudo virsh list --all Id Name State ---------------------------------------------------- 0 Domain-0 running - livevm-wheezy shut off - vmw2 shut off $ sudo virsh dominfo vmw2 Id: - Name: vmw2 UUID: b12f16df-5812-a651-ec33-913ba3e6bd77 OS Type: linux State: shut off CPU(s): 1 CPU time: 5.6s Max memory: 131072 KiB Used memory: 131072 KiB Persistent: yes Autostart: disable Managed save: unknown ■xen-debian2での確認 $ sudo virsh list --all Id Name State ---------------------------------------------------- 0 Domain-0 running 1 vmw2 idle $ sudo virsh dominfo vmw2 Id: 1 Name: vmw2 UUID: b12f16df-5812-a651-ec33-913ba3e6bd77 OS Type: linux State: idle CPU(s): 1 CPU time: 0.9s Max memory: 131072 KiB Used memory: 131072 KiB Persistent: no Autostart: disable Managed save: unknown ■後はコンソールなりsshなりでログイン (※xen-debian1/xen-debian2のゲストOSのネットワークが隔離されていること)して、 ホスト名、IPを変更して終了。 MACアドレスやUUIDは自動で変更されている。