如何使用 libvirt+KVM 重命名虚拟机

Art*_*ldt 26 ubuntu libvirt kvm-virtualization

如何在 KVM+libvirt 上重命名虚拟机?

我希望它更改“库存”中的名称以及更改存储的名称等。

小智 20

virsh dumpxml name_of_vm > name_of_vm.xml
Run Code Online (Sandbox Code Playgroud)

取消定义旧的 vm 以防止由于重复的 UUID 而导致错误。

virsh undefine name-of-vm
Run Code Online (Sandbox Code Playgroud)

编辑 xml 文件,然后将其导入。

virsh define name_of_vm.xml
Run Code Online (Sandbox Code Playgroud)

当然,您必须停止并启动 vm 才能使更改生效

virsh destroy name_of_vm
virsh start name_of_vm
Run Code Online (Sandbox Code Playgroud)

  • 需要添加一个步骤:(在使用新名称定义 vm 之前)“virsh undefine name-of-vm”,否则它会抱怨重复的 UUID。 (5认同)

blu*_*yed 16

virsh dumpxml myvm > foo.xml
<edit foo.xml, change the name, move storage>
virsh undefine myvm
virsh define foo.xml
Run Code Online (Sandbox Code Playgroud)

来源:https : //www.redhat.com/archives/libvirt-users/2010-October/msg00072.html


小智 14

virsh实现domrename在发布1.2.19:02九月2015所以目前最好的做法就是:

 virsh domrename oldname newname
Run Code Online (Sandbox Code Playgroud)

如您所料,域必须停止,但也不能有任何快照。


Nux*_*Nux 5

要更改许多机器,您可以使用它:

virsh shutdown old-name
Run Code Online (Sandbox Code Playgroud)

等待以上完成并运行:

virsh dumpxml old-name > old-name.xml
virsh undefine old-name
Run Code Online (Sandbox Code Playgroud)

等待以上完成并运行:

sed -i 's/<name>old-name<\/name>/<name>new-name<\/name>/g' old-name.xml
virsh define old-name.xml
Run Code Online (Sandbox Code Playgroud)

对每台机器一一运行。如果您有一个包含old-name new-name以下内容的列表,则可以使用此 RegExp :

([^\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
Run Code Online (Sandbox Code Playgroud)