相比于QEMU+KVM的全虚拟化,virtio提供了半虚拟化的能力。在半虚拟时,GuestOS知道自己是虚拟机(我理解应该驱动是经过修改的),即GuestOS安装的是半虚拟化驱动,所以数据直接发送给半虚拟化设备,经过特殊处理,发送给真正的硬件。因此性能要好于全虚拟化,因为全虚拟化时,Guest OS不知道自己是虚拟机,于是像发送普通的IO一样发送数据,被Hypervisor拦截,并经由QEMU转发给真正的硬件。

那么通过Openstack安装的环境如何查看是否使用了半虚拟化设备呢,比如半虚拟化的硬盘、半虚拟化的网络?

这些应该都是在启动参数中有说明的,这里仅仅是记录学习过程。

  • 确认硬盘是否为半虚拟化设备:

------使用virtio_blk驱动的硬盘显示为/dev/vda,使用IDE硬盘显示为/dev/had,使用SATA硬盘显示/dev/sda
------如下是一个实例,可以看出采用了半虚拟化硬盘:



  • 确认网络设备是否为半虚拟化设备:

使用ethtool -i 设备名 查看,当driver为virtio_net时说明为半虚拟化的。





Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐