虚拟化技术分类

 

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

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

硬件仿真
完全虚拟化
半虚拟化
操作系统级的虚拟化

硬件仿真:最复杂的虚拟化实现技术就是硬件仿真,在这种方法中,可以在宿主系统上创建一个硬件 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等。

硬件辅助的虚拟化受到很多产品的支持,目前传统的完全虚拟化产品也都开始对硬件辅助的虚拟化进行支持,比如Vmware Workstation / Server和VirtualBox都开始支持VT和AMD-V,并且在它们上面想要运行64位的Guest OS还必须使用硬件辅助的虚拟化。另外,kvm是设计成硬件辅助的完全虚拟化的(kvm现在也可以通过补丁支持半虚拟化),Xen也能够支持硬件辅助的虚 拟化了(终于可以在Xen上安装Windows了)。

半虚拟化的代表产品是Xen,Vmware ESX Server,Microsoft Hyper-V。Xen通过给Linux内核打补丁,使Host OS本身也运行在虚拟机上(叫做Domain 0),其它的虚拟机叫做Domain U(Domain U需要为XXen进行修改)。Hyper-V和Xen比较相似,Hyper-V目前集成在Windows 2008中,没启用Hyper-V时,只是一个普通的Windows 2008,一旦启用了Hyper-V,那么Hyper-V一开始就运行,而Windows 2008则在之上成为第一个虚拟机(叫做Parent partition,与Xen的Domain 0相似),在Hyper-V上运行的其它虚拟机应该也需要修改,不过Windows 2008已经修改过了所以可以在Hyper-V上运行。Vmware ESC Server本身集成在一个以Linux为基础的系统上,其架构和Xen及Hyper-V也是比较相似的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值