浅谈云计算虚拟化技术 云计算虚拟化的优势


浅谈云计算虚拟化技术 云计算虚拟化的优势

文章插图
云计算的核心技术之一就是虚拟化技术 。所谓虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机 。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率 。虚拟化的核心软件 VMM,是一种运行在物理服务器和操作系统之间的中间层软件 。VMM 是一种在虚拟环境中的“元”操作系统 。他们可以访问服务器上包括 CPU、内存、磁盘、网卡在内的所有物理设备 。VMM 不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护 。当服务器启动并执行 VMM 时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘 。
虚拟化技术有很多实现方式,比如根据虚拟化的程度和级别,有软件虚拟化和硬件虚拟化,全虚拟化和半虚拟化 。
软件虚拟化
软件虚拟化,顾名思义,就是采用纯软件的方法在在现有的物理平台上实现物理平台访问的截获和模拟,该物理平台往往不支持硬件虚拟化 。常见的软件虚拟化技术 QEMU,是通过纯软件来仿真 X86 平台处理器的指令,然后解码和执行,该过程并不在物理平台上直接执行,而是通过软件模拟实现,因此往往性能比较差,但是可以在同一平台上模拟出不同架构平台的虚拟机 。VMware 则采用了动态二进制翻译技术 。VMM 在可控的范围内,允许客户机的指令在可控的范围内直接运行 。客户机指令在运行前会被 VMM 扫描,其中突破 VMM 限制的指令被动态替换为可以在物理平台上直接运行的安全指令,或者替换为对 VMM 的软件调用 。因此其性能上比 QEMU 有大幅提升,但是其失去了跨平台虚拟化的能力 。
硬件虚拟化
硬件虚拟化,简单来说,就是物理平台本身提供了对特殊指令的截获和重定向的硬件支持,新的硬件会提供额外的资源来帮助软件实现对关键硬件资源的虚拟化,从而提升性能 。比如 X86 平台,CPU 带有特别优化过的指令集来控制虚拟过程,通过这些指令集,VMM 会将客户机置于一种受限模式下运行,一旦客户机试图访问硬件资源,硬件会暂停客户机的运行,将控制权交回给 VMM 处理 。同时,VMM 还可以利用硬件的虚拟化增强技术,将客户机对硬件资源的访问,完全由硬件重定向到 VMM 指定的虚拟资源 。由于硬件虚拟化可提供全新的架构,支持操作系统直接在上面运行,无需进行二进制翻译转换,减少的性能开销,极大地简化了 VMM 的设计,从而使 VMM 可以按标准编写,通用性更好,性能更强 。需要说明的是,硬件虚拟化技术是一套解决方案,完整的情况需要 CPU、主板芯片组、BIOS 和软件的支持 。Intel 在其处理器产品线中实现了 Intel VT 虚拟化技术(包括 Intel VT-x/d/c) 。AMD 也同样实现了其芯片级的虚拟化技术 AMD-V 。
完全虚拟化
【浅谈云计算虚拟化技术 云计算虚拟化的优势】完全虚拟化技术又叫硬件辅助虚拟化技术,最初所使用的虚拟化技术就是全虚拟化(Full Virtualization)技术,它在虚拟机(VM)和硬件之间加了一个软件层 Hypervisor,或者叫做虚拟机管理程序或虚拟机监视器(VMM) 。完全虚拟化技术几乎能让任何一款操作系统不用改动就能安装到虚拟服务器上,而它们不知道自己运行在虚拟化环境下 。主要缺点是,性能方面不如裸机,因为 VMM 需要占用一些资源,给处理器带来开销 。
半虚拟化
半虚拟化技术是后来才出现的技术,也叫做准虚拟化技术,现在比较热门,它就是在全虚拟化的基础上,把客户操作系统进行了修改,增加了一个专门的 API,这个 API 可以将客户操作系统发出的指令进行最优化,即不需要 VMM 耗费一定的资源进行翻译操作 。因此 VMM 的工作负担变得非常的小,因此整体的性能也有很大的提高 。不过缺点就是,要修改包含该 API 的操作系统,但是对于某些不含该 API 的操作系统(主要是 Windows)来说,就不行能用这种方法 。半虚拟化技术的优点是性能高 。经过半虚拟化处理的服务器可与 VMM 协同工作,其响应能力几乎不亚于未经过虚拟化处理的服务器 。它的客户操作系统(Guest OS)集成了虚拟化方面的代码 。该方法无需重新编译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作 。