2024年3月29日发(作者:)
I/O虚拟化
1.I/O虚拟化三种方式:全虚拟化、半虚拟化和硬件辅助虚拟化
1.1全虚拟化:通过VMM模拟I/O设备(磁盘和网卡等)实现虚拟化。Guest OS所
能看到就是一组统一的I/O设备。VMM截获Guest OS对I/O设备的访问请求,然后通
过软件模拟真实的硬件。这种方式对Guest而言非常透明,无需考虑底层硬件的情况。
1.2半虚拟化:通过前端(Front-End)/后端(Back-End)模拟实现虚拟化。Guest OS
中的驱动程序为前端,VMM提供的与Guest通信的驱动程序为后端。前端驱动将
Guest OS的请求通过与VMM间的特殊通信机制发送给VMM的后端驱动,后端驱动在
处理完请求后再发送给物理驱动。
1.3硬件辅助虚拟化:主要有三种网卡:VT-d、VMDq直通和SR-IOV。
1)VT-d:由于基于软件的I/O虚拟化要求非常高的设备模拟开销,硬件辅助的I/O
虚拟化很关键。Intel的VT-d支持I/O DMA传输的重映射和设备产生的中断。VT-d结构
提供了支持多用途模型的灵活性,可以运行未修改的、特殊目的的、虚拟化感知的客户操
作系统。
2)VMDq:VMM在服务器的物理网卡中为每个虚机分配一个独立的队列,虚机出
来的流量可直接经过软件交换机发送到指定队列上,软件交换机无需进行排序和路由操作。
VMM和虚拟交换机仍然需要将网络流量在VMDq和虚机之间进行复制。
3)SR-IOV:通过创建不同虚拟功能(VF)的方式,给虚拟机的就是独立网卡,实
现虚拟机直接跟硬件网卡通信,不再经过软件交换机,减少了Hypervisor层的地址转换。
2.I/O虚拟化的实现:全设备模拟、半虚拟化和直接I/O
2.1全设备模拟:实现I/O虚拟化的第一种方式,该方法可以模拟一些知名的真实设
备。一个设备的所有功能或总线结构(如设备枚举、识别、中断和DMA)都可以在软件
中复制。该软件作为虚拟设备处于VMM中,客户操作系统的I/O访问请求会陷入到VMM
中,与I/O设备交互。体系结构如图:
1)客户设备驱动
2)虚拟设备:①实际设备建模②简单虚拟友好设备建模
3)虚拟设备和虚拟栈之间的通讯机制
4)虚拟化I/O栈:
①客户I/O地址翻译到主机地址
②处理虚拟机之间的通讯
③复用从或到物理设备的I/O请求
④提供企业级I/O特性
5)物理设备驱动


发布评论