第3章 虚拟化技术
近年来,计算机硬件与软件的性能比以往有了极大的发展与进步,计算机硬件的发展为人们提供了极其强大的计算能力和极其丰富的计算资源,如不加以有效利用将会造成资源浪费,同时,随着计算机软件的发展,用户使用计算机的场合越来越多,这又导致用户对计算机的需求与要求越来越多,网络安全、数据灾备、系统移植、系统升级、软硬件成本等都成了
用计算机过程中要考虑和解决的问题,而虚拟化技术的出现与应用,为用户提供了解决这些问题的完美方案。本章就将介绍云计算与大数据技术紧密相关的虚拟化技术。
1、虚拟化技术简介
虚拟化技术其实很早以前就已经出现了,虚拟化的概念也不是最近几年才提出来的,虚拟化技术最早出现于20世纪60年代,那时候的大型计算机已经支持多操作系统同时运行,并且相互独立。如今的虚拟化技术不再是仅仅只支持多个操作系统同时运行这样单一的功能了,它能够帮助用户节省成本,同时提高软硬件开发效率,为用户的使用提供更多的便利。尤其近
年来,虚拟化技术在云计算与大数据方向上的应用更加广泛。虚拟化技术有很多分类,针对用户不同的需求涌现出了不同的虚拟化技术与方案,如网络虚拟化、服务器虚拟化、操作系统虚拟化等,这些不同的虚拟化技术为用户很好地解决了实际需求。
3. 1. 1 虚拟化技术的概念
虚拟化技术是一个广义的术语,对不同的行业或不同的人有着不同的意义。在计算机科学领域中,虚拟化技术意味着对计算机资源的抽象。虚拟化是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。也就是说,虚拟化技术是模拟真正的(或者称物理的)计算机资源,例如CPU、内存、存储、网络等用户可见的物理的硬件资源。用户通过虚拟化技术在使用这些资源时,除了不能物理接触以外,其他都与使用物理计算机没有任何区别。
虚拟化技术可以实现大容量、高负载或者高流量设备的多用户共享,每个用户可以分配到一部分独立的、相互不受影响的资源。每个用户使用的资源是虚拟的,相互之间都是独立的,虽然这些数据有可能存放在同一台物理设备中。以虚拟硬盘来说,用户使用的是由虚拟化技术提供的虚拟硬盘,而这些虚拟硬盘对于用户来说就是真实可用的硬盘,这些虚拟硬盘在
物理存储上可能就是两个不同的文件,但用户只能访问自己的硬盘,不能访问别人的硬盘,所以他的各自的数据是安全的,是相互不受影响的。甚至各个用户使用的网络接口都是不一样的,所使用的网络资源也是不一样的,使用的操作系统也不一样。
使用虚拟化技术可以将很多零散的资源集中到一处,而使用的用户则感觉这些资源提一个整体。如存储虚拟化技术则可以实现将很多的物理硬盘集中起来供用户使用,用户使用时看到的只是一块完整的虚拟硬盘。
使用虚拟化技术可以动态维护资源的分配,动态扩展或减少某个用户所使用的资源。用户如果产生了一个需求,如需要添加更多的硬盘空间或添加更多的网络带宽,虚拟化技术通过更改相应的配置就可以很快地满足用户的需求,甚至用户的业务也不需要中断。
随着虚拟化技术在不同的系统与环境中的应用,它在商业与科学方面的优势也体现得越来越明显。虚拟化技术为企业降低了运营成本,同时提高了系统的安全性和可靠性。虚拟化技术使企业可以更加灵活、快捷与方便地为最终的用户进行服务,并且用户也更加愿意接受虚拟化技术所带来的各种各样的便利。为更加直观地感受与认识虚拟化,下面对一个计算机系统有无使用虚拟化技术进行一个简单的对比,
1、虚拟化技术
虚拟化技术,通常是指计算元件在虚拟的基础上而不是真实的基础上运行。可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时一起运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。
虚拟化技术也与VMware Workstation等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件虚拟机相关开销和支持更广泛的操作系统方面。
纯软件虚拟化解决方案存在很多限制。“客户”操作系统很多情况下是通过VMM(Virtual Machine Monitor,虚拟机监视器)来与硬件进行通信,由VMM来决定其对系统上所有虚拟机的访问。(注意,大多数处理器和内存访问独立于VMM,只在发生特定事件时才会涉及VMM,如页面错误。)在纯软件虚拟化解决方案中,VMM在软件套件中的位置是传统意义上操作系统所处的位置,而
操作系统的位置是传统意义上应用程序所处的位置。
虚拟化技术是一套解决方案。完整的情况需要CPU、主板芯片组、BIOS和软件的支持,例如VMM软件或者某些操作系统本身。即使只是CPU支持虚拟化技术,在配合VMM的软件情况下,也会比完全不支持虚拟化技术的系统有更好的性能。
两大CPU巨头Intel和AMD都想方设法在虚拟化领域中占得先机,但是AMD的虚拟化技术在时间上要比Intel落后几个月。Intel自2005年末开始便在其处理器产品线中推广应用Intel Virtualization Technology(Intel VT)虚拟化技术。
2、I/O 虚拟化
服务器使用一个输入/输出内存管理单元(Input/Output Memory Management Unit,IOMMU)将DMAI/O总线(如PCIe)连接到主存储器,和传统的内存管理单元一样,它将CPU可见的虚拟地址转换成物理地址,IOMMU会将设备可见的虚拟地址映射到物理地址,这些单元也提供了内存保护功能。
I/O虚拟化可以隔离和限制设备访问由分区管理设备拥有的资源。VT-d通过减少VMM参与管理I/O流量的需求,消除了大部分的性能开销,从而加速数据传输。基于纯软件的虚拟化技术中,用户操作系统与硬件设备通过VMM来通信,而借助VT-d,完成初始分配之后,数据即可直接在客户操作系统与为其分配的设备之间进行传输。这样,I/O流量的流动将更加迅速,减少的VMM工作运行则会进一步缩减服务器处理器的负载。此外,由于用于特定设备或客户操作系统的I/O数据不能被其它任何硬件或客户软件组件访问,VMM将特定I/O设备安全分配给特定客户操作系统。每个设备在系统内存中都有一个专用区域,只有该设备及其分配的客户操作系统才能对该区域进行访问,增强了虚拟化的安全性能。
3. 1. 2 虚拟化技术的分类
虚拟化是一个抽象的概念,针对不同的行业,不同的需求,可以有不同的解决方案,现在最流行的虚拟化技术包括服务器虚拟化、网络虚拟化、存储虚拟化、操作系统虚拟化等。
虚拟化技术根据用途不同,也形成了自己的分层结构,如图 3-2 所示。从下往上,分别是网络虚拟化、存储虚拟化、服务器虚拟化、操作系统虚拟化、服务虚拟化、桌面虚拟化、应用程序虚撤化以及用户体验虚拟化。每一层都有相对应的用途范围,不同的用户根据需求,选择不同的虚拟化技术即可。这个分层结构,实际也就是虚拟化技术的一种分类。
用户体验虚拟化(User Experience Virtualiztion)
应用程序虚拟化(Application Virtualization)
桌面虚拟化(Desktop Virtualization)
服务虚拟化(Service Virtualiztion)
操作系统虚拟化(Operating System Virtualiztion)
服务器虚拟化(Server Virtualiztion)
存储虚拟化(Storage Virtualiztion)
网络虚拟化(Network Virtualiztion)
- 网络虚拟化
网络虚拟化将网络资源进行整合,简单来说,就是将硬件与软件的网络设备资源,以及网络功能整合为一个统一的、基于软件可管理的虚拟网给。网络虚拟化是一种包含至少部分是虚拟网络连接的计算机网络。虚拟网络连接是指,在多个计算设备间不包含物理连接,而是通过网络虚拟化来实现的网络连接。有两种常见的虚拟网络:基于协议(如VXLAN、VIAN
S等)的虚拟网络和基于虚拟设备(如在 Hypervisor内部的网络连接虚拟机)的虚拟网络 网终虚拟化经常应用到大型的服务器中,如云计算服务器。当前在网络虚拟化中比较成熟的整体方案则是软件定义网络(Software Defined Network, SDN) 与网络功能虚拟化(NetworkFunction Virtualization, NFV) 等。
SDN 起源于园区网,成熟于数据中心,关注于网络控制面和转发面的分离,处理的是OSI 模型中的2-3层,SDN优化网络基础设施架构,如以太网交换机,路由器和无线网络等NFV始于大型运营商,关注网络转发功能的虚拟化和通用化,处理的是OSI 模型中的4-7层,NFV 优化网络的功能,如负载均衡,防火墙,WAN 网优化控制器等。 - 存储虚拟化
存储虚拟化,即整合所有存储资源为一个存储池,对外提供逻辑存储接口,用户通过逻辑接口进行数据的读写,不论有多少个硬件存储设备,对外看到的只有一个。存储虚拟化最通俗时理解就是对存储硬件资源进行抽象化表现,通过将一个或多个目标(Target) 服务或功能与其他附加的功能集成,统一提供全面的功能服务。
对于用户来说,虚拟化的存储资源就像是一个巨大的"存储池",用户不会看到具体的磁盘,不知道有多少磁盘,也不必关心自己的数据具体存储在哪一块磁盘中。
3. 1. 3 虚拟化技术的优势和劣势
1.虚拟化技术的优势
虚拟化技术的优势主要体现在以下几个方面。
(1) 减少物理资源的投入,节约成本
当用户需要不同的操作系统或更多的计算机设备资源时,直接通过VMM添加几个不同的操作系统即可,不再需要使用时可直接关闭或者删除相应的资源。
(2) 虚拟数据资源迁移方便
可以很方便地将虚拟数据资源(一般为虚拟机生成的数据)迁移到其他数据中心,而虚拟数据资源不受影响。
如果涉及数据的迁移或者设备损坏,则无须迁移物理设备,只要将VMM生成的数据备份到其他数据中心,然后再通过VMM 管理起来就可以了,而以前的数据与服务不会受到任何影响。
(3) 提高物理资源的使用率
传统的服务器主机的CPU平均使用率都在10%以内,根本就没有使CPU的使用达到一个理想的状态,这是极大的资源浪费。使用虚拟化技术,可以使多台服务器部署到同一台物理设备上,这样可以提高这台物理设备的使用率,显著减少成本开销。
(4) 更加环保,节省能源
通过应用虚拟化技术,可以减少物理硬件的投入,从而降低物理硬件所使用的电能以及占地空间,从而更加的环保。
(5) 易于自动化维护与操作,减少维护成本
虚报化技术通过软件的方式来模拟物理设备,只要是软件的方式实现的虚拟资源,就可以通过相应的接口进行自动地维护与管理,可以提高工作效率,减少维护成本。
(6) 数据安全更有保障
每个虚拟化出来的设备在物理设备中都会有相应的文件产生,管理员只需要对数据进行相应的备份,并定期管理,就可以保证这些数据的安全。如果出现了不可抗拒的情况,如自然灾害等情况,毁坏了物理设备,则管理员只需要将已经备份的数据恢复到新的设备中即可恢复用户的数据。如果架构得当,甚至都不会中断用户工作就可以将系统进行更新与替换。
当然,虚拟化技术不是万能的,也有它解决不了的问题,并不是适合所有的用户。就目前虚拟化技术的发展来看,仍然存在缺陷。
2. 虚拟化技术的劣势
- 目前业界没有统一的虚拟化技术标准与平台,没有开放的协议。市场上有很多不同的虚拟化技术提供商,如 Microsoft、VMware、Xen等。它们所使用的虚拟化技术的运行效果并不一样,相互并不兼容。
- 如果没有对数据进行备份,应用虚拟化技术会存在一定的风险。虚拟化技术且然可以实现数据备份,但它毕竟还是建立在真实的硬件系统之上的,如果将多个应用与服务器放到同一台物理设备上之后,如果该物理设备出现问题,并且没有冗余的物理设备作为备份,则所有应用与服务都将无法使用。
- 虚拟数据中心的迁移,特别是对在线服务的迁移,对用户影响巨大。因为它的数据量大,应用程序繁多,结构复杂,一旦迁移,有可能会造成很多不可预知的影响。
3. 1. 4 虚拟化技术与云计算
虚拟化技术是云计算的重要支撑技术。云计算是基于互联网的相关服务的增加、使用和交付模式,在云计算中,通过互联网提供动态、易扩展的虚拟化资源。通过虚拟化技术,可以将应用程序和数据在不同层次以不同的方式展现给用户,为云计算的使用者和开发者提供便利。
虚拟化的主要功能是把单个资源抽象成多个给用户使用,而云计算则是帮助不同部(通过私有云)或公司(通过公共云)访问一个自动置备的资源池。借助虚拟化技术,用户能以单个物理硬件系统为基础创建多个模拟环境或专用资源。云计算是由多种规则和方法组合而成,可以跨任何网络向用户按需提供计算、网络和存储基础架构资源、服务、平台及应用,这些基础架构资源、服务和应用来源于云。简单来讲,云就是一系列自动化软件进行管理的虚拟资源池,旨在帮助用户通过支持自动扩展和动态资源分配的自助服务,按需对这些资源进行访问。
云计算提供服务,虚拟化技术是云计算的技术支持。在云计算的部署方案中,虚拟化技术可以使其 IT 资源应用更加灵活。而在虚拟化技术的应用过程中,云计算也提供了按需所取的资源和服务。在一些特定场景中,云计算和虚拟化技术无法剥离,只有相互搭配才能更好地解决客户需求。通过虚拟化技术,云计算把计算、存储、应用和服务都变成了可以动态配置和
扩展的资源,从而才能够实现在逻辑上以单一整体的服务形式呈现给用户。因此,虚拟化技术、是云计算中极其重要、最为核心的技术原动力。