kvm之虚拟化原理-IO虚拟化【理论知识】

1、基础知识

1.1、常见io设备

对服务器来说的必备IO设备:
外存设备: 硬盘、光盘、U盘 
网络设备: 网卡 显示设备: VGA
键盘鼠标: ps
/2, usb

1.2、io原理(以网卡为例)

主机用户空间中的一个程序,发出一个信息报文,通过系统调用,由内核调用该设备的驱动程序,由主机硬件中的网卡设备将信息报文输出

2、虚拟机操作宿主机的资源的方式

实现虚拟机操作宿主机的资源的方式很多,主要是通过以下几种方式来实现:模拟、半虚拟化、透传、硬件虚拟化

2.1、模拟

完全使用软件来模拟真实的常见的硬件使用场景。
虚拟主机用户空间中的一个程序,发出一个信息报文,通过系统调用,由内核调用该设备的驱动程序,由主机硬件中的网卡设备将信息报文输出,该信息交给宿主机的hypervisor上对应的网卡设备,然后把该网卡
接收到的信息暂存到IO栈中,然后调用宿主机的网卡设备驱动,经宿主机网卡将该信息报文发出去。
 
缺点:
 虚拟机上的设备驱动以及虚拟网卡发送信息所做的工作和hypervisor是重复的。
 物理硬件的性能发挥60%左右

2.2、半虚拟化

借助硬件虚拟化功能,将设备驱动分成两部分,前端驱动和后端驱动,前端驱动是虚拟机专用的,后端驱动是统一使用的。
虚拟主机用户空间中的一个程序,发出一个信息报文,通过系统调用,内核不做任何处理,直接由该设备的虚拟驱动程序--前端驱动,该信息交给宿主机的hypervisor上对应的网卡设备,然后把该网卡接收到的信
息暂存到IO栈中,然后调用网卡驱动--后端驱动,经宿主机网卡将该信息报文发出去。
这样就省略了虚拟机中重复调用驱动发送信息的动作。
可以使用物理硬件95%的性能
 
缺点:
 前后端驱动的方法只适用于硬盘和网卡设备,显卡设备的虚拟,一般使用frame buffer机制来实现。目前显卡的虚拟,可以在Centos7上使用半虚拟化方式来实现。

2.3、透传

宿主机上有多块盘,每个虚拟机直接使用一块专用盘,像这种场景方法就叫IO透传。前提是我们的硬件必须支持响应的透传技术.
宿主机上的hypervisor管理所有的存储设备,然后分配给VM虚拟机一个专用的存储设备,虚拟机使用的时候,直接通过内核空间中的设备驱动,操作该分配的存储设备。

2.4、硬件虚拟化

传统的x86架构的设备有一个集中式的管理设备叫DMA(直接内存访问),它是一种加速io访问性能的方式,在它内部有一个IOMMU,它可以进行IO寄存器和IO设备端口的自动映射工作。
如果在宿主机用DMA,所有的虚拟机都连接一个DMA,所以虚拟机io设备的调用必须在IOMMU级别上实现隔离,VT-d就是基于北桥的硬件辅助的虚拟化技术,提高了IO设备的可靠性、灵活性和性能。

 

posted @ 2023-05-22 19:04  小粉优化大师  阅读(151)  评论(0编辑  收藏  举报