Total Pageviews

Wednesday, 8 November 2017

系统虚拟化技术

    简单而言,虚拟化(Virtulization)是表示计算机资源的抽象方法。通过虚拟化可以对包括基础设施,系统和软件等计算机资源的表示,访问和管理进行简化,并为这些资源提供标准的接口来接受输入和提供输出。
    虚拟化技术有很多种,比如,网络虚拟化,内存的虚拟化,桌面虚拟化,应用虚拟化和虚拟内存等等。因为篇幅的原因,本系列将重点关注系统虚拟化,特别是X86平台。今后此系列当中提到的虚拟化皆指系统虚拟化。
    系统虚拟化的目的
    通过使用虚拟化管理器(Virtual Machine Monitor,简称VMM)是在一台物理机上虚拟和运行一台或多台虚拟机(Virtual Machine,简称VM)。VMM主要有两种形式:
    1. Hypervisor VM,它直接运行在硬件(Bare Metal)上面,提供接近于物理机的性能,并在I/O上面做了特别多的优化,主要用于服务器类的应用,也被称为“Type 1”。
    2. Hosted(托管)VM,它运行在物理机的操作系统上,虽然其本身性能不如Hypervisor(因为它和硬件之间隔了一层OS),但是其安装和使用非常方便,而且功能丰富,比如支持三维加速等特性,常用于桌面应用,也被称为“Type 2”。
    系统虚拟机的分类
    由于采用技术的不同,可以将系统虚拟化分为五大类:
    硬件仿真(Emulation
    • 简介:属于Hosted模式,在物理机的操作系统上创建一个模拟硬件的程序(Hardware VM)来仿真所想要的硬件,并在此程序上跑虚拟机,而且虚拟机内部的客户操作系统(Guest OS)无需修改。知名的产品有Bochs,QEMU和微软的Virtual PC(它还使用少量的全虚拟化技术)。
    • 优点:Guest OS无需修改,而且非常适合用于操作系统开发,也利于进行固件和硬件的协作开发。固件开发人员可以使用目标硬件 VM 在仿真环境中对自己的实际代码进行验证,而不需要等到硬件实际可用的时候。
    • 缺点:速度非常慢,有时速度比物理情况慢100倍以上。
    • 未来:因为速度的问题,渐趋颓势,但是还应该有一席之地。
    全虚拟化(Full Virtulization
    • 简介:主要是在客户操作系统和硬件之间捕捉和处理那些对虚拟化敏感的特权指令,使客户操作系统无需修改就能运行,速度会根据不同的实现而不同,但大致能满足用户的需求。这种方式是业界现今最成熟和最常见的,而且属于 Hosted 模式和 Hypervisor 模式的都有,知名的产品有IBM CP/CMS,VirtualBox,KVM,VMware Workstation和VMware ESX(它在其4.0版,被改名为VMware vSphere)。
    • 优点:Guest OS无需修改,速度和功能都非常不错,更重要的是使用非常简单,不论是 VMware 的产品,还是Sun(Oracle?)的 VirtualBox。
    • 缺点:基于Hosted模式的全虚拟产品性能方面不是特别优异,特别是I/O方面。
    • 未来:因为使用这种模式,不仅Guest OS免于修改,而且将通过引入硬件辅助虚拟化技术来提高其性能,我个人判断,在未来全虚拟化还是主流。
    半虚拟化(Parairtulization
    • 简介:它与完全虚拟化有一些类似,它也利用Hypervisor来实现对底层硬件的共享访问,但是由于在Hypervisor 上面运行的Guest OS已经集成与半虚拟化有关的代码,使得Guest OS能够非常好地配合Hyperivosr来实现虚拟化。通过这种方法将无需重新编译或捕获特权指令,使其性能非常接近物理机,其最经典的产品就是Xen,而且因为微软的Hyper-V所采用技术和Xen类似,所以也可以把Hyper-V归属于半虚拟化。
    • 优点:这种模式和全虚拟化相比,架构更精简,而且在整体速度上有一定的优势。
    • 缺点:需要对Guest OS进行修改,所以在用户体验方面比较麻烦。
    • 未来:我觉得其将来应该和现在的情况比较类似,在公有云(比如Amazon EC2)平台上应该继续占有一席之地,但是很难在其他方面和类似VMware vSphere这样的全虚拟化产品竞争,同时它也将会利用硬件辅助虚拟化技术来提高速度,并简化架构。
    硬件辅助虚拟化(Hardware Assisted Virtualization
    • 简介:Intel/AMD等硬件厂商通过对部分全虚拟化和半虚拟化使用到的软件技术进行硬件化(具体将在下文详述)来提高性能。硬件辅助虚拟化技术常用于优化全虚拟化和半虚拟化产品,而不是独创一派,最出名的例子莫过于VMware Workstation,它虽然属于全虚拟化,但是在它的6.0版本中引入了硬件辅助虚拟化技术,比如Intel的VT-x和AMD的AMD-V。现在市面上的主流全虚拟化和半虚拟化产品都支持硬件辅助虚拟化,包括VirtualBox,KVM,VMware ESX和Xen。
    • 优点:通过引入硬件技术,将使虚拟化技术更接近物理机的速度。
    • 缺点:现有的硬件实现不够优化,还有进一步提高的空间。
    • 未来:因为通过使用硬件技术不仅能提高速度,而且能简化虚拟化技术的架构,所以预见硬件技术将会被大多数虚拟化产品所采用。
    操作系统级虚拟化(Operating System Level Virtualization
    • 简介:这种技术通过对服务器操作系统进行简单地隔离来实现虚拟化,主要用于VPS。主要的技术有Parallels Virtuozzo Containers / OpenVZ,Unix-like系统上的chroot和Solaris上的Zone等。
    • 优点:因为它是对操作系统进行直接的修改,所以实现成本低而且性能不错。
    • 缺点:在资源隔离方面表现不佳,而且对Guest OS的型号和版本有限定。
    • 未来:不明朗,我觉得除非有革命性技术诞生,否则还应该属于小众,比如VPS。
    今后X86虚拟化技术的发展将会以硬件辅助虚拟化技术为主,同时以全虚拟化和半虚拟化技术为辅。
    主流虚拟化产品
    目前市场上的三大虚拟化技术:VMware vSphere Hypervisor、微软的Hyper-V、思杰的Xen hypervisor。主要厂商有:VMware、微软、Citrix、IBM、Sun、Oracle、Virtual Iron、Novell、Red Hat等。
    VMware vSphere
    在某种意义上来说,VMware就是X86虚拟化技术的代名词,不论是从客户端的VMware Workstation系列,还是服务器端的VMware Infrastructure(最近改名为vSphere)系列,都属于X86虚拟化技术的代表之作。
    Citrix Xen
    Xen只是一个hypervisor。Virtual Iron公司在XEN的基础上,提供了一整套完整的虚拟化解决方案,包括企业级虚拟机管理工具等。从诸如政策驱动的工作负载管理、动态容量供应、快速VM迁移、报表和分析的先进工具等特性,我们也看出Virtual Iron正在提供企业级管理工具,而这在以前的基于Xen的系统上是没有的。
    Microsoft Hyper-V
    和之前的Virtual PC、Virtual Server类似,Hyper-V也是微软的一种虚拟化技术解决方案,但在各方面都取得了突飞猛进的发展,从架构上讲只有“硬件-Hyper-V-虚拟机”三层,而且Hyper-V本身非常小巧,代码简单,且不包含任何第三方驱动,所以安全可靠、执行效率高,能充分利用硬件资源,使虚拟机系统性能更接近真实系统性能。
    Hyper-V技术基于64位系统,最多支持4颗虚拟处理器和64GB内存,虽然也支持32位系统,但由于后者的内存寻址空间只有4GB,因此实用价值不大,微软也推荐64位Windows Server 2008用户使用该技术。此前的Virtual PC、Virtual Server都是基于32位系统的,且后者仅支持2颗虚拟处理器。
    Oracle VirtualBox
    VirtualBox 是由Sun Microsystems公司出品的软件。2010年1月21日,欧盟终于同意Oracle收购Sun,VirtualBox再次改名变成 Oracle VM VirtualBox。VirtualBox是开源软件,可以在 virtualbox.org或openxvm.org免费下载而无需为费用和许可问题而头疼。目前VirtualBox 3.2.0支持的操作系统包括:Debian, Fedora, Linux, Mac OS X(Intel), Mandriva, OpenSolaris, PCLiunxOS, Red Hat, SUSE Linux, Solaris 10, Ubuntu, Windows, Xandros, openSUSE等。
    和同性质的 VMware 及 Virtual PC 比较下,VirtualBox 独到之处包括 Remote Desktop Protocol (RDP)、iSCSI 及 USB 的支援,VirtualBox 在客户机操作系统上已可以支援 USB 2.0 的硬件装置。
    SWsoft Virutozzo/OpenVZ
    OpenVZ是开源软件,是基于Linux平台的操作系统级服务器虚拟化解决方案(容器)。OpenVZ采用SWsoft的Virutozzo虚拟化服务器软件产品的内核,Virutozzo是SWsoft公司提供的商业虚拟化解决方案。
    OpenVZ可以在单个物理服务器上创建多个隔离的虚拟专用服务器(VPS)并以最大效率共享硬件和管理资源。每个VPS的运行和独立服务器完全一致,因其自身的用户、应用程序都可以独立重起,它拥有根访问权限、用户、IP地址、内存、处理器、文件、应用服务、系统库文件和配置文件等。拥有轻量级处理损耗和高效设计的OpenVZ是运行应用服务和实时数据生产型服务器虚拟化的最佳选择.

No comments:

Post a Comment