Virt Driver模块介绍

Nova本身并不提供虚拟化技术,只是借助了各种主流的虚拟化技术,比如Xen、KVM等,实现虚拟机的创建与管理,因此作为Nova的核心,nova-compute需要和不同的Hypervisor进行交互。
各种Hypervisor的支持通过Virt Driver的方式实现,比如Libvirt Driver,各种Virt Driver的实现位于nova/virt目录。
|--disk
|--hyperv
|--ironic
|--libvirt
|--vmwareapi
|--xenapi
除了提供一些工具函数的disk目录,以及提供Baremetal支持的ironic目录,目前Nova中共实现了Hyperv、Libvirt、VMware以及XenAPI四种Virt Driver。
下图所示为nova-compute通过Libvirt Driver与KVM的交互流程。
Virt Driver模块介绍
nova-compute需要部署在安装了Linux+KVM的主机上,nova-api会通过RPC机制调用Compute API,然后nova-compute调用Libvirt提供的API实现虚拟机的管理。
Openstack并没有对上述的几种Hypervisor都有很好的支持,而是根据支持的程度划分成了三个等级:Group A,Group B以及Group C。
Group A表示有最好的支持,有着很完备的测试,目前处于这个等级的只有Libvirt+KVM。
Hyper-v、VMware以及XenServer 6.2属于Group B,也是经过完备测试但是需要一个额外的测试环境保证质量,比如需要VMware、Citrix提供第三方测试环境。
其他的包括Libvirt+Xen、Libvirt+LXC等是属于Group C,没有经过完备的功能测试。
我们可以使用配置选项compute_driver指定哪个Virt Driver,默认是Libvirt Driver。
compute_driver=libvirt.libvirtDriver