1. 基本介绍
1.1 虚拟化的概念
虚拟化技术是云计算的基石,表示计算资源的抽象方法,通过虚拟化,可以简化基础设施、系统和软件等计算机资源的表示、访问和管理,并为这些资源提供标准的接口来接受输入和提供输出。虚拟化技术有很多种,比如网络虚拟化、内存虚拟化、桌面虚拟化和应用虚拟化等。这里考虑系统虚拟化。
1.2 系统虚拟化发展历史
系统虚拟化通过使用虚拟机管理程序( Virtual Machine Monitor,简称VMM)在一台物理机上虚拟和运行一台或多台虚拟机( Virtual Machine,简称VM),而且这些虚拟机可以像真实机器一样运行各种软件,并且在资源占用方面虚拟机之间是相互隔离的,以保证运行的安全和稳定。
由于最初计算机的价格非常昂贵,所以那时很多科学家在思素如何更好地利用宝贵的计算机资源。在20世纪50年代末, Christopher Strachey发表了名为“ Time Sharing in Large Fast Computers”的论文,这篇文章被之后的学者认为是系统虚拟化的起源。之后,在20世纪60年代中期,IBM推出了世界上第一台支持系统虚拟机技术的计算机IBM7044.在接下来的几十年里, IBM Sytem360、IBMZ系列、IBMP系列和HP的小型机都开始支持系统虚拟化技术,但是在应用范围上还属干高端和小。可喜的是,在最近十年,由于 Vmware Workstation Vmwarevsphere和开源的Xcn等基于x86架构虚拟化产品的发布和盛行,系统虚拟化技术得到业界极大的欢迎和肯定,并已成为一个非常主流的技术。
1.3 VMM按运行模式分类
a. Hypervisor模式( Type1型)
运行在硬件上的WMM,然后在VMM上管理host os。具体技术有Xen,Hyper-V,VMWare ESX等
b. Hosted托管模式(Type2型)
装在操作系统上运行的软件VMM。具体技术有Virtual Box,VMWare Workstation等
举个例子,我们在windows系统上经常装一个VMWare Workstation,然后再装几个Ubuntu,或者直接装一个与windows平行的双系统,他的基本结构就是:
2. 系统虚拟化分类
2.1 硬件仿真
硬件仿真( Emulation)属于Hosted托管模式,它在物理机的操作系统上创建一个模拟硬件的程序(硬件VM)来仿真所想要的硬件,并在这个程序上跑虚拟机,而且虚拟机内部的客戶操作系统( Guest OS)无需修改。知名的产品有 Bochs、QEMU和微软的 Virtual PC(它还使用少量的全虚拟化技术)。
因为是完全模拟硬件的运行,所以在性能方面比较低,有时速度仗是物理情况下的十分之一。因为速度问题,颓势明显,但是硬件仿真技术在系统开发方面还是会有它的一席之地。
2.2 全虚拟化
全虚拟化( Full Virtualization)的实现机制如图5-2所示,主要是在客戶操作系统和硬件之间捕捉和处理那些对虚拟化敏感的特权指令,使客戶操作系统无需修改就能运行,速度会根据不同的实现而不同,但大致能满足用戶的需求。这种方式是业界现今最成熟、最常见
属于Hypervisor模式:Linux KVM , Vmware ESX
属于Hosted托管模式:Virtualbox,Vmware Workstation
在全虚拟化模式下,客户操作系统无需修改,而且速度还可以,更重要的是,不论是 Vmware的产品还是 Oracle的 Virtualbox,使用起来都非常简单,而且还支持三维加速等常用功能。由于一些基于Hosted模式的全虚拟产品在性能方面不是特别优异,特别是1O方面,比如 Vmware Workstation,所以这些产品不是特別适合服务器类型的应用,但 Vmware ESX这种 Hypervisor类型的全虚拟化产品对服务器类型的应用有很多支持。
2.3 半虚拟化
半虚拟化( Paravirtualization)属于Hypervisor,与全虚拟化有一定的相似之处。它也利用虚拟机管理程序来实现对底层硬件的共享访问,但是由于在虚拟机管理程序上面运行的客户操作系统已经集成了与半虚拟化有关的代吗,这使得客户操作系统能够非常好地配合虚拟机管理程序来实现虚拟化。通过这种方法,无需重新编译或捕获特权指令,其性能非常接近物理机。
最经典的产品:Xen,Hyper-v
2.4 硬件辅助虚拟化
硬件辅助虚拟化( Hardware Assisted Virtualization)是英特尔/AMD等硬件厂商通过对部分全虚拟化和半虚拟化使用到的软件技术进行硬件化来提高性能,并且由于通过硬件辅助虚拟化能将大量复杂的虚拟化還辑从软件中抽离,所以能极大地简化虚拟化产品的架构。在使用方面,硬件辅助虚拟化技术常用于优化全虚拟化和半虚拟化产品,而不是独创一派。最出名的例子莫过于 Vmware Workstation,它量然属于全虚拟化,但是在它的6.0版本中引入了硬件辅助虚拟化技术,比如英特尔的VTx和AMD的AMD-V,用户在使用时候,可以选择是否开启硬件辅助虚拟化模式。现在市面上的主流全虚拟化和半虚拟化产品都支持硬件辅助虚拟化,包括Virtualbox、KVM、 Vmware ESX和Xen等。通过引人硬件技术,虚拟化技术的速度更接近物理机,但现有的硬件实现不够优化,还有进一步提高的空间。
2.5 操作系统级虚拟化
不做过多介绍,这种技术对操作系统只进行少许的修改,实现成本低而且性能不错,但在资源隔离方面表现欠佳,而且对客戶操作系统的型号和版本有限定,所以这种技术的未来不是特别明朗。一般用于小众应用,如VPS服务。
3. 系统虚拟化用处
3.1 软件测试
使用 Virtualbox和 Vmware Workstation来配置测试环境,不仗比物理方式快很多,而且无需购买过多的昂贵硬件。更重要的是,通过它们自带的快照功能可以非常方便地将错误发生的状态保存起来,这样将极有利于测试员和程序员之间的沟通。现在已经有很多软件都通过虚拟机的形式进行测试,最著名的例子莫过于以 Virtualbox虚拟机形式发布的 Chrome OS测试版。
3.2 桌面应用
在Ubuntu虚拟机上下载使用Linux软件是经常的事。
3.3 服务器整合
这个就是云计算的基础,把服务器资源池化(虚拟化),统一管理起来,弹性切割资源对外服务。
3.4 自动化管理
使用DRS( Distributed Resource Scheduling,分布式资源调度)、 Live Migration(动态迁移)、DPM( Distributed Power Management,分布式电源管理)和HA( High Availability,高可用性)等高级虚拟化管理技术,能极大地提升数据中心的自动化管理程度,并实现容灾。
……
参考:《云计算核心技术剖析》