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


12

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

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

VMは4GB程度のファイル(.img)でバックアップされています。

今、私は非常に簡単なことをしたいです:私は自分のVMを複製したい。

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

しかし、libvirt FAQにはすべて大文字で記載されています:「XMLが保存されている場所は気にしないでください」

libvirt FAQ

大丈夫、気にしないでください。しかし、その後、VMを複製するにはどうすればよいですか?

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

回答:


3

virshサーバーのXML定義を編集、エクスポート、インポートできます。virt-cloneクローンイメージファイルを生成し、XMLをエクスポートするために使用します。安全のために、元のサーバーからクローン構成を削除します。


41

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

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

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

さらに、FAQが言っているのは、XMLドメインの記述は直接編集できないため 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"

これは、VMを別のホストにコピーする場合にも機能します。cpの代わりにsftpを使用し、(可能であれば)新しいvmを「定義」する前にイメージパスを変更します。
アンドレアスフローラス

このおかげで、時間を節約できました。私が抱えていた問題は、新しいノードを作成すると、パッケージのバージョンがローカルミラーを使用した他のノードと同期しなくなるという点で、複製と新規作成です。
マイクパーセル

virt-clone正しくフルディスク暗号化を扱いますか?意味、それをする前に復号化pwを要求されますか?
コーダー

私はそれsed -i "s/$source_vm/$new_vm" "/tmp/$new_vm.xml"を読むsed -i "s/$source_vm/$new_vm/" "/tmp/$new_vm.xml"か、少なくとも私のdebian派生物sedで、末尾の/が欠落していると文句を言うべきだ と思います。情報もありがとう、私のvirshクローンはまったく機能していませんでした。
number9

2

「virt-clone」以外に、この方法でVMを複製できます。

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



0

どうやらvirt-cloneがその方法です。

XMLを複製しようとしましたが、virt-managerには表示されません。

XML + .imgを次のような新しいシステムに転送する方法はまだ疑問です...


0

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

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

1
擬似VM名を除き、これは3年前の回答のコマンドと同じですが、その回答の補足情報がありません。
G-Manは「Reinstate Monica」と言う

0

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.