web-dev-qa-db-ja.com

KVM / libvirt / virt-manager VMの複製を作成する方法は?

Virt-manager/libvirt/KVMで少し迷っています。

私はうまく機能しているKVM VM(Windows XP))はうまく動作します。

VMは4GBファイル程度(a。img)でサポートされています)。

次に、非常に単純なことを行います。VMを複製します。

「OK、問題ありません。4GBファイルをコピーしてXMLをコピーしましょう」ファイルだと思いました。

ただし、libvirt FAQはすべて大文字で表記します: "XMLの場所を気にしないでくださいIS STORED"

libvirt FAQ

大丈夫、気にしないでください。しかし、どうすればVMを複製できますか?

そのVMのコピーである新しいVM=を作成したい。

13
SyntaxT3rr0r

virshを使用すると、サーバーのXML定義を編集、エクスポート、およびインポートできます。私は使うだろう virt-cloneクローン画像ファイルを生成し、XMLをエクスポートします。安全のために、元のサーバーからクローン構成を削除します。

4
BillThor

最も便利なのは単純です:

# virt-clone --connect=qemu://example.com/system -o this-vm -n that-vm --auto-clone

これにより、this-vmという名前のthat-vmのコピーが作成され、ストレージデバイスの複製が処理されます。詳細を除いて、ここでは新しいことは何もありません。

要点は、FAQが言っていることは、XMLドメインの説明は直接編集できないということです。through libvirtにアクセスする必要があります。 virt-cloneコマンドを使用すると、次のことができます。

source_vm=vm_name
new_vm=new_vm_name

# You cannot "clone" a running vm, stop it.  suspend and destroy
# are also valid options for less graceful cloning
virsh shutdown "$source_vm"

# copy the storage.
cp /var/lib/libvirt/images/{"$source_vm","$new_vm"}.img

# dump the xml for the original
virsh dumpxml "$source_vm" > "/tmp/$new_vm.xml"

# hardware addresses need to be removed, libvirt will assign
# new addresses automatically
sed -i /uuid/d "/tmp/$new_vm.xml"
sed -i '/mac address/d' "/tmp/$new_vm.xml"

# and actually rename the vm: (this also updates the storage path)
sed -i "s/$source_vm/$new_vm" "/tmp/$new_vm.xml"

# finally, create the new vm
virsh define "/tmp/$new_vm.xml"
virsh start "$source_vm"
virsh start "$new_vm"

「virt-clone」以外は、VMこのように複製できます:

  1. 既存のVM(複製される))がシャットダウンされていることを確認します。
  2. 既存のVMの「Sudo virsh dumpxml <domid>」を実行し、出力xmlファイルを保存します。
  3. <domain>タグの下の<name>タグを変更します。
  4. 「uuidgen」を使用して新しい一意のIDを生成し、それを使用して既存の<uuid>タグを変更します。
  5. VMが使用する既存のqcow仮想イメージのコピーを作成します(通常は/ var/lib/libvirt/imagesに保存されていますが、正確な場所についてはXMLファイルを読んでください)。コマンドは「Sudo cp /var/lib/libvirt/images/xxx.qcow2 yyyy.qcow2」で、XMLファイルに新しいファイルyyyy.qcow2を入力します。
  6. 新しいvmを開始します。sudovirsh define new.xml
  7. 新しいdomidを開始します:Sudo virsh start <new_domid>


3
Peter Teoh

どうやらvirt-cloneが最適です。

XMLを複製してみましたが、virt-managerの下には表示されません。

XML + .imgを次のような新しいシステムに転送するにはどうすればよいのでしょうか...

0
SyntaxT3rr0r

次のコマンドが機能しました(コマンドを実行する前にVSA/Vmをシャットダウンする必要があります)

# virt-clone --connect=qemu:///system -o present_vsa/vm_name -n vsa/vm_to_be_cloned_name --auto-clone
0
vishu

virt-clone --auto-cloneはLVMでうまく機能していないようです。スナップショットを作成してそれを使用することを期待していましたが、代わりにすべてのデータをコピーします。

Dumpxml/defineルートを実行することをお勧めします。元のクローンを開始する前に、クローンのルートファイルシステムをマウントし、IPアドレスとホスト名を適切に変更することを忘れないでください。

0
Wombat