虚拟化与网络存储技术(txt+pdf+epub+mobi电子书下载)


发布时间:2021-03-31 12:40:57

点击下载

作者:顾军林 徐义晗

出版社:人民邮电出版社有限公司

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

虚拟化与网络存储技术

虚拟化与网络存储技术试读:

前言

FOREWORD

云计算是一种融合了多项计算机技术,以数据及其处理能力为中心的密集型计算模式,其中以KVM虚拟化、SDN软件定义网络、分布式数据存储、分布式并发编程模型、大规模数据管理和分布式资源管理技术最为关键。经过10多年的发展,云计算技术已经从发展培育期步入快速成长期,越来越多的企业开始使用云计算服务。与此同时,云计算的核心技术也在发生着巨大的变化,新一代的技术正在改进甚至取代前一代技术。Docker容器虚拟化技术以其轻便、灵活和易于快速部署等特性给传统的基于虚拟机的虚拟化技术带来了颠覆性的挑战,正在改变着基础设施即服务(IAAS)平台和平台即服务(PAAS)平台的架构和实现。

本书由北京西普阳光教育科技股份有限公司牵头,组织拥有多年云计算、大数据课程教学经验的教师共同编写而成。本书详细分析了主流的KVM虚拟化技术、SDN技术、传统的存储技术、主流的分布式存储技术、Docker容器技术等,包含了基础概念分析和详细的实验操作过程,使得学生能全面掌握虚拟化及网络存储相关知识点,为后续学习云计算基础架构平台——OpenStack开源项目打下坚实的基础。

本书遵循以项目为驱动、任务为目标的编写思路。每个实验项目分为3个子内容,第1部分提出具体的任务要求,明确做什么;第2部分分析任务相关的知识及内容;第3部分介绍完成任务的具体操作步骤,做到基础知识介绍有针对性,任务目标操作具体化。

本书的参考学时为64学时,建议采用理论实践一体化教学模式,各章的参考学时如下。

本书由淮安信息职业技术学院的顾军林、徐义晗担任主编,南京交通职业技术学院米洪、安徽工业经济职业技术学院朱晓彦、北京西普阳光教育科技股份有限公司林雪纲担任副主编,北京西普阳光教育科技股份有限公司的工程师参与了本书实验内容的测试工作,在此表示衷心的感谢。本书配套的PPT课件、基本实验和拓展实验详细步骤视频等资源,读者可以联系北京西普阳光教育科技股份有限公司获得,或登录人民邮电出版社教育社区(www.ryjiaoyu.com)下载使用。

由于作者水平有限,书中疏漏和不足之处在所难免,殷切希望广大读者批评指正。同时,恳请读者一旦发现错误,于百忙之中及时与编者联系,以便尽快更正,编者将不胜感激,E-mail:junlin82@qq.com。编者2018年10月第1章 虚拟化技术学习目标熟悉常见的虚拟化技术。了解Xen虚拟化技术及其优缺点。了解KVM虚拟化技术。了解Red Hat RHEV虚拟化系统。

基于内核的虚拟机是开源的系统化模块,从Linux 2.6.20内核之后,它集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,相对于Xen核心代码量少。其中KVM是目前云计算OpenStack架构底层实现的主要技术来源。本章主要介绍虚拟化技术分类、Xen虚拟化技术、KVM虚拟化技术、Red Hat RHEV虚拟化系统及其他公司典型的虚拟化产品。1.1 虚拟化技术分类

虚拟化是一个广义的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个旨在简化管理、优化资源的解决方案。

如图1-1所示,我们可以将一般的计算模型抽象成一定的物理资源和运行于其之上的计算元件,它们之间通过定义的物理资源接口进行交互。随着计算机硬件技术的发展,物理资源的容量越来越大,价格越来越低。在现有的计算资源基础之上,物理资源已经产生了很大的闲置与浪费。为了充分利用新的物理资源,提高效率,一个比较直接的办法就是更新计算元件以利用更加丰富的物理资源。但是,人们往往出于对稳定性和兼容性的追求,并不情愿频繁地对已经存在的计算元件做大幅度变更。虚拟化技术则另辟蹊径,通过引入一个新的虚拟化层,对下管理真实的物理资源,对上提供虚拟的系统资源,从而实现了在扩大硬件容量的同时,简化软件的重新配置过程。图1-1 虚拟化逻辑元

为了表述虚拟化的一般概念,图1-1使用了资源一词。在实际的应用中,资源可以表现为各种各样的形式。如果把操作系统及其提供的系统调用作为资源,那么虚拟化就表现为操作系统虚拟化。Linux容器虚拟化技术就是在同样的一个Linux操作系统之上,虚拟出多个同样的操作系统。如果将整个X86平台包括处理器、内存和外设作为资源,那么对应的虚拟化技术就是平台虚拟化,在同一个X86平台上面,可以虚拟出多个X86平台,每个虚拟平台都可以运行自己独立完整的操作系统。

虚拟化从本质上讲是指从逻辑角度而不是物理角度来对资源进行配置,它是一种从单一的逻辑角度来看待不同的物理资源的方法。作为一种从逻辑角度出发的资源配置技术,虚拟化是物理实际的逻辑抽象。

对于用户,虚拟化技术实现了软件跟硬件分离,用户不需要考虑后台的具体硬件实现,只需要在虚拟层环境上运行自己的系统和软件。而这些系统和软件在运行时,也似乎跟后台的物理平台无关。下面我们简单介绍一下几种常见的虚拟化技术。1.1.1 CPU虚拟化

虚拟化在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。简单来说,CPU的虚拟化技术就是单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

纯软件虚拟化解决方案存在很多限制。“客户”操作系统很多情况下通过虚拟机监视器(Virtual Machine Monitor,VMM)来与硬件进行通信,由VMM来决定其对系统上所有虚拟机的访问。(注意,大多数处理器和内存访问独立于VMM,只在发生特定事件时才会涉及VMM,如页面错误。)在纯软件虚拟化解决方案中,VMM 在软件套件中的位置是传统意义上操作系统所处的位置(如处理器、内存、存储、显卡和网卡等的接口)模拟硬件环境。这种转换必然会增加系统的复杂性。

CPU的虚拟化技术是一种硬件方案,支持虚拟技术的CPU带有特别优化过的指令集来控制虚拟过程,通过这些指令集,VMM 相比软件的虚拟实现方式能很大程度上提高性能。虚拟化技术可提供基于芯片的功能,借助兼容VMM软件能够改进纯软件解决方案。虚拟化硬件可提供全新的架构,支持操作系统直接在上面运行,从而无须进行二进制转换,减少了相关的性能开销,极大简化了VMM设计,进而使VMM能够按通用标准进行编写,性能更加强大。另外,目前在纯软件VMM中缺少对64位客户操作系统的支持,而随着64位处理器的不断普及,这一严重缺点也日益突出。而CPU的虚拟化技术除支持广泛的传统操作系统之外,还支持64位客户操作系统。

虚拟化技术是一套解决方案。完整的情况需要CPU、主板芯片组、BIOS和软件的支持,如VMM软件或者某些操作系统本身。即使只有CPU支持虚拟化技术,在配合VMM的软件情况下,也会比完全不支持虚拟化技术的系统有更好的性能。

CPU虚拟化的典型就是Intel的VT-x虚拟化,VT-x是Intel的CPU硬件虚拟化技术,但是在操作系统内部查看CPU的Flag时,是否支持硬件虚拟化的判断标准是是否有VMX,VMX是什么,下面简单介绍Intel的CPU虚拟化几个基本概念。

1.VMM

虚拟机监视器在宿主机上表现为一个提供虚拟机 CPU、内存以及一系列硬件虚拟的实体。这个实体在KVM体系中就是一个进程,如Qemu-KVM。VMM负责管理虚拟机的资源,并拥有所有虚拟机资源的控制权,包括切换虚拟机的CPU上下文等。

2.Guest

Guest可能是一个操作系统(OS),也可能就是一个二进制程序。对于VMM来说,它就是一堆指令集,只需要知道入口(RIP寄存器值)就可以加载。

Guest运行需要虚拟CPU,当Guest代码运行的时候,处于VMX Non-Root模式。此模式下,该用什么指令还是用什么指令,该用什么寄存器还用什么寄存器,该用Cache还是用Cache,但是在执行到特殊指令的时候,CPU控制权即被交给VMM,由VMM来处理特殊指令,完成硬件操作。

3.CPU运行级别

CPU支持Ring0~Ring3四个等级,但是Linux只使用了其中的两个——Ring0和Ring3。当CPU寄存器标示当前CPU处于Ring0级别的时候,表示此时CPU正在运行的是内核的代码。而当CPU处于Ring3级别的时候,表示此时CPU正在运行的是用户级别的代码。当发生系统调用或者进程切换的时候,CPU会从Ring3级别转到Ring0级别。Ring3级别是不允许执行硬件操作的,所有硬件操作都需要内核提供的系统调用来完成。

4.VMX

为了从CPU层面支持VT技术,Intel在 Ring0~Ring3 的基础上,扩展了传统的X86处理器架构,引入了VMX模式,VMX分为Root和Non-Root。VMM运行在VMX Root模式;Guest运行在VMX Non-Root模式。

Intel VT-x的架构图如图1-2所示。图1-2 Intel VT-x架构图1.1.2 服务器虚拟化

服务器虚拟化能够通过区分资源的优先次序,并随时随地将服务器资源分配给最需要它们的工作负载来简化管理和提高效率,从而减少为单个工作负载峰值而储备的资源。

通过服务器虚拟化技术,用户可以动态启用虚拟服务器(又叫虚拟机),每个服务器实际上可以让操作系统(以及在上面运行的任何应用程序)误以为虚拟机就是实际硬件。运行多个虚拟机还可以充分发挥物理服务器的计算潜能,迅速应对数据中心不断变化的需求。

目前,常用的服务器主要分为UNIX服务器和X86服务器。对UNIX服务器而言,IBM、HP、Sun各有自己的技术标准,没有统一的虚拟化技术。因此,目前UNIX服务器的虚拟化还受具体产品平台的制约,不过其通常会用到硬件分区技术。而X86服务器的虚拟化标准相对开放。下面介绍X86服务器的虚拟化技术。

1.全虚拟化

使用Hypervisor在VM和底层硬件之间建立一个抽象层,Hypervisor捕获CPU指令,为指令访问硬件控制器和外设充当中介,也为虚拟机的配置提供了最大程度的灵活性。这种虚拟化技术几乎能让任何一款操作系统不加改动就安装在VM上,而操作系统却不知道自己运行在虚拟化环境下,这也是全虚拟化(Full Virtualization)无可比拟的优势。全虚拟化的主要缺点是Hypervisor会带来处理开销。其架构如图1-3所示。图1-3 全虚拟化技术

2.准虚拟化

全虚拟化是处理器密集型技术,因为它要求Hypervisor管理各个虚拟服务器,并让它们彼此独立,这样会带来没必要的服务器性能浪费。解决这种问题的一种方法就是,改动客户操作系统,使它以为自己运行在虚拟环境下,从而能够与虚拟机、监控机协同工作。这种方法就叫准虚拟化(ParaVirtualization),也叫半虚拟化。本质上,准虚拟化弱化了对虚拟机特殊指令的被动截获要求,将其转化成客户机操作系统的主动通知。但是,准虚拟化需要修改客户机操作系统的源代码来实现主动通知。

Xen是开源准虚拟化技术的一个例子。操作系统作为虚拟服务器在Xen Hypervisor上运行之前,必须在内核层面进行某些改变。因此,Xen适用于BSD、Linux、Solaris及其他开源操作系统,但是不适用像Windows这些专有操作系统的虚拟化处理,因为它们不是公开源代码,所以无法修改其内核。其架构如图1-4所示。图1-4 准/半虚拟化技术架构

3.操作系统层虚拟化

实现虚拟化还有一个方法,就是在操作系统层面增添虚拟服务器功能。就操作系统层的虚拟化而言,没有独立的 Hypervisor 层。相反,主机操作系统本身就负责在多个虚拟服务器之间分配硬件资源,并且让这些服务器彼此独立。一个明显的区别是,如果使用操作系统层虚拟化,所有虚拟服务器必须运行同一操作系统。

虽然操作系统层虚拟化的灵活性比较差,但本机速度性能比较高。此外,由于架构在所有虚拟服务器上使用单一、标准的操作系统,因此管理起来比异构环境要容易。操作系统层虚拟化的典型应用便是Docker,关于Docker技术在本书第8章会有详细的介绍。1.1.3 存储虚拟化

随着信息业务的不断运行和发展,存储系统网络平台已经成为一个核心平台,大量高价值数据积淀下来。基于对这些数据的应用,人们对平台的要求也越来越高,不光是对于存储容量,还包括对于数据访问性能、数据传输性能、数据管理能力、存储扩展能力等多个方面的要求。可以说,存储网络平台综合性能的优劣,将直接影响整个系统的正常运行。基于这一原因,虚拟化技术又一子领域——虚拟存储技术,应运而生。

其实虚拟化技术并不是一项很新的技术。它的发展应该说是随着计算机技术的发展而发展起来的,其最早始于20世纪70年代。由于当时的存储容量,特别是内存容量成本非常高,容量也很小,大型应用程序或多程序应用就受到了很大的限制。为了突破这样的限制,人们采用了虚拟存储的技术,最典型的应用就是虚拟内存技术。

随着计算机技术以及相关信息处理技术的不断发展,人们对存储的需求越来越大。这样的需求刺激了各种新技术的出现,结果是硬盘性能越来越高、容量越来越大。但是在大量的大中型信息处理系统中,单个硬盘是不能满足需要的,在这样的情况下,存储虚拟化技术就发展起来了。在这个发展过程中也有几个阶段,出现了几种应用。首先是硬盘条带集(RAID,可带容错)技术,其将多个物理硬盘通过一定的逻辑关系集合起来,成为一个大容量的虚拟硬盘。而随着数据量不断增加和对数据可用性要求的不断提高,又一种新的存储技术应运而生,那就是存储区域网络(SAN)技术。

SAN的广域化旨在使存储设备实现成为一种公用设施,任何人员、任何主机都可以随时随地获取各自想要的数据。目前讨论比较多的包括ISCSI、FC OVER IP 等技术,虽然一些相关的标准还没有最终确定,但是存储设备公用化、存储网络广域化是一个不可逆转的潮流。存储虚拟化架构如图1-5所示。图1-5 存储虚拟化架构

所谓虚拟存储,就是把多个存储介质模块(如硬盘、RAID)通过一定的手段集中管理起来,所有的存储模块在一个存储池(Storage Pool)中得到统一管理,从主机和工作站的角度,看到的不是多个硬盘,而是一个分区或者卷,就好像是一个超大容量(如1Tb以上)的硬盘。这是一种可以将多种、多个存储设备统一管理起来,为使用者提供大容量、高数据传输性能的存储系统。

虚拟存储设备需要通过大规模的 RAID 子系统和多个 I/O 通道连接到服务器上,智能控制器提供LUN访问控制、缓存和其他管理功能如数据复制等。这种方式的优点在于存储设备管理员对设备有完全的控制权,而且通过与服务器系统分开,可以将对存储的管理与多种服务器操作系统隔离,并且可以很容易地调整硬件参数。

从虚拟化存储来讲,拓扑结构主要有两种方式:即对称式(带内管理)与非对称式(带外管理)。对称式虚拟存储技术是指虚拟存储控制设备与存储软件系统、交换设备集成为一个整体,内嵌在网络数据传输路径中;非对称式虚拟存储技术是指虚拟存储控制设备独立于数据传输路径之外。1.1.4 网络虚拟化

网络虚拟化是目前业界关于虚拟化细分领域界定最不明确、存在争议较多的一个概念。微软眼中的“网络虚拟化”,是指虚拟专用网络(VPN)。VPN对网络连接的概念进行了抽象,允许远程用户访问组织的内部网络,就像物理上连接到该网络一样。网络虚拟化有助于保护IT环境,防止来自 Internet 的威胁,同时使用户能够快速安全地访问应用程序和数据。

但是网络巨头思科(Cisco)不那么认为。出身、成名且目前称霸于网络的思科公司,在对IT未来的考虑上以网络为核心。它认为在理论上,网络虚拟化能将任何基于服务的传统客户端/服务器安置到“网络上”。这意味着可以让路由器和交换机执行更多的服务,使思科在业界的重要性和营业额都大幅增加。思科认为网络虚拟化由三个部分组成:访问控制、路径提取以及服务优势。从思科的产品规划图上看,该公司的路由器和交换机将拥有诸如安全、存储、VOIP、移动和应用等功能。对思科而言,它们的战略是通过扩大网络基础设备的销售来持续产生盈利。而对用户来讲,这能帮助他们提高网络设备的价值,并调整原有的网络基础设备。

作为网络阵营的另一巨头,3COM公司在网络虚拟化方面的动作比思科更大。3COM的路由器中可以插入一张工作卡。该卡上带有一套全功能的Linux服务器,可以和路由器中枢相连。在这个Linux服务器中,用户可以安装诸如Sniffer、VOIP等软件及安全应用等。此外,该公司还计划未来在Linux卡上运行VMware,以支持用户运行Windows Server。3COM的这个开源网络虚拟化活动名为3COM ON(又名开放式网络)。

网络虚拟化从总体来说,分为纵向分割和横向整合两大类。

1.纵向分割

早期的“网络虚拟化”是指虚拟专用网络(VPN)。VPN对网络连接的概念进行了抽象,允许远程用户访问组织的内部网络,就像物理上连接到该网络一样。网络虚拟化有助于保护 IT 环境,防止来自Internet 的威胁,同时使用户能够快速安全地访问应用程序和数据。

随后的网络虚拟化技术随着数据中心业务要求发展为:多种应用承载在一张物理网络上,通过网络虚拟化分割(称为纵向分割)功能使得不同企业机构相互隔离,但可在同一网络上访问自身应用,从而实现将物理网络进行逻辑纵向分割,虚拟化为多个网络。

如果把一个企业网络分隔成多个不同的子网络——它们使用不同的规则和控制,用户就可以充分利用基础网络的虚拟化功能,而不是部署多套网络来实现这种隔离机制。

网络虚拟化并不是什么新概念,因为多年来,虚拟局域网(VLAN)技术作为基本隔离技术已经得到广泛应用。当前在交换网络上通过VLAN来区分不同业务网段、配合防火墙等安全产品划分安全区域,是数据中心基本设计内容之一。

2.横向整合

从另外一个角度来看,多个网络结点承载上层应用,基于冗余的网络设计带来复杂性,而将多个网络结点进行整合(称为横向整合),虚拟化成一台逻辑设备,在提升数据中心网络可用性、结点性能的同时将极大地简化网络架构。

使用网络虚拟化技术,用户可以将多台设备连接,“横向整合”起来组成一个“联合设备”,并将这些设备看作单一设备进行管理和使用。虚拟化整合后的设备组成了一个逻辑单元,在网络中表现为一个网元结点,管理简单化、配置简单化、可跨设备链路聚合,极大地简化网络架构,同时进一步增强冗余可靠性。1.1.5 应用虚拟化

应用虚拟化通常包括两层含义:一是应用软件的虚拟化;二是桌面的虚拟化。所谓的应用软件虚拟化,就是将应用软件从操作系统中分离出来,通过自己压缩后的可执行文件来运行,而不需要任何设备驱动程序或者与用户的文件系统相连。借助于这种技术,用户可以减小应用软件的安全隐患并降低维护成本,并可以进行合理的数据备份与恢复。

桌面虚拟化就是专注于桌面应用及其运行环境的模拟与分发,是对现有桌面管理自动化体系的完善和补充。当今的桌面环境将桌面组件(硬件、操作系统、应用程序、用户配置文件和数据)联系在一起,给支持和维护带来了很大困难。采用桌面虚拟化技术之后,将不需要在每个用户的桌面上部署和管理多个软件客户端系统,所有应用客户端系统都将一次性地部署在数据中心的一台专用服务器上,这台服务器就放在应用服务器的前面。客户端也将不需要通过网络向每个用户发送实际的数据,只有虚拟的客户端界面(屏幕图像更新、按键、鼠标移动等)被实际传送并显示在用户的计算机上。这个过程对最终用户是一目了然的,最终用户的感觉好像是实际的客户端软件正在他的计算机桌面上运行一样,如图1-6所示。

桌面虚拟化带来的成本效益也是相当诱人的。通过将IT系统的管理集中起来,企业能够同时获得各种不同的效益,从带宽成本节约到IT效率和员工生产力提高,以及当前系统的使用寿命延长等。

在以上的虚拟化技术中,服务器虚拟化技术、应用虚拟化中的桌面虚拟化技术相对成熟,也是使用得较多的技术,而其他虚拟化技术,还需要在实践中进一步检验和完善。图1-6 应用虚拟化1.2 Xen虚拟化技术简介1.2.1 Xen的历史

早在20世纪90年代,伦敦剑桥大学在一个叫作Xenoserver的研究项目中开发了Xen虚拟机。作为Xenoserver的核心,Xen虚拟机负责管理和分配系统资源,并提交必要的统计功能。在那个年代, X86的处理器还不具备对虚拟化技术的硬件支持,所以Xen一开始是作为一个准虚拟化的解决方案出现的。因此,为了支持多个虚拟机,内核必须针对Xen做出特殊的修改才可以运行。为了吸引更多开发人员参与,2002年Xen被正式开源。在先后推出了1.0和2.0版本后,Xen开始被诸多如Red Hat、Novell和Sun的Linux发行版集成,作为其中的虚拟化解决方案。2004年,Intel的工程师开始为Xen添加硬件虚拟化的支持,从而为即将上市的新款处理器做必需的软件准备。在他们的努力下,2005 年发布的Xen 3.0开始正式支持Intel的VT技术和IA64架构,从而使Xen虚拟机可以运行完全没有修改的操作系统。1.2.2 Xen功能概览

Xen是一个直接在系统硬件上运行的虚拟机管理程序。Xen在系统硬件与虚拟机之间插入一个虚拟化层,将系统硬件转换为一个逻辑计算资源池,Xen可将其中的资源动态地分配给任何操作系统或应用程序。在虚拟机中运行的操作系统能够与虚拟资源交互,就好像它们是物理资源一样。

图1-7显示了一个运行虚拟机的Xen系统。图1-7 运行虚拟机的Xen系统

Xen采用ICA协议,通过一种叫作准虚拟化的技术获得高性能,甚至在某些与传统虚拟技术极度不友好的架构上(X86),Xen也有很好的表现。与传统通过软件模拟实现硬件的虚拟机不同,在Intel VT-x支持下,3.0版本之前的Xen需要系统的来宾权限,用来和Xen API 连接。到目前为止,这种技术已经可以运用在NetBSD、GNU/Linux、FreeBSD和Plan 9系统上。Sun微系统公司也正在积极地将Solaris移植到Xen平台上。

Xen 被设计成微内核的实现,其本身只负责管理处理器和内存资源。在 Xen 上面运行的所有虚拟机中,0号虚拟机是特殊的,其中运行的是经过修改的支持准虚拟化的Linux操作系统,大部分的输入输出设备都交由这个虚拟机直接控制,而 Xen 本身并不直接控制它们。这样做可以使基于 Xen的系统最大限度地复用Linux内核的驱动程序。更广泛地说,Xen虚拟化方案在Xen Hypervisor和0号虚拟机的功能上做了聪明的划分,既能够重复使用大部分Linux内核的成熟代码,又可以控制系统之间的隔离性和针对虚拟机进行更加有效的管理和调度。通常,0号虚拟机也被视为Xen虚拟化方案的一部分。

Xen虚拟机可以在不停止的情况下在多个物理机之间实时迁移。在操作过程中,虚拟机在没有停止的情况下,内存被反复地复制到目标机器。虚拟机在最终目的地开始执行之前,会有一次 60~300 毫秒的非常短暂的暂停,以执行最终的同步化,给使用者无缝迁移的感觉。类似的技术被用来暂停一台正在运行的虚拟机到硬盘,并切换到另外一台,第一台虚拟机在以后可以恢复。

Xen已经可以运行在X86系统上,并正在向X86-64、IA64、PPC 移植。移植到其他平台从技术上是可行的,未来有可能实现。

Xen是一个基于X86架构、发展最快、性能最稳定、占用资源最少的开源虚拟化技术。Xen可以在一套物理硬件上安全地执行多个虚拟机,与 Linux 是一个完美的开源组合,Novell Suse Linux Enterprise Server 最先采用了Xen 虚拟技术。它特别适用于整合服务器应用,可有效节省运营成本,提高设备利用率,最大化利用数据中心的IT结构。1.2.3 Xen虚拟化技术的优点

Xen构建于开源的虚拟机管理程序上,结合使用半虚拟化和硬件协助的虚拟化。操作系统与虚拟化平台之间的这种协作支持较简单的虚拟机管理程序开发,来提供高度优化的性能。

Xen提供了复杂的工作负载均衡功能,可捕获CPU、内存、硬盘I/O和网络I/O数据,它提供了两种优化模式:一种针对性能;另一种针对密度。

Xen利用一种名为Citrix Storage Link 的独特的存储集成功能。使用Citrix Storage Link,系统管理员可直接利用来自HP、Dell、NetApp、EMC等公司的存储产品。

Xen 包含多核处理器支持、实时迁移、物理服务器到虚拟机转换(P2V)和虚拟机到虚拟机转换(V2V)工具。集中化的多服务器管理、实时性能监控,以及Windows和Linux的快速性能。1.2.4 Xen虚拟化技术的缺点

Xen会占用相对较大的空间,且依赖于0号虚拟机中的Linux操作系统。

Xen依靠第三方解决方案来管理硬件设备驱动程序,存储、备份、恢复以及容错。

任何具有高I/O速率的操作或任何会吞噬资源的操作都会使Xen陷入困境,使其他虚拟机缺乏资源。

Xen缺少802.1Q 虚拟局域网(VLAN)中继,出于安全考虑,它没有提供目录服务集成、基于角色的访问控制、安全日志记录和审计或管理操作。

Xen目前最大的困难在于Linux内核社区的抵制,这导致Xen相关的内核改动一直不能顺利进入内核源代码,从而无法及时得到内核最新开发成果的支持。1.3 KVM虚拟化技术简介1.3.1 KVM的历史

基于内核的虚拟机(Kernel-Based Virtual Machine,KVM)最初是由以色列公司 Qumranet开发的。KVM在2007年2月被正式合并到Linux 2.6.20核心中,成为内核源代码的一部分。2008年9月4日,Red Hat公司收购了Qumranet,开始在RHEL中用KVM替换Xen,第一个包含KVM的版本是RHEL 5.4。从RHEL 6开始,KVM成为默认的虚拟化引擎。KVM必须在具备Intel VT-x或者AMD-V功能的X86平台上运行。它也被移植到S/390、POWERPC与IA-64平台上。Linux内核3.9版本加入了对ARM架构的支持。

KVM 包含一个为处理器提供底层虚拟化、可加载的核心模块 KVM.KO(KVM-INTEL.KO 或KVM-AMD.KO),使用Qemu(Qemu-KVM)作为虚拟机上层控制的工具。KVM不需要改变Linux或Windows系统就能运行。1.3.2 KVM功能概览

KVM是基于虚拟化扩展(Intel VT-x或Amd-V)的X86硬件,是Linux完全原生的全虚拟化解决方案。部分的准虚拟化支持主要是以准虚拟网络驱动程序的形式用于Linux和Windows客户机系统的。KVM 目前设计为通过可加载的内核模块来进行广泛支持的客户机操作系统,如 Linux、BSD、Solaris、Windows、Haiku、ReactOS和AROS Research Operating System。

在KVM架构中,虚拟机实现为常规的Linux进程,由标准Linux调度程序进行调度。事实上,每个虚拟CPU显示为一个常规的Linux进程。这使KVM能够享受Linux内核的所有功能。

需要注意的是,KVM本身不执行任何模拟,需要用户空间程序通过dev/kvm接口设置一个客户机虚拟服务器的地址空间,向它提供模拟 I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序就是Qemu。

图1-8所示为KVM的基本架构。图1-8 KVM基本架构

下面简单介绍一下KVM的功能特性。

1.内存管理

KVM从Linux继承了强大的内存管理功能。一个虚拟机的内存与任何其他Linux进程的内存一样进行存储,可以以大页面的形式进行交换以实现更高的性能,也可以以硬盘文件的形式进行共享。Numa支持(非一致性内存访问,针对多处理器的内存设计)允许虚拟机有效地访问大量内存。

KVM支持最新的基于硬件的内存虚拟化功能,支持Intel的扩展页表(EPT)和AMD的嵌套页表(NPT,也叫“快速虚拟化索引-RVI”),以实现更低的CPU利用率和更高的吞吐量。

内存页面共享通过一项名为内核同页合并(Kernel Same-Page Merging,KSM)的内核功能来支持。KSM扫描每个虚拟机的内存,如果虚拟机拥有相同的内存页面,KSM将这些页面合并到一个在虚拟机之间的共享页面,仅存储一个副本。如果一个客户机尝试更改这个共享页面,它将得到自己的专用副本。

2.存储

KVM能够使用Linux支持的任何存储方式来存储虚拟机镜像,包括具有IDE、SCSI和SATA的本地硬盘,网络附加存储(NAS)(包括NFS和SAMBA/CIFS),或者支持ISCSI和光纤通道的SAN。多路径I/O可用于改进存储吞吐量和提供冗余。由于KVM是Linux内核的一部分,它可以利用所有领先存储供应商都支持的一种成熟且可靠的存储基础架构,它的存储堆栈在生产部署方面具有良好的记录。

KVM 还支持全局系统(GFS2)等共享文件系统上的虚拟机镜像,以允许虚拟机镜像在多个宿主之间共享或使用逻辑卷共享。硬盘镜像支持按需分配,仅在虚拟机需要时分配存储空间,而不是提前分配整个存储空间,提高存储利用率。KVM的原生硬盘格式为QCOW2,它支持快照,允许多级快照、压缩和加密。

3.设备驱动程序

KVM 支持混合虚拟化,其中准虚拟化的驱动程序安装在客户机操作系统中,允许虚拟机使用优化的I/O接口而不使用模拟的设备,从而为网络和块设备提供高性能的I/O。KVM准虚拟化的驱动程序使用IBM和Red Hat联合Linux社区开发的Virtio标准,它是一个与虚拟机管理程序独立的、构建设备驱动程序的接口,允许为多个虚拟机管理程序使用一组相同的设备驱动程序,能够实现更出色的虚拟机交互。

4.Linux的性能和可伸缩性

KVM也继承了Linux的性能和可伸缩性。KVM虚拟化性能在很多方面(如计算能力、网络带宽等)已经可以达到非虚拟化原生环境95%以上的性能。KVM的扩展性也非常好,客户机和宿主机都可以支持非常多的CPU数量和非常大的内存。例如,Red Hat官方文档就介绍过,RHEL 6.X系统中的一个KVM客户机可以支持160个虚拟CPU和高达2Tb的内存,KVM宿主机支持4096个CPU核心和高达64Tb的内存。1.3.3 KVM的优势

1.开源

KVM是一个开源项目,这就决定了KVM一直是开放的姿态,许多虚拟化的新技术都是首先在KVM上应用,再到其他虚拟化引擎上推广的。

虚拟化一般网络和存储都是难点。网络方面,SR-IOV技术就是最先在KVM上应用,然后推广到其他虚拟化引擎上的。再比如SDN、Open vSwitch这些比较新的技术,都是先在KVM上得到应用的。

硬盘方面,基于SSD的分层技术,也最早在KVM上得到应用。

KVM背靠Linux这棵大树,和Linux系统紧密结合,在Linux上的新技术都可以马上应用到KVM上。围绕KVM的是一个开源的生态链,从底层的Linux系统,到中间层的Libvirt管理工具,再到云管理平台OpenStack,都是如此。

2.性能

KVM吸引许多人使用的一个动因就是性能。在同样的硬件条件下,KVM能提供更好的虚拟机性能,主要是因为KVM架构简单,代码只有2万行,并且其一开始就支持硬件虚拟化。这些技术特点保证了KVM的性能。

3.免费

因为KVM是开源项目,所以绝大部分KVM的解决方案都是免费方案。随着KVM的发展,KVM虚拟机越来越稳定,兼容性也越来越好,因而其也就得到越来越多的应用。

4.广泛免费的技术支持

免费并不意味着KVM没有技术支持。在KVM的开源社区,数量巨大的KVM技术支持者都可以提供KVM技术支持。另外,若需要商业级支持,还可以购买Red Hat公司的服务。1.3.4 KVM虚拟化技术的未来

KVM技术一出现,就受到厂商的大力推广。Red Hat公司一直将KVM作为虚拟化战略的一部分,并于2009年年底发布了Red Hat Enterprise Linux 5.4,并在之后继续大力推行这种转型,鼓励用户使用KVM 为其首选的虚拟化平台。2011年,随着新版操作系统的Red Hat Enterprise Linux 的发布,Red Hat公司完全放弃了以开源Xen为虚拟化平台的思路,开始支持KVM作为Hypervisor。KVM作为一个快速成长的 Linux 虚拟化技术,已经获得了许多厂商的支持,如 Canonical、Novell 等。Canonical公司的Ubuntu服务器操作系统是第一个提供全功能的KVM虚拟化栈的主要Linux发行版。

而开放虚拟化联盟(OVA)也在为KVM护航,这个由IBM、Red Hat、Intel等重量级厂商组成的联盟才成立不过半年,成员就迅速达到200 个以上。该联盟致力于促进基于内核的虚拟机(KVM)等开放虚拟化技术的应用,鼓励互操作性,为企业在虚拟化方面提供更多的选择、更高的性能和更具吸引力的价格。

尽管KVM是一个相对较新的虚拟机管理程序,但是其诞生不久就被Linux社区接纳,成为随Linux内核发布的轻量型模块。它与Linux内核集成,使KVM可以直接获益于最新的Linux内核开发成果,如更好的进程调度支持、更广泛的物理硬件平台的驱动、更高的代码质量等。

KVM比较年轻,所以出生的时候就吸取了其他虚拟化技术的优点,一开始就支持硬件虚拟化技术,没有历史兼容包袱。所以KVM推出来的时候,性能非常优异。目前,KVM是OpenStack平台上首选的虚拟化引擎。国内新一代的公有云全部采用KVM 作为底层的虚拟化引擎。KVM 已经成为开源解决方案的主流选择。

但是作为相对较新的虚拟化方案,KVM 一直没有成熟的工具可用于管理KVM 服务器和客户机。不过,现在随着Libvirt、Virt-Manager等工具的逐渐完善,KVM管理工具在易用性方面的劣势已经逐渐被克服。另外,KVM 仍然可以改进虚拟网络支持、虚拟存储支持、安全性、可用性、容错性、电源管理、HPC/实时支持、虚拟CPU可伸缩性、跨供应商兼容性、科技可移植性等方面。不过,现在KVM开发者社区比较活跃,也有不少大公司的工程师参与开发,我们有理由相信它的很多功能都会在不远的将来得到完善。1.4 Red Hat RHEV虚拟化系统简介1.4.1 RHEV简介

红帽企业虚拟化(Red Hat Enterprise Virtualization,RHEV)是一个服务器虚拟化的管理平台。由 RHEV-M(Manager)、RHEV-H(Hypervisior)和存储组成,能够简便、集中地对 KVM 虚拟机进行创建、删除、迁移、快照等操作,实现企业服务器物理资源的充分使用。是一种非常适合中小型企业的虚拟化解决方案。1.4.2 RHEV支持的功能(1)在线迁移(200ms之内完成VM到物理内存的迁移,但迁移过程中不能有过多的I/O操作);(2)高可用;(3)系统计划调度(自动迁移,设定CPU负载阀值);(4)电源管理;(5)模板管理;(6)快照(3.1支持1张快照,3.2以上支持多张快照)。1.4.3 RHEV与KVM的区别

基于内核的虚拟机(Kernel-Based Virtual Machine,KVM)是一个开源的系统虚拟化模块。

常常有人会将RHEV和KVM混为一谈,其实两者之间并不能画等号。RHEV是企业虚拟化解决方案,即虚拟机的集中管理平台。RHEV能够面向多台服务器组成虚拟化平台架构。而KVM简而言之就是PC上的虚拟机软件,在PC中充当着虚拟机的VMM(Virtual Machine Manager)。RHEV包含了KVM的实现。1.4.4 RHEV的组成

一个RHEV虚拟化平台由(RHEV-M)+(RHEV-H)+Storage组成。图1-9是RHEV组成图:图1-9 RHEV的组成图

1.RHEV-M

RHEV-M(Manager)是 RHEV 的集中管理接口控制台,负责控制、管理虚拟化平台,能够管理VM、Disk和Image,进行高可用设置,创建虚拟机模板、快照等,这些都可以通过RHEV-M提供的Web界面来完成。注意:RHEV-M本身并不运行VM,仅提供管理功能。RHEV-M能够管理两种不同类型的H端实现。

2.RHEV-H

RHEV-H(Hypervisor虚拟机管理程序)是一个能够被RHEV-M连接并管理的Hypervisor,在RHEV中提供运算体的功能。RHEV-H端具有两种实现:(1)直接安装包含了Hypervisor代码的微型操作系统。这是一个专为RHEV-H端设计的微型操作系统,能够更加充分地使用H端服务器的物理资源,这也是Red Hat公司官方推荐的做法。(2)在RHEL Host上安装Hypervisor软件,将已有的RHEL Host配置成为RHEV-H端。这使得在现有RHEL Host环境中部署RHEV变得更加容易。如果用户想从RHEV管理运行在RHEL-H端上的虚拟机,可注册RHEL服务器到RHEV-M控制台。

RHEV-H提供了CPU、内存、硬盘等物理资源来运行虚拟机,简而言之就是虚拟机的载体。若使用Hpyervisor微型系统来实现H端,只需要占用非常少的物理资源,它只包含了RHEL中运行虚拟机所需代码的一个子集。这个 Hypervisor 的基础文件系统只有 100 Mb,并且运行在内存中来避免对基础镜像造成改变。而且这样的H端会强制打开专用的安全增强型SElinux以及防火墙策略,所以只需要较少的补丁和维护就能确保其安全性。

Hypervisor 最重要的功能就是翻译虚拟机中发出的敏感指令(如 Shutdown/Reboot 等)。当Hypervisor接收到敏感指令时,就能判断出此指令是由真机还是虚拟机发出的。如果是虚拟机发出的话, Hypervisor就会捕获敏感指令并翻译后交由真机CPU执行虚拟机相应的操作,避免真机的CPU接收并错误执行。

3.存储

RHEV除了支持专业的存储设备之外,也可以使用ISCSI、NFS等存储方式,来为虚拟化平台提供Data和ISO等存储域。1.4.5 RHEV架构

图1-10展示了整体的RHEV架构。图1-10 整体RHEV架构

1.LDAP/IPA/AD

RHEV 可以设置多种拥有着不同权限的角色,通过为不同的用户指定角色来实现用户权限限制。LDAP/IPA(Linux)、AD(Windows)是提供给用户的认证体系。

2.Web Service

RHEV 提供了多种类型的 API 接口,其中最常用的就是供管理员使用的 RHEV 管理界面Administration Portal和供普通用户使用的虚拟机应用界面User Portal。当然RHEV还暴露了Rest API和CLI,提供给开发人员。

3.PostgreSQL

PostgreSQL数据库主要用于存储虚拟机的状态、模板、快照与报表等信息。注意:PostgreSQL数据库并不用于存储虚拟机。虚拟机自身的数据存放在专用存储设备ISCSI服务器中。

4.VDSM

RHEV-M使用VDSM(虚拟桌面服务器管理器)与RHEV-H通信。VDSM是位于Hypervisor之上的管理代理,它促进了 RHEV-M 管理控制台以及 RHEV-H 端的通信。VDSM 同样还允许RHEV-M管理RHEV-H端中的虚拟机以及存储,收集有关主机及客户机的性能统计数据。但是VDSM不能与Libvirt同时运行。Libvirt是管理RHEL虚拟环境KVM的类库指令。注意:如果用户正在规划RHEV的实施,一定要确保Libvirt在RHEV管理的所有H端中都是无效的。否则,Libvirt和VDSM都不能正常运行。

5.JBoss

JBoss作为RHEV的中间件是连接其他各组件的中间枢纽,能够在不同组件间收集信息、传递信息。JBoss通过在RHEV中不同的组件(功能单元)之间定义良好的接口和契约,使得不同的组件之间可以联系起来。这些接口是采用中立的方式进行定义的,接口独立于实现服务的硬件平台、OS 和编程语言。SOA能够让这些构建在各种系统中的组件使用一种统一和通用的方式进行交互。1.4.6 RHEV中的资源

Red Hat Enterprise Virtualization系统的资源可以分为两类:物理资源和逻辑资源。物理资源是指那些物理存在的部件,如主机和存储服务器。逻辑资源包括非物理存在的组件,如逻辑网络和虚拟机模板。

1.数据中心

数据中心是一个虚拟环境中最高级别的容器。它包括了所有物理和逻辑资源(群集、虚拟机、存储和网络)。

2.群集

一个群集由多个物理机组成。它可以被认为是一个为虚拟机提供资源的资源池。同一个群集中的主机共享相同的网络和存储设备,它们组成一个迁移域,虚拟机可以在这个迁移域中的主机间迁移。

3.逻辑网络

逻辑网络就是一个物理网络的逻辑代表。逻辑网络把 Manager、主机、存储设备和虚拟机之间的网络流量分隔为不同的组。

4.主机

主机就是一个物理的服务器,在它上面可以运行一个或多个虚拟机。主机会被组成不同的群集,虚拟机可以在同一个群集中的主机间迁移。

5.存储池

存储池就是一个特定的存储类型(如ISCSI、光纤、NFS或POSIX)映象存储仓库的逻辑代表。每个存储池可以包括多个域,用来存储硬盘镜像、ISO镜像或用来导入和导出虚拟机镜像。

6.虚拟机

虚拟机就是包括了一个操作系统和一组应用程序的虚拟桌面(Virtual Desktop)或虚拟服务器(Virtual Server)。多个相同的虚拟机可以在一个池(Pool)中创建。一般用户可以访问虚拟机,而有特定权限的用户可以创建、管理和删除虚拟机。

7.虚拟机池

虚拟机池就是一组可以被用户使用的、具有相同配置的虚拟机。虚拟机池可以用来满足用户不同的需求。例如,为市场部门创建一个专用的虚拟机池,而为研发部门创建另一个虚拟机池。

8.快照

快照就是一个虚拟机在一个特定时间点上的操作系统和应用程序的记录。在安装新的应用程序或对系统进行升级前,用户可以为虚拟机创建一个快照。当系统出现问题时,用户可以使用快照来把虚拟机恢复到它原来的状态。

9.用户类型

Red Hat Enterprise Virtualization支持多级的管理员和用户,不同级别的管理员和用户会有不同的权限。系统管理员有权力管理系统级别的物理资源,如数据中心,主机和存储。而用户在获得相应权限后,可以使用单独的虚拟机或虚拟机池中的虚拟机。

10.事件和监控

事件和监控是指与事件相关的提示、警告等信息。管理员可以使用它们来帮助监控资源的状态和性能。

11.报表

RHEV虚拟化架构报表系统基于JasperReports报表模块,可以从报表模块以及数据仓库中获得各种报表。报表模块可以生成预定义的报表,也可以生成特定的报表,用户也可以使用支持 SQL 的查询工具来从数据仓库中收集相关的数据(如主机、虚拟机和存储设备的数据)来生成报表。1.4.7 RHEV虚拟化技术的优点(1)性能和可扩展性:为实现企业级的虚拟化应用程序,如Oracle、SAP和Microsoft Exchange,为其提供领先的性能和可扩展性。(2)安全性:业界领先的安全性,在安全增强型Red Hat企业Linux内核基础上构建。(3)企业功能:虚拟化管理功能,包括实时迁移、高可用性、负载均衡、节能等。(4)灵活性:通过消除桌面操作系统和基础硬件之间的依赖性,实现业务灵活性和连续性。(5)成本优势:与其他解决方案相比较,凭借Red Hat软件订阅模式的强大功能,能够以更低的购置和总拥有成本获得相同或更好的功能集,从而获得收益。1.4.8 RHEV虚拟化技术的缺点(1)技术不成熟:KVM 的出现不过几年时间,在可用资源、平台支持、管理工具、实施经验方面当然不能与出现8年之久的Xen相比。(2)需要Windows支持:KVM 3.0之前的RHEV-M管理程序需要Windows支持,这是KVM在部署过程中最大的障碍。Red Hat公司已经意识到这个问题的严重性,从KVM 3.0开始,开发出基于Linux的RHEV-M,取消了其只能运行于Windows服务器上的尴尬,这一改动得到大量Linux用户的支持。(3)管理的物理服务器数量少:每台M端只能管理500台以内的H端服务器。1.5 其他虚拟化技术介绍

前面几小节简单介绍了Xen、KVM、Red Hat RHEV几种虚拟化技术,其中Xen和KVM都是开源的,RHEV也是在KVM技术的基础上扩展其功能的。Xen和KVM作为虚拟化技术中两个最著名的开源虚拟机,开放源代码的好处在于有人数庞大的开发社区作为支撑,同时源代码公开也有利于人们学习和研究虚拟机的具体实现。但是,把虚拟机作为商品出售给终端用户,就需要一些商业化的虚拟机解决方案。下面简单介绍常见的一些商业化公司的虚拟化技术。1.5.1 VMware

VMware公司创办于1998年,从公司的名称就可以看出,这是一家专注于提供虚拟化解决方案的公司。VMware公司很早就预见到虚拟化在未来数据中心中的核心地位,因此有针对性地开发虚拟化软件,从而抓住了21世纪初虚拟化兴起的大潮,成为虚拟化业界的标杆。VMware公司从创办至今,一直占据着虚拟化软件市场的最大份额,是毫无争议的龙头老大。VMware公司作为最成熟的商业虚拟化软件提供商,其产品线是业界覆盖范围最广的。接下来对VMware的主要产品进行简单的介绍。

1.VMware Workstation

VMware Workstation 是 VMware 公司销售的运行于台式机和工作站上的虚拟化软件,也是VMware公司第一个面市的产品(1999年5月)。该产品最早采用了VMware在业界知名的二进制翻译技术,在X86 CPU硬件虚拟化技术还未出现之前,为客户提供了纯粹的基于软件的全虚拟化解决方案。作为最初的拳头产品,VMware公司投入了大量的资源对二进制翻译进行优化,其二进制翻译技术带来的虚拟化性能甚至超过第一代的CPU硬件虚拟化产品。该产品如同KVM,是“类型二”虚拟机,需要在宿主操作系统之上运行。

2.VMware ESX Server

ESX服务器(一种能直接在硬件上运行的企业级的虚拟平台)是虚拟的SMP,它能让一个虚拟机同时使用4个物理处理器,和VMFS一样,它能使多个ESX服务器分享块存储器。该技术还提供一个虚拟中心来控制和管理虚拟化的IT环境:DRS从物理处理器创造资源工具;HA提供从硬件故障自动恢复功能;综合备份可使LAN-Free自动备份虚拟机器;VMotion存储器可允许虚拟机硬盘自由移动;更新管理器自动更新修改补丁和更新管理;能力规划能使 VMware 的服务提供商执行能力评估;转换器把本地和远程物理机器转换到虚拟机器;实验室管理可自动化安装、捕捉、存储和共享多机软件配置;ACE允许桌面系统管理员对虚拟机应用统一的企业级IT安全策略,以防止不可控台式计算机带来的风险。虚拟桌面基础设施可主导个人台式计算机在虚拟机运行的中央管理器;虚拟桌面管理是联系用户到数据库中的虚拟计算机的桌面管理服务器;VMware生命管理周期可通过虚拟环境提供控制权。1.5.2 VirtualBox

Oracle VirtualBox是由德国Innotek软件公司出品的虚拟机软件,现在由甲骨文Oracle公司进行开发,是甲骨文公司XVM虚拟化平台技术的一部分。它提供使用者在32位或64位的Windows、Solaris及 Linux 操作系统上虚拟其他 X86 的操作系统。使用者可以在 VirtualBox 上安装并执行 Solaris、Windows、DOS、Linux、OS/2 Warp、OpenBSD及FreeBSD等操作系统作为客户端操作系统。最新的VirtualBox还支持运行Android 4.0系统。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载