修改virsh虚拟机domain标签添加qemu命名空间被自动回退求助
解决方法
出现该问题的核心原因是libvirt会自动清理XML中未被实际使用的命名空间声明,仅单独添加xmlns:qemu命名空间、没有对应qemu:前缀的配置项时,libvirt保存配置时会自动删除冗余的命名空间,导致你看到修改被回退。
按照以下步骤操作即可正常保留修改:
- 第一步:使用
virsh edit 虚拟机名称打开虚拟机配置文件,不要仅修改头部domain标签,先找到</devices>结束标签,在它之后、</domain>结束标签之前,添加你需要的qemu:commandline配置块,示例如下:
<qemu:commandline> <!-- 此处替换为你实际需要添加的qemu启动参数 --> <qemu:arg value='-device'/> <qemu:arg value='vfio-pci,host=00:1f.3'/> </qemu:commandline>
- 第二步:修改头部的domain标签,添加qemu命名空间声明,修改后内容为:
<domain xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0" type="qemu">
- 第三步:直接保存退出编辑器即可,此时因为配置中已经存在
qemu:前缀的有效配置项,libvirt不会再自动删除对应的命名空间声明,修改会正常生效。
注意事项
- 禁止直接修改
/etc/libvirt/qemu/目录下的原始XML文件,libvirt存在内存缓存机制,直接修改磁盘上的源文件会被缓存内容覆盖,必须通过virsh edit或virt-manager内置的XML编辑功能修改 - 若添加的
qemu:commandline块存在语法错误,libvirt也会拒绝保存配置并回滚到上一个有效版本,修改前可以先校验参数语法是否正确
内容的提问来源于stack exchange,提问作者KCGD
相关产品推荐
相关产品推荐

