犹豫了很久,最后再将几个很重要的概念,可能有人会说我只负责丢新名词,却不负责解释,实在不好意思了,看看以后有没有时间了。
Intel VT作为Chip-Assisted的虚拟技术,可以同时提升虚拟化效率和安全性。IA32上的VT技术称为VT-x,而Itanium平台上得VT技术称为VT-i。并使得在IA32架构的CPU可以运行64位的虚拟机。
下面这张图我是直接引用别人的,呵呵偷懒了。VT-x将IA32的操作扩展成了VMX root operation和VMX non-root operation两个部分,VMX root operation更传统的IA32没有很大的区别,给VMM/Hypervisor使用,而VMX non-root operation是一个处在VMM控制下的IA32环境。这两个部分都可以支持所有的Privileges Levels,这样在VMX non-root operation中的虚拟机就能完全地利用Privileges 0,而且主从操作系统有效地分隔。在图中黄线下面是root operation而黄线的上面就是non-root operation。
这样VMM不用再来模拟运行那些Ring0的指令,Ring Aliasing问题就得到了很好的解决,大大地提升运行效率。而这个设计又解决Ring Compression问题,安全性也搞定了,真是一箭双雕,每每看到这个设计我都忍不住拍案叫绝。
对于虚拟机的性能提升,仅仅提升CPU的运算速度还是不够的。把数据传递到CPU的IO系统才是系统性能真正的瓶颈。当前虚拟机主要是采用摸拟I/O设备和额外软件界面两种方式。摸拟I/O设备是指VMM模拟一个完整的I/O设备,这样虚拟机可以直接使用真实的驱动程序,功能完整(Virtual PC模拟真实的S3 Virge 3D显卡就是这样实现的),缺点大家想想就知道了,影响性能。额外软件界面是指VMM软件直接提供一系列的设备接口,这样提升了虚拟化的效率,但是兼容性有所降低。我看到过一个说法,这个很像windows系统中的DirectX技术。
这样的局面的出现,意味着一定有一个超级英雄会来解救水火中的我们,他就是上一讲中的Intel Virtualization Technology for Directed I/O(Intel VT-d)。本来想上一次讲后来又准备放弃,这个还是讲了好了。和CPU的解决方案一样,Intel VT-d技术是一种基于North Bridge北桥芯片/MCH的硬件辅助虚拟化技术。DMA直接内存存取和IRQ中断请求是解决I/O设备与虚拟机数据交换的关键问题。传统的I/O memory management units(I/O内存管理单元)集中的管理了传统的DMA和其他特别的DMA(包括AGP GART、TPT等),仅仅通过内存地址来区分设备,这样容易实现却难以隔离。VT-d通过DMA Remapping实现了多个DMA保护区域来实现DMA虚拟化。在中断方面,有两种方式中断控制路由和通过DMA写请求直接发送消息中断。由于需要在DMA请求中嵌入目标的内存地址,这个构架需要访问所有的内存地址,无法实现隔离。VT-d的interrupt-remapping架构在写DMA请求的时候不写内存地址而是使用一个消息ID,通过一个表,可以通过ID来区分虚拟机区域。直接I/O设备分配和I/O设备共享这两中全新的方式取代了传统的而技术。直接I/O设备分配中虚拟机直接分配物理设备给虚拟机,虚拟机中的驱动和硬件设备直接通讯。这样VMM中不用在运行驱动,但是需要硬件支持,来隔离和保护硬件资源只给指定的虚拟机使用并具备多个I/O容器分区分给多个虚拟机。I/O设备共享需要设备支持多个功能接口,每个接口可以单独分配给一个虚拟机,这个模型无疑可以提供非常高的虚拟化性能表现。
终于很纠结的把这些内容讲完了,不知道大家看完后是清楚了还是更加糊涂了。:)有问题mail我好了。还有就是下面的章节我不在讲解这些纠结的技术问题,专注在虚拟化技术的具体应用。