- 积分
- 241
- 鸿鹄币
- 个
- 好评度
- 点
- 精华
- 注册时间
- 2014-3-19
- 最后登录
- 1970-1-1
- 阅读权限
- 30
- 听众
- 收听
初级工程师
|
发表于 2014-4-3 12:51:12
|
显示全部楼层
本帖最后由 housefull 于 3-21-2012 01:04 编辑
这张图已经不合时宜了。。。
本人献丑总结一下虚拟化技术,有错误的请指出:
虚拟化技术目前总共可以分为3大类,分别是 全虚拟化, 半虚拟化,硬件辅助虚拟化
x86全虚拟化技术最早是98年由VMware基本实现的,(VMM最早是建立在OS上的)发展到现在其特点是建立在Hypervisor(虚拟层管理器/VMM/Ring 0)之上,由其进行逻辑划分硬件资源,
将OS安装到虚拟层中,让未经修改内核的多个OS以为自己是安装到实际硬件环境中,并且能正常运行。但全虚拟化多年前主要的一个缺点是操作系统/应用的一切指令都要经过Hyperviso进行
二进制转换/管理,这个步骤无形会增加虚拟机性能的损耗和延迟,特别是磁盘性能的损耗,造成以前很多需要高I/O的应用很难被虚拟化(当然,随着x86虚拟化技术的发展,这个情况正在
逐步改善,这方面VMware/Intel做了很大的贡献)。
x86半虚拟化最早是在2004年由开源的Xen实现的,由于它跟Linux的密切关系,最早是通过修改linux内核来让Linux OS感知到虚拟层,也先是由Hypervisor进行逻辑划分硬件资源,但其特点是支持
将能感知虚拟层的虚拟机对主要硬件的操作指令直接发送给硬件来处理,不需要通过Hypervisor层进行二进制转换,那么中间层的损耗就减少了,这在当年是增加虚拟机性能的一个不错的解决方案,
但半虚拟化其也有一定其的限制。
这里要解释一下,VMware也是支持半虚拟化的,不过它支持的硬件与其他有点不同,到目前为止,VMware本身实现了:网卡VMXNet/磁盘Paravirtual SCSI (PVSCSI)/ 以及应用指令代码级别的
半虚拟化,而 Xen / XenServer / KVM / Hyper-V/Oracle VM(其实就是由Xen来修改的,对Oracle Linux和DB有一定的优化)这些Hypervisor已陆续支持主要硬件的半虚拟化,特别是包括物理CPU
的半虚拟化,有很多人在这里会奇怪,VMware为啥不实现CPU指令级别的半虚拟化呢,这是由于Xen这些使用了操作系统指令级别的CPU半虚拟化,能达到原物理CPU/Core的8X%的物理性能,
而牛B的是VMware的全虚拟化CPU指令也能达到相同的性能,而且毫不逊色。个人觉得还有一个原因的是VMware首创的VMotion/FT等高级技术需要Hypervisor来对操作系统CPU指令进行管理
和转发。可能基于种种考虑,VMware到目前没有支持/实现操作系统CPU指令的半虚拟化。但有一点要指出,VMware的总体虚拟化性能比起其他的Hypervisro也是不落下风。
另外,不是所有的OS都支持半虚拟化的,主要有以下支持:XP/2003/vista/win7/2008/r2 , rhel 5/6 , SUSE 11 sp1, Ubuntu 10.4以及其他内核为2.6.33以上的linux等,
不支持操作系统CPU指令的半虚拟化也是以前对手攻击VMware的重点,因此有了上图的出现,但事实胜于雄辩,VMware的总体性能和市场还是最牛的。
最后,介绍一下x86硬件辅助虚拟化技术,随着虚拟化热潮,物理硬件已经跟不上虚拟化的脚步(因为毕竟是多台虚拟机共用一套硬件资源),硬件并发处理的能力跟不上,2007年,
intel首发了革命性的CPU硬件辅助虚拟化技术:VT-x技术,这极大的改善了虚拟CPU/VM的性能,随后几年Intel还陆续推出VT-c(网卡虚拟化优化),VT-d(Directed I/O),EPT(内存虚拟化)
VMDq / SR-IOV等技术,极大改善了虚拟硬件的性能和功能,(AMD也有相关的技术,但没intel的全面和性能好)
另外爆一个小料,将来的vSphere 6可能会大幅改善虚拟磁盘的I/O性能。。。。
|
5#
2014-4-3 12:51:12
回复(0)
收起回复
|