libvirt如何与kvm通信?

时间:2016-08-22 19:22:51

标签: sockets dbus kvm abi libvirt

我正在努力更好地理解libvirt如何与KVM通信,以便能够从我正在开发的主机上的单个进程中启动KVM实例。

它是否像qemu-kvm一样使用ioctl?它是否使用某种远程消息传递,如dbus或直接消息传递到本地套接字(我倾向于远离本地套接字)?或者它是否直接绑定到KVM的内核ABI中?

是否有可能(如可能在内核之上,而不是在内核中)(而不是最坏的想法)绕过libvirt并通过libvirt使用的方式直接与KVM对话? (这部分只是一种好奇心)

1 个答案:

答案 0 :(得分:2)

从技术上讲,libvirt本身根本不与KVM对话。 KVM是QEMU用于提供CPU虚拟化的内核模块。 Libvirt管理QEMU并让QEMU处理KVM。可以编写不同的用户空间应用程序来使用KVM - kvmtool是使用KVM内核模块的QEMU的一种替代方案。在启动初始流程后,Libvirt通过QEMU的监控协议与QEMU进行了会谈。