virt-cloneコマンドでKVM上のVMをらくらくクローニング

KVM上でたくさんVMを使って検証したいなぁ〜なんてときは
必要な台数VMをイチイチ生成してインストールするのがメンドクサイ。

同じVMを生成するのであれば、virt-cloneで簡単にクローン生成する事が出来る。


使い方

# virt-clone --help
usage: virt-clone [options]

options:
  -h, --help            show this help message and exit
  --connect=CONNECT     URI でハイパーバイザーに接続

  General Options:
    -o ORIGINAL_GUEST, --original=ORIGINAL_GUEST
                        Name of the original guest; The status must be shut
                        off or paused.
    --original-xml=ORIGINAL_XML
                        XML file to use as the original guest.
    -n NEW_NAME, --name=NEW_NAME
                        新しいゲストの名前
    -u NEW_UUID, --uuid=NEW_UUID
                        クローンゲストの新しい uuid:
                        省略値はランダムに生成された UUID です

  Storage Configuration:
    -f NEW_DISKFILE, --file=NEW_DISKFILE
                        ディスクイメージとして使用される、新
                        ゲスト用の新ファイル
    --force-copy=TARGET
                        装置のコピーを強制する (例えば 'hdc'
                        が読込みのみの cdrom 装置なら、--force-
                        copy=hdc)
    --nonsparse         クローニングのディスクイメージに疎ら
                        なファイルを使用しないでください
    --preserve-data     新ファイルを新ゲスト用のディスクイメ
                        ージとして使用するよう保存する

  Networking Configuration:
    -m NEW_MAC, --mac=NEW_MAC
                        クローンゲスト用の固定 MAC アドレス。・
                        略値はランダムに生成されます

  Miscellaneous Options:
    -d, --debug         デバッグ情報を印刷
    --prompt            Request user input for ambiguous situations or
                        required options.
    --force             Do not prompt for input. Answers yes where applicable,
                        terminates for all other prompts


こんな感じでコマンド実行すれば簡単にクローンを生成出来る
(あ、きちんと確認してないけどクローニングの時にはクローン元は止めておいた方がよさげ)

# virsh list --all
 Id Name                 State
----------------------------------
  - vm-host1             shut off

# virt-clone --original=vm-host1 --name=vm-host2 --file=/dev/sda6 --prompt
Cloning /dev/sda5                                                            | 5.6 GB     01:44

Clone 'vm-host3' created successfully.
# virsh list --all
 Id Name                 State
----------------------------------
  - vm-host1             shut off
  - vm-host2             shut off


このコマンドの便利な所はUUIDとMACアドレス
自動的に生成してくれてるからラクチン(`・ω・´)

# diff /etc/libvirt/qemu/vm-host[12].xml
2,3c2,3
<   <name>vm-host1</name>
<   <uuid>442ca70c-6188-1566-3394-1e72501dff71</uuid>
---
>   <name>vm-host2</name>
>   <uuid>f11ee30c-6386-0630-92f0-52a24c9af4a6</uuid>
26c26
<       <source dev='/dev/sda5'/>
---
>       <source dev='/dev/sda6'/>
30c30
<       <mac address='54:52:00:70:8a:7f'/>
---
>       <mac address='00:16:36:62:af:34'/>

あとは、一台ずつ起動してIPアドレスやらホスト名やらを修正してあげればOK(≧∇≦)b