通过virsh list命令能看到虚拟机的列表: [root@compute2 ~]# virsh list Id 名称 状态 ---------------------------------------------------- 60 instance-00000050 running 64 instance-00000054 running 这里要修改的是第二列, 虚拟机的名称。 步骤: 1.查看虚拟机信息: [root@compute2 ~]# virsh dominfo 64 Id: 64 名称: instance-00000054 UUID: 870b83a2-3c93-4244-8d4e-385268325e88 OS 类型: hvm 状态: running CPU: 4 CPU 时间: 12.2s 最大内存: 65536 KiB 使用的内存: 65536 KiB 持久: 是 自动启动: 禁用 管理的保存: 否 安全性模式: none 安全性 DOI: 0 注意虚拟机信息中的“持久:”项,这里值为“是”,所以在修改完成后, 需要定义一下虚拟机的xml,执行步骤4 如果不是,可以跳过步骤4。 2.修改xml信息: [root@compute2 ~]# vim /var/run/libvirt/qemu/instance-00000054.xml ... ... <libDir path='/var/lib/libvirt/qemu/domain-64-instance-00000054'/> <channelTargetDir path='/var/lib/libvirt/qemu/channel/target/domain-64-instance-00000054'/> <domain type='kvm' id='64'> <name>instance-00000054</name> <uuid>870b83a2-3c93-4244-8d4e-385268325e88</uuid> <metadata> ... ... 修改为: ... ... <libDir path='/var/lib/libvirt/qemu/domain-64-instance-00000054'/> <channelTargetDir path='/var/lib/libvirt/qemu/channel/target/domain-64-instance-00000054'/> <domain type='kvm' id='64'> <name>instance-00000054-rename</name> <uuid>870b83a2-3c93-4244-8d4e-385268325e88</uuid> <metadata> ... ... 保存,退出。 3.重启libvirtd服务: [root@compute2 ~]# systemctl restart libvirtd [root@compute2 ~]# virsh list Id 名称 状态 ---------------------------------------------------- 60 instance-00000050 running 64 instance-00000054-rename running 可以看到虚拟机的名字已经被修改了。 4.将虚拟机的持久状态修改为“是”: 查看虚拟机的信息: [root@compute2 ~]# virsh dominfo 64 Id: 64 名称: instance-00000054-rename UUID: 870b83a2-3c93-4244-8d4e-385268325e88 OS 类型: hvm 状态: running CPU: 4 CPU 时间: 21.4s 最大内存: 65536 KiB 使用的内存: 65536 KiB 持久: 否 自动启动: 禁用 管理的保存: 否 安全性模式: none 安全性 DOI: 0 可以看到, 这里虚拟机信息“持久:”值为“否”, 与修改前不一致,所以定义一下这个虚拟机: cp /etc/libvirt/qemu/instance-00000054.xml /etc/libvirt/qemu/instance-00000054-rename.xml vim /etc/libvirt/qemu/instance-00000054-rename.xml <domain type='kvm'> <name>instance-00000054</name> ... ... 修改为: <domain type='kvm'> <name>instance-00000054-rename</name> ... ... [root@compute2 ~]# virsh define /etc/libvirt/qemu/instance-00000054-rename.xml 再次查看虚拟机状态: [root@compute2 ~]# virsh dominfo 64 Id: 64 名称: instance-00000054-rename UUID: 870b83a2-3c93-4244-8d4e-385268325e88 OS 类型: hvm 状态: running CPU: 4 CPU 时间: 21.4s 最大内存: 65536 KiB 使用的内存: 65536 KiB 持久: 是 自动启动: 禁用 管理的保存: 否 安全性模式: none 安全性 DOI: 0 5.删除没用的文件: rm -rf /etc/libvirt/qemu/instance-00000054.xml rm -rf /var/run/libvirt/qemu/instance-00000054.* 原理: libvirtd守护进程在启动的时候, 会通过 /var/run/libvirt/qemu/目录下的xml文件,加载正在运行的虚拟机配置到内存中。 所以这里直接修改该目录下的相应虚拟机的配置信息,重启libvirtd后,修改的配置就加载到libvirtd的内存中了。 引申: 猜测虚拟机的其它内存中的配置信息,也可以通过这种方式进行修改,包括uuid等部分配置信息。 存在问题: 这个步骤在openstack环境下有一个问题,按照步骤修改完成后,通过openstack删除这个虚拟机会失败,nova-compute的日志 会报错误,这里猜测是修改的步骤不完善,导致这里出错,具体的原因在需要的时候再track nova-compute的错误,找到需要完善的地方。
但谈何容易。