cómo cambiar el nombre de una VM usando libvirt + KVM


24

¿Cómo puedo cambiar el nombre de una VM en KVM + libvirt?

Me gustaría cambiar el nombre en el 'inventario', así como cambiar el nombre del almacenamiento, etc.


3
Después de hacer esta pregunta, la gente del proyecto libvirt agregó el comando 'virsh edit my-vm-name'.
— Arthur Ulfeldt

Respuestas:


18

correr

virsh dumpxml name_of_vm > name_of_vm.xml

Defina el antiguo vm para evitar un error debido a un UUID duplicado.

virsh undefine name-of-vm

Edite el archivo xml y luego impórtelo.

virsh define name_of_vm.xml

Por supuesto, tendrá que detener e iniciar el vm para que los cambios surtan efecto.

virsh destroy name_of_vm
virsh start name_of_vm

55
necesita agregar un paso: (antes de definir el vm con el nuevo nombre) "virsh undefine name-of-vm" de lo contrario se queja de UUID duplicado.
— Arthur Ulfeldt

1
También tuve que cambiar el nombre del archivo hd.img y editar la línea en el archivo xml
— Arthur Ulfeldt

El orden correcto está en la otra respuesta. No tiene que cambiar el nombre de img si no utiliza la máquina anterior.
— Nux

1
Esta respuesta ahora está desactualizada. Vea mi respuesta a continuación. tldr; virsh ahora tiene domrename.
— Reedstrm


13

virshimplementado domrenameen la versión 1.2.19: 02 de septiembre de 2015. Por lo tanto, la mejor práctica actual es solo:

 virsh domrename oldname newname

Como es de esperar, el dominio debe detenerse, pero tampoco puede tener instantáneas.


+1: puede virsh edit newnamecambiar la ruta del archivo y mv oldname newnamecambiar el nombre del directorio si desea que todo coincida.
— Pausado hasta nuevo aviso.

en otras palabras, también debe 1) cambiar el nombre de /var/lib/libvirt/images/oldname.qcow2 en /var/lib/libvirt/images/newname.qcow2; y 2) edite /etc/libvirt/qemu/newname.xml para configurar el archivo fuente correcto balise <source file = '/ var / lib / libvirt / images / newname.qcow2'
— MaxiReglisse

pero solo si necesita que los nombres de archivo coincidan con los nombres de dominio (lo cual admito, es conveniente), esto evita un ciclo de destrucción / creación, aunque aún requiere una parada (y no instantáneas)
— reedstrm

5

Para cambiar muchas máquinas puedes usar esto:

virsh shutdown old-name

Espera a que termine lo anterior y ejecuta:

virsh dumpxml old-name > old-name.xml
virsh undefine old-name

Espera a que termine lo anterior y ejecuta:

sed -i 's/<name>old-name<\/name>/<name>new-name<\/name>/g' old-name.xml
virsh define old-name.xml

Ejecute esto uno por uno para cada máquina. Puede usar este RegExp si tiene una lista que contiene 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

0

Lo hago un poco diferente y puede ser un método no recomendado (no estoy seguro).

virsh destroy old-vm virsh edit old-vm

En el cambio XML

  1. nombre de dominio old-vm a new-vm
  2. cambiar un char / dígito en UUID guardar y salir.

virsh list --all

1 apagado de vm antiguo

2 nuevas vm apagado

Ahora indefinir el viejo vm

virsh undefine old-vm

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.