Como criar um dupe de uma VM KVM / libvirt / virt-manager?

12

Estou um pouco perdido com o virt-manager / libvirt / KVM.

Eu tenho uma VM KVM funcional (Windows XP) que funciona bem.

A VM é apoiada por um arquivo de 4 GB ou mais (a .img ).

Agora quero fazer algo muito simples: quero duplicar minha VM.

Eu pensei "OK, não há problema, vamos copiar o arquivo de 4GB e copiar o arquivo XML" .

Mas a FAQ do libvirt está em maiúsculas: "NÃO DEVE CUIDAR ONDE O XML É ARMAZENADO"

FAQ do libvirt

OK, bem, eu não deveria me importar. Mas como faço para duplicar minha VM?

Eu quero criar uma nova VM que seja uma cópia dessa VM.

    
por SyntaxT3rr0r 28.02.2011 / 21:19

6 respostas

3

virsh permitirá que você edite, exporte e importe a definição XML para seus servidores. Eu usaria virt-clone para gerar um arquivo de imagem clonado e exportar o XML. Para ser seguro, eu removeria a configuração de clone do servidor original.

    
por 28.02.2011 / 22:32
39

O mais conveniente é simplesmente:

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

O que fará uma cópia de this-vm , denominado that-vm , e cuidará da duplicação de dispositivos de armazenamento. Nada de novo aqui, exceto detalhes.

Mais ao ponto, o que o FAQ está dizendo é que as descrições de domínio XML não são editáveis diretamente, você precisa ir através de libvirt. Para concluir as etapas realizadas pelo comando virt-clone , você pode:

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"
    
por 06.03.2012 / 17:28
2

Diferente de "virt-clone", você pode duplicar a VM dessa maneira:

  1. Verifique se a VM existente (a ser duplicada) está desligada.
  2. faça um "sudo virsh dumpxml < domid >" da VM existente e salve o arquivo xml de saída.
  3. Modifique o < nome > tag sob a tag < domínio > tag.
  4. Use "uuidgen" para gerar um novo ID exclusivo e use-o para modificar o < uuid > tag.
  5. Faça uma cópia das imagens virtuais qcow existentes que a VM usa (geralmente armazenadas em / var / lib / libvirt / images, mas para ter certeza basta ler o arquivo XML para a localização exata). O comando é "sudo cp /var/lib/libvirt/images/xxx.qcow2 yyyy.qcow2" e preenche o novo arquivo yyyy.qcow2 no arquivo XML.
  6. Inicie o novo vm: sudo virsh define new.xml
  7. Inicie o novo domid: sudo virsh start < new_domid >
por 06.04.2016 / 02:11
0

Aparentemente, o virt-clone é o caminho a seguir.

Eu tentei duplicar o XML, mas ele não apareceria no virt-manager.

Ainda me pergunto como posso transferir um XML + .img para um novo sistema que diga ...

    
por 28.02.2011 / 21:45
0

O seguinte comando funcionou para mim (Tem que desligar o VSA / Vm antes de executar o comando)

# virt-clone --connect=qemu:///system -o present_vsa/vm_name -n vsa/vm_to_be_cloned_name --auto-clone
    
por 21.04.2015 / 08:45
0

virt-clone --auto-clone parece não funcionar muito bem com o LVM. Eu esperava que ele criasse um instantâneo e usasse isso, mas copia todos os dados.

Melhor para fazer a rota dumpxml / define; e lembre-se de montar o sistema de arquivos raiz do clone e alterar os endereços IP e o nome do host apropriadamente antes de iniciar o original e clonar.

    
por 24.05.2018 / 07:12