IO设备虚拟化技术背景介绍
随着云计算技术的发展,IO设备虚拟化经历了从全虚拟化(full-virtualization)到半虚拟化(para-virtualization),到设备直通的变革。Intel® Virtualization Technology for Directed I/O(Intel VT-d)是英特尔发布的IO虚拟化技术。通过Intel VT-d,可以把物理设备直通(pass-through)给虚拟机,使虚拟机直接访问物理设备,其性能近似无虚拟机环境下的IO性能。
SR-IOV(Single Root I/O Virtualization and Sharing)是PCI标准组织制定的在PCI设备级对虚拟化进行的支持。基于PCI SR-IOV技术,同一个PCIe设备可以实现逻辑上隔离的多个轻量级 “PF(physical function)”——VF(virtual function) 。同一个PF创建的多个VF可以独立隔离地分配给不同的虚拟机或者容器,极大地提高了性能和资源使用效率。高性能IO设备如网卡、存储、GPU等都支持SR-IOV。
随着容器的广泛使用,实例的密度增加,使用VF存在以下限制:
1)可扩展性差:由于VF是通过BDF号进行隔离的,所以每个VF都需要各自的配置空间,由此产生的额外开销较大;且硬件资源上的VF数量有限,比如英特尔E810的网卡可以创建的最大VF数量为256个。
2)灵活性不好:VF资源需要在使用前一次性创建和销毁所有的实例。
3)设备快照不容易创建:因为设备是直通给虚拟机的,hypervisor对于设备状态是无感知的,因此难以记录设备状态。
本文介绍的Intel® Scalable I/O Virtualization (Intel Scalable IOV)是另一种硬件辅助的I/O设备直通技术。本文将分别从硬件功能、软件实现的角度介绍Intel Scalable IOV,并以Intel E810网卡为例给出Intel Scalable IOV实现设备直通的两个案例。
Intel® Scalable I/ O Virtualization技术简介
Intel® Scalable I/O Virtualization(Intel Scalable IOV)是针对下一代 CPU 服务器平台的虚拟化解决方案,是一种硬件辅助的I/O设备直通技术。它采用了现有的 PCI Express 功能结构,实现了高性能和更灵活的I/O设备共享的架构。
系统平台支持
系统平台方面,Intel VT-d 3.0添加了对Intel Scalable IOV的支持。IOMMU提供DMA重映射技术,把不同设备提供的IOVA地址转换成物理地址,用于设备DMA。
Intel IOMMU实现基于PASID粒度的地址转换。平