KVM/libvirt/virt-manager 仮想マシンのコピーを作成するには?

KVM/libvirt/virt-manager 仮想マシンのコピーを作成するには?

virt-manager/libvirt/KVMで若干の損失が発生しました。

KVM仮想マシン(Windows XP)が正しく実行されています。

仮想マシンは約4GBのファイル(.img)。

今私は非常に簡単なタスクを実行したいと思います。仮想マシンのコピーを作成したいと思います。

私の考えでは「わかりました。4GBファイルをコピーしてXMLをコピーしましょう。」文書。

しかし、libvirt FAQはすべて大文字になっています。「XMLがどこに保存されているか気にしないでください。」

libvirt FAQ

まあ、私は気にしません。しかし、仮想マシンをどのように複製しますか?

この仮想マシンのコピーである新しい仮想マシンを作成したいと思います。

答え1

最も便利な方法は次のとおりです。

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

コピーを作成し、this-vm名前を付け、that-vmストレージデバイスのコピーを担当します。詳細に加えて、ここに新しいものはありません。

さらに重要なことは、よくある質問で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 image.
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"

答え2

「virt-clone」に加えて、次のように仮想マシンを複製することもできます。

  1. コピーする既存の仮想マシンの電源がオフになっていることを確認してください。
  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. 新しい仮想マシンの起動:sudo virsh new.xmlの定義
  7. 新しいdomidの起動:sudo virsh start <new_domid>


答え3

virshサーバーのXML定義を編集、エクスポート、インポートできます。これを使用してvirt-clone複製イメージファイルを作成し、それをXMLにエクスポートします。安全のため、元のサーバーからレプリケーション構成を削除します。

答え4

次のコマンドは私にとって効果的でした(コマンドを実行する前にVSA / Vmを終了する必要がありました)。

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

関連情報