kvmclone.plで楽々仮想マシン作成
KVMにおけるクローン作成 (virt-clone)
KVMでは,virt-cloneコマンドでクローンを作成することができます.
例えばこんなふうに.
virt-clone --prompt --original OriginalVM --name CloneVM --file path/to/clone.img --nonsparse
しかし,このコマンドは仮想マシンの作成は行ってくれても,イメージファイル中に設定されている値までは変えてくれません.
Redhat系ディストリの場合,以下の3カ所を自分で編集する必要があります.
# MACアドレス /etc/sysconfig/hwconf # ホスト名,ゲートウェイ /etc/sysconfig/network # MACアドレス,IPアドレス,ネットマスク,ゲートウェイ /etc/sysconfig/network-scripts/ifcfg-eth0
最初はガマンできても,3回くらい繰り返すと,段々アホらしくなってきました.
KVMにおけるクローン作成 (kvmclone.pl)
あれこれ調べてみたところ,同じことを思った人がいたのかIBMのページにイメージファイルの中まで書き換えてくれるスクリプトがありました.ありがたく使わせていただきましょう.
virt-cloneでクローンを作成してから,イメージファイルをループバックでマウントして,上記の3箇所を書き換えてくれます.
使い方はこんな感じです.
usage: kvmclone.pl [-aontsimg] -a: Activate vm after cloning -o: Original domain name -n: New domain name -t: Target disk image file -s: Server hostname -i: IP Address -m: Net mask -g: Default gateway
さっきの例と同じことをする場合は,このように記述します.
kvmclone.pl -o OriginalVM -n CloneVM -t path/to/clone.img -s clone -i 192.168.x.x -m 255.255.255.0 -g 192.168.x.y
注意事項
実際に使ってみたところ,以下のような制約(というか仕様?)がありました.気をつけて.
- /etc以下がRedhat系のファイル配置となっている前提なので,Debianとかには使えない.
- hostsの編集まではしてくれないので,localhostの行にホスト名が入っている場合には,編集が必要です.
- イメージファイルの中で使うファイルシステムはLVMにしないこと./etc配下の書き換え時にマウントで失敗します.
ちなみに,ちゃんとnonsparseで作成してくれます.これはうれしい.
Hadoopのdatanodeとして複製したものを使うには,storageIDの編集が必要です.(これは別エントリで)