从VT-x到VT-d Intel虚拟化发展蓝图
当前非常热门的Virtualization虚拟化技术的出现和应用其实已经有数十年的历史了,在早期,这个技术主要应用在服务器以及大型主机上面,现在,随着PC性能的不断增长,Virtualization也开始逐渐在x86架构上流行起来。虚拟化技术将各种资源虚拟出多台主机,以提高这些资源的共享率和利用率
虚拟化可以将IT环境改造成为更加强大、更具弹性、更富有活力的架构。通过把多个操作系统整合到一台高性能服务器上,最大化利用硬件平台的所有资源,用更少的投入实现更多的应用,还可以简化IT架构,降低管理资源的难度,避免IT架构的非必要扩张。客户虚拟机的真正硬件无关性还可以实现虚拟机的运行时迁移,可以实现真正的不间断运行,从而最大化保持业务的持续性,而不用为购买超高可用性平台而付出高昂的代价。
和Sun上的虚拟化技术(CPU分区)比起来,x86上的虚拟化要落后不少的,然而确实在不断进步着,在数年前,x86上还没有什么硬件支持,甚至连指令集都不是为虚拟化而设计,这时主要靠完全的软件来实现虚拟化,当时的代表是VMware的产品,以及尚未被Microsoft收购Connectix开发的Virtual PC,在服务器市场上应用的主要是VMware的产品,包括GSX Server和稍后的ESX Server,这些软件虚拟化产品在关键指令上都采用了二进制模拟/翻译的方法,开销显得比较大,后期出现了Para-Virtualization部分虚拟化技术,避免了一些二进制转换,性能得到了提升,不过仍然具有隔离性的问题。
今天,虚拟化技术的各方面都有了进步,虚拟化也从纯软件逐深入到处理器级虚拟化,再到平台级虚拟化乃至输入/输出级虚拟化,代表性技术就是Intel Virtualization Technology for Directed I/O,简写为Intel VT-d,在介绍这个Intel VT-d之前,我们先来看看x86硬件虚拟化的第一步:处理器辅助虚拟化技术,也就是Intel Virtualization Technology,分为对应Itanium平台的VT-i和对应x86平台的VT-x两个版本。AMD公司也有对应的技术AMD-V,用于x86平台。我们介绍的是x86平台上的VT-x技术,VT-i技术原理上略为相近。
纯软件虚拟化主要的问题是性能和隔离性。Full Virtualization完全虚拟化技术可以提供较好的客户操作系统独立性,不过其性能不高,在不同的应用下,可以消耗掉主机10%~30%的资源。而OS Virtualization可以提供良好的性能,然而各个客户操作系统之间的独立性并不强。无论是何种软件方法,隔离性都是由Hypervisor软件提供的,过多的隔离必然会导致性能的下降。
|