harry’s memorandum

おれおれメモ

VirtualBox4.1のリンククローンをやってみた

普段は仕事でXenやXenServerやESXiやHyper-Vを使いますが、ちょっと試してみようとか思うときは VirtualBox が すごく便利です。そんなVirtualBoxも4.1になり、"リンククローン"も出来るようになり嬉しいことばかりです。


早速試してみたのですがリンククローンが見当たらない....。VirtualBoxChangeLogをみると

Support for cloning of VMs (bug #5853, see the manual for more information): full clones can be created through the GUI and VBoxManage, linked clones only through VBoxManage

http://www.virtualbox.org/wiki/Changelog

「linked clones only through VBoxManage」コマンドラインの VBoxManage のみサポートのようです。ということで、コマンドラインでリンククローンをやってみました。


今回はWindowのVirtualBox4.1で試しています。最初はオプションを見ます。

    • snapshot |: Select a specific snapshot where the clone operation should refer to. Default is referring to the current state.
    • mode machine|all: Selects the cloning mode of the operation. If machine is selected (the default), the current state of the VM without any snapshots is cloned. If all is the selected mode all snapshots and the current state are cloned.
    • options link|keepallmacs|keepnatmacs|keepdisknames: Allows additional fine tuning of the clone operation. The first option defines that a linked clone should be created, which is only possible for a machine clone from a snapshot. The next two options allow to define how the MAC addresses of every virtual network card should be handled. They can either be reinitialized (the default), left unchanged (keepallmacs) or left unchanged when the network type is NAT (keepnatmacs). If you add keepdisknames all new disk images are called like the original once, otherwise they are renamed.
    • name : Select a new name for the new virtual machine. Default is "Original Name Clone".
    • basefolder : Select the folder where the new virtual machine configuration should be saved in.
    • uuid : Select the UUID the new VM should have. This id has to be unique in the VirtualBox instance this clone should be registered. Default is creating a new UUID.
    • register: Automatically register the new clone in this VirtualBox installation. If you manually want register the new VM later, see the section called “VBoxManage registervm / unregistervm” for instructions how to do so.
http://www.virtualbox.org/manual/ch08.html#vboxmanage-clonevm


必須なのはこのぐらいかな。

  • --snapshot | はスナップショットのuuidか名前
  • --options link がリンククローンオプション。
  • --name は 新しいクローン名


VBoxManageクローン元VMの情報をみます。

>VBoxManage showvminfo  ubuntu001
 Name:            ubuntu001
 Guest OS:        Ubuntu
 UUID:            a0f412ba-2843-40e0-a753-a69395a2fa2b
 Config file:     G:\VMImage\ubuntu001\ubuntu001.vbox
 Snapshot folder: G:\VMImage\ubuntu001\Snapshots
 Log folder:      G:\VMImage\ubuntu001\Logs
 Hardware UUID:   a0f412ba-2843-40e0-a753-a69395a2fa2b


シンタックスが分からないので適当に打ってみる

>VBoxManage clonevm ubuntu001 --options link --name ubuntu002
 VBoxManage.exe: error: Linked clone can only be created from a snapshot
 VBoxManage.exe: error: Details: code E_INVALIDARG (0x80070057), component Machine, interface IMachine, callee IUnknown
 Context: "CloneTo(trgMachine, mode, ComSafeArrayAsInParam(options), progress.asOutParam())" at line 444 of file VBoxManageMisc.cpp


「Linked clone can only be created from a snapshot」と怒られました。リンククローンをするにはスナップショットからクローンするっぽいです。素直にスナップショットを取得して、スナップショット名もしくはuuidを指定するといいみたい。ということはシンタックスはこんな感じですか。

>VBoxManage clonevm <VMの{uuid|name}>  --snapshot <スナップショットの{uuid|name} --options link --name <新しい名前>


実行してみたら見事に成功!

>VBoxManage clonevm ubuntu001 --snapshot ubuntu-snapshot1 --options link --name ubuntu002
 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
 Machine has been successfully cloned as "ubuntu002"


本当に一瞬でクローンが完了。でもレジストしないとVMは使えないので VBoxManage registervm してください。

>VBoxManage registervm G:\VMImage\ubuntu003\ubuntu002.vbox

こういうのはかなり楽しいですね。