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

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

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

    virsh dumpxml name_of_vm > name_of_vm.xml 

    取消定义旧的虚拟机,以防止由于重复的UUID造成的错误。

     virsh undefine name-of-vm 

    编辑XML文件,然后导入它。

     virsh define name_of_vm.xml 

    当然,你将不得不停下来启动虚拟机以使更改生效

     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 

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

    virshdomrename版本中实现了domrename:2015年9月2日。所以目前的最佳做法是:

      virsh domrename oldname newname 

    正如你所期望的那样,这个域必须停止,而且它也不能有任何快照。

    要改变许多机器,你可以使用这个:

     virsh shutdown old-name 

    等待以上完成并运行:

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

    等待以上完成并运行:

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

    为每台机器逐一运行。 如果您有一个包含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 

    我做了一点不同,可能是不推荐的方法(不知道)。

    virsh destroy old-vm virsh edit old-vm

    在XML的变化

    1. 域名old-vm到new-vm
    2. 更改UUID保存中的字符/数字并退出。

    virsh list --all

    1老vmclosures

    2个新的vmclosures

    现在取消了老vm的定义

    virsh undefine old-vm