半虚拟化如何提高服务器性能( 二 )


什么是完全虚拟化?
完全虚拟化允许未经修改的客户机操作系统在驻留在服务器上的虚拟机内独立运行 。客户机操作系统不知道已被虚拟化 。完全虚拟化有两种类型:软件辅助虚拟化和硬件辅助虚拟化 。
(1)软件辅助虚拟化
软件辅助的完全虚拟化通常涉及耗时的过程 , 例如二进制翻译 。实现二进制翻译虚拟化的一个经典方法是采用陷阱和仿真方法 。在这种方法中 , 系统管理程序对CPU进行配置 , 以使所有潜在的不安全指令都将产生陷阱或特殊情况 , 从而将控制权转移回系统管理程序 。系统管理程序收到陷阱后 , 它将检查指令 , 并以安全的方式对其进行仿真 , 然后继续执行指令 。
二进制翻译虚拟化可以与直接执行结合使用 , 其中大多数代码直接在CPU上执行 , 只有需要翻译的代码才被真正被翻译 。二进制翻译虚拟化的替代方法包括二进制补丁和完整的系统仿真 。
在软件辅助的完全虚拟化中使用的管理程序软件包括VMware工作站(32位客户机) , VMWare Server、Virtual PC和Oracle VM VirtualBox(32位客户机) 。但是 , “托管”虚拟机管理程序VirtualBox采用了自己的虚拟化方法 。通过支持Ring-0的内核驱动程序启动虚拟机时 , VirtualBox会将主机系统设置为本地运行大多数客户机代码 。但是VirtualBox也可以在需要时(例如在执行特权指令时)承担控制权 。发生陷阱时 , VirtualBox通过将请求路由到虚拟设备或将处理委托给客户机操作系统(OS)或主机操作系统(OS)来管理情况 。VirtualBox还提供半虚拟化接口 。
(2)硬件辅助虚拟化
硬件辅助的完全虚拟化消除了对二进制翻译虚拟化或其替代方法的需要 。硬件辅助虚拟化是依靠硬件扩展 , 以帮助虚拟机管理程序在处理器级别管理复杂任务 。这包括X86虚拟化技术 , 例如英特尔虚拟化技术和AMD虚拟化处理器命令集扩展 。
支持硬件辅助虚拟化的裸机虚拟机管理程序软件包括VMware ESXi/ESX、Hyper-V、KVM(Linux内核的一部分 , 可以直接运行虚拟机)和Xen/Xenserver 。
支持硬件辅助的完全虚拟化的托管虚拟机管理程序软件包括VMware Workstation(仅64位的客户机) , VirtualBox(仅64位的客户机))和VMware Server(已停用) 。
VMWorkstation/Server支持Linux和Windows 。
什么是部分虚拟化?
在部分虚拟化中 , 某些应用程序(而不是整个操作系统)在虚拟机中运行 。部分虚拟化只能涉及少数应用程序 。顾名思义 , 部分虚拟化模拟系统的物理硬件 , 并且只是部分模拟 。
优点和缺点:半虚拟化vs.完全虚拟化vs.部分虚拟化
半虚拟化旨在增强系统性能并最大程度地减少开销 , 从而防止虚拟机的使用不足 。它非常有效地扩展 。半虚拟化还通过减少完成操作所需的时间来简化单个集合或硬件上不同操作系统的操作 。但是 , 不利的一面是 , 像Windows这样的未经修改的操作系统将无法在Xen等超虚拟化的虚拟机管理程序上运行 , 除非可能带有该操作系统的超虚拟化驱动程序 。此外 , 根据工作负载的类型 , 半虚拟化相对于完全虚拟化的性能优势可能会有很大差异 。
全面虚拟化 , 硬件辅助技术的发展已经改变了游戏规则 。硬件辅助虚拟化通过卸载许多耗时的任务而从软件辅助的完整虚拟化向前迈出了一大步 , 否则这些任务将由虚拟机管理程序或虚拟机管理器(VMM)执行 。但是 , 作为一个次要限制 , 硬件辅助的完全虚拟化不支持处理器不兼容的旧硬件 。

推荐阅读