虚拟化技术分类-东拼西凑篇

今年虚拟化技术炒得火热,最近也了解了一下虚拟化的知识。

虚拟化技术大概可以分为以下四类:

硬件仿真
完全虚拟化
半虚拟化
操作系统级的虚拟化
硬件仿真:最复杂的虚拟化实现技术就是硬件仿真,在这种方法中,可以在宿主系统上创建一个硬件 VM 来仿真所想要的硬件。使用硬件仿真的主要问题是速度会非常慢,因为每条指令都必须在底层硬件上进行仿真。但是使用硬件仿真,您可以在一个 ARM 处理器主机上运行为 PowerPC设计的操作系统,而不需要任何修改。硬件仿真的产品有Bochs和qemu。

操作系统级的虚拟化:这种技术在操作系统本身之上实现服务器的虚拟化。这种方法支持单个操作系统,并可以将独立的服务器相互简单地隔离开来。比如Virtuozzo。好像应用不是很多?

而目前市面上主要的产品都是完全虚拟化或者半虚拟化的。

完全虚拟化(full virtualization):这种模型使用一个虚拟机,它在客户操作系统和原始硬件之间进行协调。"协调"在这里是一个关键,因为 VMM 在客户操作系统和裸硬件之间提供协调。特定受保护的指令必须被捕获下来并在 hypervisor 中进行处理,因为这些底层硬件并不由操作系统所拥有,而是由操作系统通过 hypervisor 共享。虽然完全虚拟化的速度比硬件仿真的速度要快,但是其性能要低于裸硬件,因为中间经过了 hypervisor 的协调过程。完全虚拟化的最大优点是操作系统无需任何修改就可以直接运行。惟一的限制是操作系统必须要支持底层硬件。

完全虚拟化又分为传统的和硬件辅助的。传统的完全虚拟化,虚拟机运行在操作系统之上,虚拟机管理程序本身运行在cpu的Ring 0,虚拟的Guest OS则运行在Ring 1(为了避免Guest OS破坏Host OS,Guest OS必须运行 在低于Ring 0的权限)。但是这样一来Guest的兼容性会受到影响,并且原来Guest OS要在Ring 0上执行的指令都必须经过hypervisor翻译才能运行,速度会有所下降。而硬件辅助的完全虚拟化需要cpu硬件支持,有intel的VT和AMD的 AMD-V两种技术,只有支持这两种技术的cpu才可以使用。硬件辅助的虚拟化把虚拟机管理程序本身放到比Ring 0还低的模式运行(比如Ring -1),而把Guest OS放到Ring 0,这样兼容性得到了提高,不过因为第一代硬件虚拟技术(VT和AMD-V)实现上还不够成熟,所以效率上并不比传统的完全虚拟化更高(只能是某几方面高某几方面低)。传统的完全虚拟化技术已经发展了多年,其开发比较复杂,以前的技术一般都是为x86开发的,对于x64不好用,现在x64上有了VT和 AMD-V之后,估计厂商已经不愿意再花力量为x64开发传统的虚拟机了,所以目前想要运行64位的Guest OS,都需要VT或AMD-V的支持()。

半虚拟化(para virtualization):半虚拟化可以提供极高的性能,它与完全虚拟化有一些类似。这种方法使用了一个 hypervisor 来实现对底层硬件的共享访问,还将与虚拟化有关的代码集成到了操作系统本身中。与硬件辅助的完全虚拟化有一点相似是hypervisor运行在Ring -1,而Guest OS运行在Ring 0上。但是半虚拟化有一个缺点是必须修改客户操作系统,因为半虚拟化为了提高效率,必须要让Guest OS本身意识到自己运行在虚拟机上,所以在Guest OS的内核中需要有方法来与hypervisor进行协调,这个缺点很大的影响了半虚拟化技术的普及,因为Linux等系统可以修改,而其它不能修改的系统就不能用了。

代表产品:

传统的完全虚拟化的产品主要有Vmware Workstation / Server, qemu(qemu有两种模式,一种是硬件仿真,一种是完全虚拟化),VirtualBox,Virtual PC / Server,Parallel Workstation等。

 

半虚拟化的代表产品是Xen,Vmware ESX Server,Microsoft Hyper-V。

发表于: 2011-06-03 10:59 阅读(1347) 评论(1) 收藏 好文推荐

本博客所有内容,若无特殊声明,皆为博主原创作品,未经博主授权,任何人不得复制、转载、摘编等任何方式进行使用和传播。

作者该类其他博文:

# re: 虚拟化技术分类-东拼西凑篇
2011-06-20 16:43 | 李卓刚 | 1楼
很好的内容,值得收藏。

发表评论(网友发言只代表个人观点,不代表本网站观点或立场。)

您尚未登录,请先【登录或注册