现在对Windows服务器版核心处理组件进行虚拟化仅仅是个开始。SR-IOV(Single root I/O virtualization)技术有可能允许Windows操作系统和微软的Hyper-V或VMware的ESXi等hypervisor对服务器的磁盘I/O设备,如现在对网卡设备一样进行封装,管理甚至共享。正如传统虚拟化技术能提高CPU和内存的利用率和灵活性一样,I/O虚拟化技术也能极大地提高I/O设备的利用率。
现在磁盘设备I/O虚拟化大的挑战就是怎样释放被hypervisor强制占用的服务器资源——减少或消除对传统服务器的处理器使用以及从物理外围I/O设备到虚拟机监视器再到虚拟主机系统之间的数据流传输时间延迟。现在已经出现如Single root I/O virtulization)(SR-IOV)这样的能减少数据传输时间,并且虚拟系统能直接连接到I/O外接设备的关键技术。本文主要对SR-IOV技术进行概述,同时介绍使用中的一些基本概念。
尽管Windows Server 2012支持SR-IOV技术,但它不是原创于微软或Windows Server操作系统,相反SR-IOV做为外围PCIe规范来源于 PCI Special Interest Group组织。现在有很多外围设备使用PCIe协议,但SR-IOV技术现主要在网络外围设备上使用。
SR-IOV技术现已可以开始把具有SR-IOV功能的设备定义成为一种外围设备物理功能模块(PF)并且使之能与主机hypervisor系统直接相互交互信息。PF主要用于在服务器中告诉hypervisor系统关于物理PCI设备运行的状态是否可用。
在操作系统层,现在能在所有的外围物理设备PF下,创建不只一个的虚拟功能设备(VFs)。VFs能共享外围设备的物理资源(像网卡端口或网卡缓存空间)并且与服务器上的虚拟机系统进行关联。它能允许一个物理PCIe设备把自身虚拟为多个虚拟PCIe设备。
每个PF和VF都会收到唯一的PCIe标识符,这样就允许hypervisor系统中的虚拟内存管理器来区分不同的网络流量,并且能使用DMA内存直接访问技术进行重新映射内存地址,在外围设备和目标虚拟主机之前进行数据迁移时进行地址转换。这样从根本上避免了hypervisor系统所带来的处理开销和延时。
使用SR-IOV技术,虚拟机系统能经过DMA直接与PCIe设备一起工作,所以这种方式就不需在经过hypervisor系统时使用虚拟传输接口、虚拟交换机或其它翻译器。SR-IOV直接交互技术在实际使用中的通信性能已经接近非虚拟化水平。