如何使用libvirt创建瞬态域? (使用QEMU / KVM作为后端)
该文档讨论了此链接上的瞬态域和持久域之间的区别:http://wiki.libvirt.org/page/VM_lifecycle#Transient_guest_domains_vs_Persistent_guest_domains
尽管如此,我还没有找到任何关于如何创建一个的具体例子 .
我找到的唯一指针是在这封电子邮件中:https://www.redhat.com/archives/libvirt-users/2011-August/msg00057.html,维护者建议在XML描述的 <disk>
字段中添加 <transient/>
标记 .
当我尝试时,我得到了这个令人失望的答案: "libvirtError: unsupported configuration: transient disks not supported yet"
.
这个功能真的“还不支持”,还是我错过了什么?该文档让我觉得应该支持这一点 .
任何与C或Python绑定,virsh或virt-manager相关的答案都将受到高度赞赏!
1 回答
使用virsh
如果您使用
virsh
,则有命令:define
- 此命令将XML文件作为其参数,并使域名为libvirt(您可以使用其名称或UUID引用该域) .start
- 此命令将域名或UUID作为其参数,并启动(引导)域 .create
- 此命令将XML文件作为其参数,并使用该文件中描述的设置创建(启动)域 . 根据libvirt是否知道域(之前使用该UUID定义),它可能会导致两件事:如果已经定义了,则已知域被标记为已启动,它是持久域,但它是以提供的设置启动的,而不是使用的设置启动的 .
如果没有定义,域启动现在是一个瞬态域(当它被销毁,关闭等时它会消失) .
undefine
- 此命令采用域名或UUID(或ID,如果's started) and makes it unknown to libvirt, but if that domain is running it doesn' t将其销毁,只需将其标记为瞬态 .C函数
在C中,virsh用于这些命令的API是:
define
- virDomainDefineXMLstart
- virDomainCreatecreate
- virDomainCreateXMLundefine
- virDomainUndefine笔记:
这些名称可能有点令人困惑,但由于向后兼容性,它可以保留Xen时间 .
大多数提及命令的参数可能会改变行为,这可能会导致使用不同的C函数 .