如何使用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说明的<transient/>
字段中添加<disk>
标记。
当我尝试时,我得到了这个令人失望的答案:"libvirtError: unsupported configuration: transient disks not supported yet"
。
这个功能真的“还不支持”,还是我错过了什么?文档让我觉得应该支持这个。
任何与C或Python绑定,virsh或virt-manager相关的答案都将受到高度赞赏!
答案 0 :(得分:5)
如果您使用的是virsh
,那么命令是:
define
- 此命令将XML文件作为其参数,并使域名为libvirt(您可以使用其名称或UUID引用该域名)。
start
- 此命令将域名或UUID作为其参数,并启动(引导)域。
create
- 此命令将XML文件作为其参数,并使用该文件中描述的设置创建(启动)域。根据libvirt是否知道域(之前使用该UUID定义),它可能会导致两件事:
如果已经定义了,则已知域被标记为已启动,它是持久域,但它是以提供的设置启动的,而不是使用它们定义的设置启动的。
如果未定义,则启动的域现在是一个临时域(当它被销毁,关闭等时会消失)。
undefine
- 此命令采用域名或UUID(或ID,如果它已启动)并使其不知道libvirt,但如果该域正在运行它不会破坏它,只需标记它是短暂的。
在C中,virsh用于这些命令的API是:
define
- virDomainDefineXML start
- virDomainCreate create
- virDomainCreateXML undefine
- virDomainUndefine 注意:
名称可能有点令人困惑,但由于向后兼容,因此不会出现Xen时间。
大多数提及命令的参数可能会改变行为,这可能会导致使用不同的C函数。