高级虚拟化技术之硬件辅助虚拟化虚拟化
虚拟化技术的发展非常快速。从Windows7发布时的”XP MODE”事件,让许多以前没接触过硬件虚拟化的IT从业者第一次认识到cpu虚拟化所必备的”VT-X”技术的重要性。但其实AMD的处理器从双核时代开始就一直默认支持VT-X(AMD称为AMD-V,这里我们统称VT-X),大部分便宜的主板都默认可以开启cpu硬件虚拟化,此事件因此改变了Intel一直以来高高在上的形象,在之后的cpu新品里一律加入”VT-X”功能。
VT-X其实是CPU的扩展指令集,这个指令集是专门用于民用级服务器的虚拟化。具体的技术细节这里就不多加详述。民用级虚拟化技术发展了这么多年,其局限性也渐渐的浮现出来。
硬件利用效率低下。IT技术人员可能都会发现,主流的虚拟化技术,无论是微软的Hyper-V还是VMware的VShpere,虚拟机都无法做到充分利用硬件的效能,特别是在磁盘效率和网络效率上。随着虚拟化技术的发展,在内存利用效能上,INTEL和AMD这两个主流民用的硬件厂商已经提供了EPT等扩展内存虚拟化辅助技术,内存的虚拟化技术提高可以随着CPU技术的改进而提升(从CORE I3以后的CPU,内存控制器已经集成在CPU内部),但磁盘和网络的效能却没有办法。
外围设备的支持困难。如无线网卡、USB加密设备等等。这些硬件设备在虚拟化系统里面没法使用。虽然设备映射功能也在逐渐完善,但并不能解决这些问题。
GPU的利用。GPU的并行运算越来越占据重要的地位,它可以补充许多x86处理器的软肋。特别是AMD公司的GPU技术已经完全和CPU结合在一起,INTEL在这方面也逐渐趋向融合。
针对上面的这些虚拟化缺陷,硬件辅助虚拟化也不断发展。INTEL提出了VT-D(包括VT-C和IO-SRV等),AMD也相应发展了IOMMU的虚拟化技术。以下统称VT-D。
总的来说,VT-D和IOMMU都是高级虚拟化的一种,一般它们只出现在服务器级别的硬件设备上。 VT-D简单的来说,是将虚拟化技术扩展到主板上,包括传统的南北桥设备,当然,现在的主板已经不这么称呼了。VT-D可以讲主板的集成或者扩展设备直接映射到虚拟机上。如无线网卡,USB扩展卡,VIDEO视频采集卡等等。从这方面来说,AMD的IOMMU技术和VT-D是相同的。如VSphere 从4.0版本开始,已经初步支持,它叫做DirectPath IO,直通技术。
Hyper-V直到 Windows Server 2012才正式支持VT-D。不过Hyper-V却抢先一步支持了SR-IOV的虚拟化技术。SR-IOV是一种特殊的VT-D技术,它不是直接将硬件映射至虚拟机,而是需要硬件设备支持SR-IOV,如网卡。然后通过特殊的虚拟化驱动来将硬件设备虚拟映射至虚拟机,并且相应的主板需要支持相应的PCI标准才能支持SR-IOV。Hyper-V里叫做“单根虚拟化”技术。
通过介绍,了解了高级虚拟化技术的硬件虚拟化,我们可以利用这些技术来做什么呢?比如无线路由,视频采集等;或者对网络延迟非常敏感的场合,SR-IOV能极大的提升网络效能,因为它直接驱动网卡,可以支持高级服务器网卡的汇聚,冗余,故障转移等等高级网络技术。