我如何在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
virsh
在domrename
版本中实现了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的变化
virsh list --all
1老vmclosures
2个新的vmclosures
现在取消了老vm的定义
virsh undefine old-vm