如何使用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绑定(bind),virsh或virt-manager相关的任何答案将不胜感激!

最佳答案

使用virsh

如果您使用virsh,那么可以使用以下命令:

  • define-此命令将XML文件作为其参数,并使libvirt知道该域(您可以使用其名称或UUID来引用该域)。
  • start-此命令将域名或UUID作为其参数,并启动(引导)域。
  • create-此命令将XML文件作为其参数,并使用该文件中描述的设置来创建(启动)域。根据该域对于libvirt是否已知(先前使用该UUID定义),可能会导致两件事:
  • (如果已定义),则将已知域标记为已启动,它是持久性域,但它是使用提供的设置(而不是使用其定义的设置)启动的。
  • 如果未定义
  • ,则启动的域现在是一个 transient 域(在销毁它时,它会消失,关闭等)。
  • undefine-此命令采用域名或UUID(如果已启动则为ID),并使其对libvirt未知,但如果该域正在运行,则不会破坏它,只是将其标记为 transient 。

  • C函数

    在C语言中,virsh用于这些命令的API是:
  • define-virDomainDefineXML
  • start-virDomainCreate
  • create-virDomainCreateXML
  • undefine-virDomainUndefine

  • 笔记:
  • 名称可能有些困惑,但是由于向后兼容,因此Xen时代起就不使用它了。
  • 这些提及命令中的大多数都具有可以改变行为的参数,这些参数可能导致为此目的使用不同的C函数。
  • 关于virtualization - 如何在libvirt中创建一个临时域?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20296328/

    10-10 20:57