虚拟化技术源于大型机,最早可以追溯到上世纪六、七十年代大型机上的虚拟分区技术,即允许在一台主机上运行多个操作系统,让用户尽可能充分地利用昂贵的大型机资源。随着技术的发展和市场竞争的需要,虚拟化技术向小型机或UNIX服务器上移植,只是由于真正使用大型机和小型机的用户还是少数,加上各厂商产品和技术之间的不兼容,使得虚拟化技术不太被公众所关注。(注:由于X86架构在设计之初并没有考虑支持虚拟化技术,它本身的结构和复杂性使得在其之上进行虚拟化非常困难,早期的X86架构并没有成为虚拟化技术的受益者)
20世纪90年代,以VMware为代表的部分虚拟化软件厂商采用一种软件解决方案,以VMM(Virtual Machine Monitor, VMM 虚拟机监视器)为中心使X86服务器平台实现虚拟化。然而这种纯软件的“全虚拟化”模式,每个Guest OS(客户操作系统)获得的关键平台资源都要由VMM控制和分配,需要利用二进制转换,而二进制转换带来的开销使得“完全虚拟化”的性能大打折扣。为解决性能问题,出现了一种新的虚拟化技术“半虚拟化”,典型代表是Xen,即不需要二进制转换,而是通过对客户操作系统进行代码级修改,使定制的Guest OS获得额外的性能和高扩展性,但是修改Guest OS也带来了系统指令级的冲突及运行效率问题,需要投入大量优化的工作。当前,虚拟化技术已经发展到了硬件支持的阶段,“硬件虚拟化”技术就是把纯软件虚拟化技术的各项功能用硬件电路来实现,可减少VMM运行的系统开销,可同时满足CPU半虚拟化和二进制转换技术的需求,使VMM的设计得到简化,进而使VMM能够按通用标准进行编写。硬件辅助虚拟化技术除了在处理器上集成硬件辅助虚拟化指令,同时提供I/O方面的虚拟化支持,最终将实现整个平台的虚拟化。KVM虚拟化即支持硬件辅助虚拟化技术,也支持半虚拟化技术,利用virtio架构在虚拟机中实现半虚拟化设备而无需对Guest操作系统本身进行修改,以获得高性能体验和灵活性。X86虚拟化技术的实现和发展,向人们展示了虚拟化应用的广阔前景。
精彩