Como posso renomear uma VM no KVM + libvirt?
Gostaria que ele mudasse o nome no 'inventário', bem como o nome do armazenamento, etc.
Como posso renomear uma VM no KVM + libvirt?
Gostaria que ele mudasse o nome no 'inventário', bem como o nome do armazenamento, etc.
Respostas:
corre
virsh dumpxml name_of_vm > name_of_vm.xml
Defina a vm antiga para evitar um erro devido a um UUID duplicado.
virsh undefine name-of-vm
Edite o arquivo xml e importe-o.
virsh define name_of_vm.xml
Claro que você terá que parar e iniciar o vm para que as alterações entrem em vigor
virsh destroy name_of_vm
virsh start name_of_vm
virsh dumpxml myvm > foo.xml
<edit foo.xml, change the name, move storage>
virsh undefine myvm
virsh define foo.xml
Fonte: https://www.redhat.com/archives/libvirt-users/2010-October/msg00072.html
virsh
implementado domrename
na versão 1.2.19: 02 de setembro de 2015. Portanto, a melhor prática atual é apenas:
virsh domrename oldname newname
Como seria de esperar, o domínio deve ser parado, mas também não pode ter nenhum instantâneo.
virsh edit newname
alterar o caminho do arquivo e mv oldname newname
renomear o diretório se desejar que tudo corresponda.
Para alterar muitas máquinas, você pode usar isso:
virsh shutdown old-name
Aguarde o processo acima terminar e executar:
virsh dumpxml old-name > old-name.xml
virsh undefine old-name
Aguarde o processo acima terminar e executar:
sed -i 's/<name>old-name<\/name>/<name>new-name<\/name>/g' old-name.xml
virsh define old-name.xml
Execute este um por um para cada máquina. Você pode usar este RegExp se você tiver uma lista contendo old-name new-name
:
([^\r\n]+?)[ \t]+([^\r\n]+)
virsh shutdown $1\n#WAIT!\nvirsh dumpxml $1 > $1.xml\nvirsh undefine $1\n\#WAIT!\nsed -i 's/<name>$1<\\/name>/<name>$2<\\/name>/g' $1.xml\nvirsh define $1.xml\n
Faço isso de maneira um pouco diferente e pode ser um método não recomendado (não tenho certeza).
virsh destroy old-vm
virsh edit old-vm
Na mudança XML
virsh list --all
1 desligamento da antiga vm
2 desligamento da nova vm
Agora, defina o old-vm
virsh undefine old-vm