5

我想知道是否有一个 KVM API,它允许您使用简单的命令从 python 脚本启动 KVM 虚拟机。

我的 Python 脚本执行一系列检查以查看我们是否需要启动特定 VM,如果需要,我想启动 VM。

我现在需要的只是找到 API 调用,但我无法在 libvirt 网站中找到一个简单的调用来启动它们。有人知道这是否可能吗?

4

4 回答 4

9

您可以使用 libvirt 的 python API 绑定中的 create() 函数:

import libvirt

#connect to hypervisor running on localhost
conn = libvirt.open('qemu:///system')

dom0 = conn.lookupByName('my-vm-1')
dom0.create()

基本上,python API 是 C API,由 libvirt.C_API_CALL 减去 virConnect 部分或 conn.C_API_CALL 减去 virDomain 部分调用。

请参阅libvirt API 创建调用此处

于 2012-09-04T08:26:30.640 回答
2

最简单的方法,虽然可能不是最好的推荐方法是使用 os.system 使用 python 来调用 qemu-kvm。这种方法的缺点是您必须手动管理 VM。

使用 libvirt,您首先必须通过调用 virt-install 来定义一个域。

virt-install \
         --connect qemu:///system \
         --virt-type kvm \
         --name MyNewVM \
         --ram 512 \
         --disk path=/var/lib/libvirt/images/MyNewVM.img,size=8 \
         --vnc \
         --cdrom /var/lib/libvirt/images/Fedora-14-x86_64-Live-KDE.iso \
         --network network=default,mac=52:54:00:9c:94:3b \
         --os-variant fedora14

我直接从http://wiki.libvirt.org/page/VM_lifecycle

创建域后,您可以使用它virsh start MyNewVM来启动 VM。使用这种方法,管理虚拟机要容易得多。

于 2012-09-04T07:30:43.017 回答
0

如果需要管理 KVM,可以使用 virsh 命令。这是 virsh 命令的列表;

列表已删除,因为它的格式不正确

您可以使用 virsh 的帮助列出所有选项,其中 start 选项可能会对您有所帮助。

如果您使用 python 脚本来管理您的 KVM,我建议您也通过以下脚本。它会给你一个好主意。http://russell.ballestrini.net/series/virt-back/

于 2012-11-02T04:28:12.787 回答
0

似乎使用 libvirt 或调用 [qemu-]kvm 命令是 pythonistas 的两种选择。您可能会在 kvmtools 项目代码中找到有趣的片段:http ://www.linux-kvm.org/page/Kvmtools (参见 ./kvmtools/kvm/build_command.py 和 ./kvmtools/kvm/action.py 中的 kvm_boot_action使用子进程模块而不是 os.system)

于 2012-09-10T09:17:01.913 回答