《云安全原理与实践》——3.1 主机虚拟化技术概述-阿里云开发者社区

开发者社区> 华章出版社> 正文

《云安全原理与实践》——3.1 主机虚拟化技术概述

简介: 本节书摘来自华章计算机《云安全原理与实践》一书中的第3章,第3.1节,作者:陈兴蜀,葛龙著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.1 主机虚拟化技术概述

虚拟化技术经过半个多世纪的发展,已日趋成熟并逐渐得到广泛的应用,成为云计算的基础技术。
1959年,在国际信息处理大会上,著名科学家克里斯托弗(Christopher Strachey)发表了一篇名为“大型高速计算机中的时间共享”(Time Sharing in Large Fast Computers)的学术报告。在该报告中,他提出了虚拟化的基本概念,同时这篇文章也被认为是对虚拟化技术的最早的论述。
1965年,IBM公司发布IBM7044,它被认为是最早在商业系统中实现的虚拟化。它通过在一台大型主机上运行多个操作系统,形成若干个独立的虚拟机,让每一个用户可以充分利用整个大型机资源,有效解决了大型机资源利用率不足的问题。
1999年,由于X86平台已具备高效的处理能力,VMware公司在X86平台上推出了商用的虚拟化软件。这也标志着虚拟化技术从大型机时代走向了PC服务器的时代。
现在,随着云计算技术的快速发展,作为与云计算密不可分的虚拟化技术也得到了进一步的发展。越来越多的厂商,包括VMware、Citrix、微软、Intel、Cisco等都加入了虚拟化技术的市场竞争,虚拟化技术在未来将具有广阔的应用前景。
3.1.1 主机虚拟化的概念
有很多标准组织对虚拟化(virtualization)进行了定义。维基百科对于虚拟化的描述是:在计算机技术中,虚拟化技术或虚拟技术是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等)予以抽象、转换后呈现出来,并可供分区、组合为一个或多个电脑配置环境。由此,打破实体结构间的不可切割的障碍,使用户可以比原本的配置更好的方式来应用这些电脑硬件资源。这些资源的新虚拟部分是不受现有资源的架设方式、地域或物理配置所限制。虚拟化资源一般包括计算能力和数据存储。开放网格服务体系(Open Grid Services Architecture,OGSA)对虚拟化的定义是:虚拟化是对一组类似资源提供的通用抽象接口集,进而隐藏了属性和操作间的差异。IBM则认为,虚拟化是资源的逻辑表示,它不受物理限制的约束。
尽管不同的组织机构对虚拟化有不同的定义,但总的来说,我们可以这样理解虚拟化:虚拟化是对各种物理资源和软件资源的抽象利用。这里所说的资源包括硬件资源(如CPU、内存、网络等),也包括软件资源(如操作系统、应用程序等)。对于用户来说,他只需要利用虚拟化环境来完成自己的工作,而不需要了解虚拟化逻辑资源的内部细节;在虚拟化环境下,用户可以在其中实现与在真实环境下相同的功能或部分功能。
主机虚拟化作为一种虚拟化实现方案,旨在通过将主机资源分配到多台虚拟机,在同一企业级服务器上同时运行不同的操作系统,从而提高服务器的效率,并减少需要管理和维护的服务器数量。与传统服务器相比,主机虚拟化在成本、管理、效率和灾备等方面,具有显著的优势。通过主机虚拟化实现方案,企业能够极大地增强IT资源的灵活性,降低管理成本并提高运营效率。image

如图3-1所示,主机虚拟化架构通常由物理主机、虚拟化层软件和运行在虚拟化层上的虚拟机组成。物理主机是由物理硬件(包括CPU、内存、I/O设备)所组成的物理机器;虚拟化层软件又被称作Hypervisor或者虚拟机监视器(Virtual Machine Monitor,VMM),它的主要功能是将物理主机的硬件资源进行调度和管理,并将其分配给虚拟机,管理虚拟机与物理主机之间资源的访问和交互。虚拟机则是运行在虚拟化层软件之上的各个客户机操作系统,用户可以像使用真实计算机一样使用它们来完成工作。对于虚拟机上的各个应用程序来说,虚拟机就是一台真正的计算机。
3.1.2 主机虚拟化实现方案
在基本遵循主机虚拟化架构的前提下,业界主流公司都提出了其主机虚拟化解决方案,其典型代表有:VMware Workstation、Microsoft Virtual PC、Xen、KVM等。
1.?VMware Workstation
VMware Workstation是一个基于主机的虚拟机产品,可以在Windows、Linux和Macintosh等主流操作系统上运行。它包含内核VMM、虚拟机扩展驱动VMX和VMware应用程序三个模块,VMM负责虚拟机的创建管理等核心工作;VMX驱动运行在Ring0特权级,辅助VMM完成虚拟机操作系统触发的I/O操作;VMware应用程序运行在Ring3特权级,是VMware Workstation的人机界面。当启动VMware应用程序时,VMX驱动将VMM加载到核心区域,并赋予VMM和VMX驱动Ring0特权级,虚拟机操作系统能够探测到VMX和VMware应用程序,但是无法感知到VMM。VMM可以直接控制处理器内存,或者管理VM与主机通信来完成虚拟机I/O等特殊指令。
当虚拟机操作系统或在其之上运行的应用程序执行计算时,虚拟机可以获得处理器的控制权,程序直接在处理器硬件上执行。当虚拟机需要执行I/O操作或者执行敏感指令时,VMM模块就会捕获这些指令并将处理器切换到VMM控制模式,在主机环境中由VMX模块或VM应用模拟执行I/O,必要时由主机操作系统触发真实I/O。由于I/O是由虚拟机操作系统引发,因此执行结果将通过VMM传递回虚拟机。虚拟机的处理器和内存调用基本是靠硬件实现,执行效率高,而I/O操作虚拟环境切换,导致虚拟机I/O性能较低。
2.?Microsoft Virtual PC
微软公司的Virtual PC是一款基于主机操作系统的虚拟化产品,与VMware Workstation非常类似。Virtual PC可以运行于Windows操作系统和Macintosh操作系统上,在操作系统上支持多个Windows操作系统实例及其应用程序的运行。与VMware相比,Virtual PC有很多不足,如不支持Windows以外的操作系统(Linux、FreeBSD、Solaris等);Virtual PC虚拟机不能修改已经赋予虚拟机使用的虚拟硬件设备,不支持SCSI设备,因此局限性比较大。Virtual PC有一项特殊的功能,允许用户撤销在虚拟磁盘中所做的操作,使虚拟机恢复先前的状态,这在测试中非常有用。
3.?Xen
Xen采用半虚拟化技术,需要对操作系统进行修改才能与虚拟机监视器协同工作,这也就使得Xen无需硬件支持就能以较高效率实现虚拟化。在Xen中,虚拟机被称为域(Domain),其中,Domain 0是一个管理域,它作为一个特殊域,可直接访问硬件资源,协助虚拟机监视器完成虚拟机的管理工作,为虚拟机监视器提供扩展服务。与Domain 0相比,普通虚拟机只能访问虚拟硬件资源,我们称之为普通域。虚拟机监视器运行在Ring 0特权级上,Domain 0的内核运行在Ring 1上,它拥有系统I/O等硬件设备,负责向其他域提供虚拟硬件资源。Domain 0作为整个系统的管理平台,可以通过超级调用(Hypercalls,是一种对Hypervisor的调用申请,类似于操作系统中的系统调用)来创建、保存、恢复、移植和销毁普通虚拟机。
Xen普通虚拟机(Domain U)不能访问自身之外的任何硬件资源,包括虚拟机监视器拥有的硬件资源,但是可以通过Hypercalls向虚拟机监视器申请各种硬件服务,如内存更新、Domain 0支持、处理器状态等,并且Hypercalls支持批处理调用,即能将Hypercalls集中在一个队列中统一处理,提高系统处理速度。
4.?KVM
KVM和Xen是两个比较接近的开源虚拟化实现方案,但是它们依然有很多不同。KVM作为一个Linux内核核心模块,已经成为Linux的一个组成部分。KVM虚拟化实现方案充分利用了Linux进程调度算法和内存管理技术,任何Linux内核性能的改进或版本提升均可直接应用于KVM虚拟化实现方案中,从而使KVM虚拟机获得性能上的提高。KVM充分利用了Linux内核模块简单而高效的特点,修改KVM模块无需重新编译Linux内核,只需在Linux中重新加载修改后的KVM模块即可。
3.1.3 主机虚拟化的特性
在高性能的物理硬件产能过剩以及老旧硬件产能过低的情况下,为了实现硬件资源的合理分配和使用,虚拟化技术应运而生。不同类型的虚拟化技术使软件资源和硬件资源、底层资源和上层资源之间的耦合度降低,资源的利用方式也发生变化。以单个主机资源的利用方式为例,虚拟化前后,主机资源的利用方式发生的变化如图3-2及表3-1所示。

image

主机虚拟化带来便利的同时也带来了新的挑战,主要体现在如何合理地分配一台物理主机的资源给多个虚拟机、如何确保多个虚拟机的运行不发生冲突、如何管理一个虚拟机和其拥有的各种资源、如何使虚拟化系统不受硬件平台的限制。这些与传统的资源利用的不同正是主机虚拟化技术的特性所在,同时也是服务器虚拟化(主机虚拟化在物理服务器上的实现)在实际环境中进行有效运用需要具备的特性,分别是:多实例、隔离性、封装性和高性能。
1)多实例 通过服务器虚拟化技术,实现了从“一个物理服务器一个操作系统实例”到“一个物理服务器多个操作系统实例”的转变。在一个物理服务器上虚拟出多台虚拟机,支持多个操作系统实例,这样就可以把服务器的物理资源进行逻辑整合,供多个虚拟机实例使用;可以根据实际需要把处理器、内存等硬件资源动态分配给不同的虚拟机实例;可以根据虚拟机实例的功能划分资源比重,对物理资源进行可控调配。与单服务器单操作系统的传统的服务器管理模式相比,多实例特性既可以利用有限的资源进行最大化的管理,又可以节省人力资源。
2)隔离性 虚拟机之间可以采用不同的操作系统,因此每个虚拟机之间是完全独立的。在一台虚拟机出现问题时,这种隔离机制可以保障其他虚拟机不会受其影响。其数据、文档、资料等集合不会丢失。也就是说,既方便系统管理员进行对每一台虚拟机进行管理,又能使虚拟机之间不受干扰,独立工作。而每个虚拟机内互访问,又可以通过所部署的网络进行通信,就如同在同一网域内每台计算机之间的数据通信一样。
3)封装性 采用了服务器虚拟化后,每台虚拟机的运行环境与硬件无关。通过虚拟化进行硬件资源分配,每台虚拟机就是一台独立的个体,可以实现计算机的所有操作。封装使不同硬件间的数据迁移、存储、整合等变得易于实现。在同一台物理服务器上运行的多个虚拟机会通过统一的逻辑资源管理接口来共用底层硬件资源,这样就可以将物理资源按照虚拟机不同的应用需求进行分配。将硬件封装为标准化的虚拟硬件设备,提供给虚拟机内的操作系统和应用程序使用,也可以保证虚拟机的兼容性。
4)高性能 服务器虚拟化是将服务器划分为不同的虚拟管理区域。其中的虚拟化抽象层通过虚拟机监视器或者虚拟化平台来实现,这会产生一定的开销,这些开销即为服务器虚拟化的性能损耗。服务器虚拟化的高性能是指虚拟机监视器的开销应控制在可承受的范围
之内。
3.1.4 主机虚拟化的关键技术
在x86体系结构下,主机虚拟化的主要技术包括CPU虚拟化、内存虚拟化、I/O虚拟化以及虚拟机的实时迁移。
1.?CPU虚拟化
CPU虚拟化是VMM的核心部分,由于内存和I/O操作的指令都是敏感指令,因此对于内存虚拟化和I/O虚拟化的实现都是依赖于CPU虚拟化而完成的。所谓敏感指令,是指原本需要在操作系统最高特权级下执行的指令,这样的指令不能在虚拟机内直接执行,而是交由VMM处理,并将结果重新返回给虚拟机。CPU虚拟化的目的就是让虚拟机中执行的敏感指令能够触发异常而陷入到VMM中,并通过VMM进行模拟执行。在x86体系结构当中,处理器拥有4个特权级,分别是Ring 0、Ring 1、Ring 2、Ring 3。运行级别依次递减。其中位于用户态的应用程序运行在Ring 3特权级上,而位于内核态的代码需要对CPU的状态进行控制和改变,需要较高的特权级,所以其运行在Ring 0特权级上。
在x86体系结构中实现虚拟化时,由于虚拟化层需要对虚拟机进行管理和控制,如果虚拟化层运行在Ring 0特权级上,则客户机操作系统只能够运行在低于Ring 0的特权级别。但由于在客户机操作系统中的某些特权指令,如中断处理和内存管理指令,如果没有运行在Ring 0特权级,则可能会出现语义冲突导致指令不能够正常执行。针对这样的问题,研究者们提出了两种解决方案,分别是全虚拟化(Full-virtualization)和半虚拟化(Para-virtualization),两者的区别如图3-3所示。

image

全虚拟化采用了二进制动态代码翻译技术(Dynamic Binary Translation),这种方法在敏感指令之前插入陷入指令。当虚拟机需要执行这些敏感指令时,会先通过陷入指令陷入到虚拟机监视器中。虚拟机监视器将需要执行的敏感指令动态转换为具有相同功能的指令序列,再交由虚拟机执行。通过这样的方法,非敏感指令由虚拟机直接处理执行,而敏感指令则通过陷入虚拟机监视器进行指令转换后再执行。全虚拟化解决方案的优点是不需要对客户机操作系统进行修改,因此可以适配多种类型的操作系统,但缺点在于指令的动态转换需要一定的性能开销。
半虚拟化解决方案则通过对客户机操作系统进行修改来解决虚拟机敏感指令不能正常执行的问题。在半虚拟化中,被虚拟化平台托管的客户机操作系统通过修改其操作系统,将所有敏感指令替换成对底层虚拟化平台的超级调用。虚拟化平台也为这些敏感的特权指令提供了调用接口。形象地说,半虚拟化中的客户机操作系统被修改后,知道自己处在虚拟化环境中,从而主动配合虚拟机监视器,在需要的时候对虚拟化平台进行调用来完成相应指令的执行。半虚拟化解决方案的优点是其性能开销小于全虚拟化解决方案。但缺点在于,由于对客户机操作系统进行了修改,使得客户机操作系统能够感知到自己处在虚拟化环境中,不能够保证虚拟机监视器对虚拟机的透明性。而且半虚拟化对客户机操作系统版本有一定的限制,降低了客户机操作系统与虚拟化层之间的兼容性。
上述的全虚拟化与半虚拟化解决方案都属于通过软件方式来完成的虚拟化,但由于两者都存在一定的性能开销或者是增加了系统开发维护的复杂性。为了解决以上问题,产生了通过硬件来辅助完成CPU虚拟化的方式,即硬件辅助虚拟化技术。当今两大主流的硬件厂商Intel公司和AMD公司分别推出了各自的硬件辅助虚拟化技术Intel VT和AMD-V。以Intel VT技术为例,它在处理器中增加了一套虚拟机扩展指令集(Virtual Machine Extensions,VMX)用于虚拟化环境的相关操作。Intel VT技术将处理器运行模式分为根模式(root)和非根模式(non-root)。对于虚拟化层而言,它运行在根模式下。对于客户机操作系统而言,它运行在非根模式下。由于两种运行模式都具备从Ring 0到Ring 3的四个特权级,所以很好地保留了全虚拟化和半虚拟化的优点,同时又弥补了两者的不足。
2.?内存虚拟化
物理机的内存是一段连续分配的地址空间,虚拟机监视器上层的各个虚拟机共享物理机的内存地址空间。由于虚拟机对于内存的访问是随机的,并且又需要保证虚拟机内部的内存地址是连续的,因此虚拟机监视器就需要合理映射虚拟机内部看到的内存地址到物理机上的真实内存地址。虚拟机监视器对物理机上的内存进行管理,并根据每个虚拟机对内存的需求对其进行合理分配。所以,从虚拟机中看到的“内存”不是真正意义上的物理内存,而是经过虚拟机监视器进行管理的“虚拟”物理内存。在内存虚拟化当中,存在着虚拟机逻辑内存、虚拟机看到的物理内存以及真实物理主机上的内存三种类型,这三种内存地址空间也分别称为虚拟机逻辑地址、虚拟机物理地址以及机器地址,如图3-4所示。

image

在内存虚拟化中,虚拟机逻辑地址与真实物理主机上的机器地址之间的映射是通过内存虚拟化中的内存管理单元来完成的。现阶段,内存虚拟化的实现方法主要有两种,分别是影子页表法和页表写入法,如图3-5所示。

image

影子页表法是指在客户机操作系统中维护了虚拟机自己的页表。该页表中保存的是虚拟机逻辑地址到虚拟机物理地址的映射关系,而在虚拟机监视器当中,为每一台虚拟机也都维护了一套页表,该页表中保存的是当前客户机操作系统页表物理地址到真实物理机机器地址的映射关系。在客户机操作系统页表发生改变时,在虚拟机监视器中维护的页表也会随之更新,如同它的影子,所以被称作“影子页表”(Shadow Page Table)。
页表写入法是指每当客户机操作系统新创建一个页表时,虚拟机监视器也创建一套与当前页表相同的页表,这个页表中保存的是虚拟机物理地址与物理机机器地址之间的映射关系。在客户机操作系统对它自身所维护的这套页表进行写操作时,将会产生敏感指令并由虚拟机监视器剥夺客户机操作系统对其页表的写操作权限,然后由虚拟机监视器对客户机操作系统页表进行更新,使得客户机操作系统能直接从它自己的页表当中读取到真实物理主机的机器地址。
总的来说,影子页表法是一个从虚拟机逻辑地址到虚拟机物理地址再到物理机机器地址的二级映射关系,而页表写入法是一个从虚拟机逻辑地址到物理机机器地址的一级映射关系。但由于页表写入法在虚拟机监视器中需要对每一套虚拟机页表都维护一套页表,因此对系统性能的消耗比较大。
3.?I/O虚拟化
真实物理主机上的外设资源是有限的,为了使多台虚拟机能够复用这些外设资源,就需要虚拟机监视器通过I/O虚拟化来对这些资源进行有效地管理。虚拟机监视器通过截获客户机操作系统对外部设备的访问请求,再通过软件模拟的方式来模拟真实外设资源,从而满足多台虚拟机对外设的使用要求,如图3-6所示。
image

虚拟机监视器通过软件的方式模拟出来的虚拟设备可以有效地模拟物理设备的动作,并将虚拟机的设备操作转译给物理设备,同时将物理设备的运行结果返回给虚拟机。对于虚拟机而言,它只能够察觉到虚拟化平台提供的模拟设备,而不能直接对物理外设进行访问,所以这种方式所带来的好处就是,虚拟机不会依赖于底层物理设备的实现。
I/O虚拟化的实现主要有全设备模拟、半虚拟化和直接I/O三种方式。
1)全设备模拟:该方法可以模拟一些主流的I/O设备,在软件实现中对一个设备的所有功能或者总线结构(例如设备枚举、识别、中断和DMA)进行复制。该软件位于虚拟机监视器中,每当客户机操作系统执行I/O访问请求时,将会陷入到虚拟机监视器中,与I/O设备进行交互。这种方式的体系结构如图3-7所示。
如图3-7所示,从上往下依次有客户设备驱动、虚拟设备、I/O堆栈、物理设备驱动和物理设备。其中I/O堆栈主要用于提供虚拟机I/O地址到物理主机地址的地址转换,处理虚拟机之间的通信,复用从虚拟机到物理设备的I/O请求,提供企业级的I/O特性。
2)半虚拟化:半虚拟化中具有代表性的是Xen虚拟化解决方案中实现I/O虚拟化的方式。它由前端驱动和后端驱动两部分构成。前端驱动运行在Domain U(其他虚拟机)中,后端驱动运行在Domain 0(特权域)中,它们通过一块共享内存交互。前端驱动管理客户机操作系统的I/O请求,后端驱动负责管理真实的I/O设备并复用不同虚拟机的I/O数据。尽管与全虚拟化设备模拟相比,半I/O虚拟化的方法可以获得更好的设备性能,但其I/O虚拟化的运行机制也会带来更高的CPU开销。
3)直接I/O虚拟化:这是指让虚拟机直接访问设备硬件,它能获得近乎宿主机访问设备硬件的性能,并且CPU开销不高。目前,直接I/O虚拟化主要集中在大型主机的网络虚拟化方面,通过直接I/O虚拟化来为虚拟机分配独立的物理网络接口设备,以提高其网络交互能力。但是直接I/O虚拟化成本要求高,在商业大规模推广方面仍面临许多挑战。
4.?虚拟机实时迁移
虚拟机实时迁移是指在保证虚拟机上服务正常运行的同时,使虚拟机在不同的物理主机上进行迁移。整个迁移过程需要保证虚拟机是可用的,并且整个迁移过程是快速且平滑的,迁移过程对用户透明,即用户几乎不会察觉到在虚拟机使用过程中产生的任何差异。
整个实时迁移的过程需要虚拟机监视器的配合来完成虚拟机从源物理主机到目标物理主机上内存和其他数据信息的拷贝。在实时迁移开始时,虚拟机的内存页面和数据信息将不断从源物理主机拷贝到目标物理主机,直到最后一部分位于源物理主机中的虚拟机内存和数据被拷贝进目标物理主机后,目标物理主机上的虚拟机将开始运行,整个迁移过程不会影响源物理主机中虚拟机的工作,如图3-8所示。

image

利用虚拟机实时迁移技术,可以实现服务器的在线维护、在线升级和动态负载均衡,因此在云计算领域有着广阔的应用前景。
3.1.5 主机虚拟化的优势
虚拟化是基础设施整合中的重要技术。有了虚拟化技术,一些基础设施(如服务器、网络、存储等)可以被资源池化,并且经过抽象后提供给上层的计算单元,使上层的计算单元以为自己运行在独立的内存空间中,享有独立的网络、存储资源用于服务。同时,虚拟化技术的分区特性使得各种硬件资源被合理、高效地划分给不同的虚拟机;隔离特性使得多个不同虚拟机在同一主机上互不影响计算的效果;封装特性使得虚拟机更方便地迁移和备份;独立于硬件的特性使得虚拟机的配置更加方便。
由图3-9可以看出,目前虚拟化的市场还处于起步阶段,是IT行业新兴发展方向之一。图中,虚拟化的市场发展被分为了四个阶段,即降低成本、提高使用率、提高灵活性与更好地使IT配合业务。

image

总而言之,主机虚拟化的优势主要体现在两方面:增加硬件的利用率以及提高生产率。
(1)增加硬件的利用率
以CPU的利用率为例,如图3-10所示,在宿主机进行虚拟化之前,主机上CPU的利用率一般在10%以下,偶尔会出现CPU的利用高峰,但是也没有超过30%;在宿主机进行虚拟化之后,宿主机上的4个CPU的利用率均维持在55%~80%,最低利用率也没有小于50%。可见,相较于传统主机而言,主机虚拟化技术极大提高了CPU的利用率。
(2)提高生产率
主机虚拟化在提高生产率方面的作用可通过以下几个例子来说明:
【例3.1】 部署一个新的服务器。若采用传统的服务器架构,需要3~10天进行硬件采购,1~4小时进行系统部署;采用虚拟化架构后,只需要5~10分钟的时间即可采用模板和部署向导初步完成一个系统的部署。
【例3.2】 硬件的维护。若采用传统的服务器架构,需要1~3小时进行窗口维护,数天乃至数周进行变更管理准备;采用虚拟化架构后,可以通过虚拟化技术实现零宕机的硬件升级。
【例3.3】 迁移集成服务器。采用传统的服务器架构,需要数天甚至数周进行变更管理准备,有时候,迁移能否成功还会受到其他环境因素的影响;采用虚拟化架构后,采用P2V(Physical To Virtual)技术,只需要一个小时左右便可以实现服务器的迁移。

image

【例3.4】 移动服务器优化负载。采用传统的服务器架构,迁移过程大约需要4~6小时,所有的维护窗口中的服务全部中断,并且需要数天甚至数周的变更准备时间;采用虚拟化架构后,利用虚拟机实时迁移技术,可以在2~5分钟内实现无服务中断的迁移。
服务器虚拟化是虚拟化技术中出现时间最早的技术分支,也是虚拟化技术中最为成熟的领域。服务器虚拟化是将虚拟化技术应用于服务器上,将一个服务器虚拟化成若干个服务器使用。服务器虚拟化技术的多实例、强隔离、高性能、封装好等特性保证了它能有效地运用在实际的环境中,独特的优势使其受到很多大型企业的青睐。服务器虚拟化的主要优点可总结如下:
1)降低运营成本:服务器虚拟化厂商都提供了功能强大的虚拟化环境管理工具,可降低人工干预的频率,降低IT基础设施的运营成本。
2)提高应用兼容性:服务器虚拟化技术所具有的封装和隔离特性使管理员仅需构建一个应用版本,即可将其发布到被虚拟化封装后的不同类型的平台上。
3)加速应用部署:采用服务器虚拟化后,部署一个应用通常只需要几分钟至十几分钟的时间,且不需要人工干预,极大地缩短了部署时间,降低了部署成本。
4)提高服务可用性:服务器虚拟化技术可以方便地对运行中的服务器进行快照并备份成虚拟机镜像文件,支持虚拟机的动态迁移和恢复,提高了服务的可用性。
5)提升资源利用率:服务器虚拟化技术将原有的多台服务器整合到一台服务器上,提高了物理服务器的利用率。
6)动态调度资源:服务器虚拟化支持实时迁移,方便资源的整合和动态调度。同时,数据中心统一的资源池,使数据中心管理员可以灵活地调整分配资源。
7)降低能源消耗:服务器虚拟化可以将原来运行在各个服务器上的应用整合到少数几台服务器上,通过减少运行的服务器的数量,降低了能源消耗。
这些优势加速了服务器虚拟化技术的普及,使其应用领域越来越广泛。服务器虚拟化技术开启了基础硬件利用方式的全新时代,尤其为构建云计算基础架构奠定了重要的技术基础。在当今云计算盛行的IT时代,服务器虚拟化技术必将大行其道。
3.1.6 主机虚拟化上机实践
1.?单主机虚拟化上机实践
(1)实验目的
学习主机虚拟化环境的搭建过程和利用虚拟化管理软件对虚拟机进行可视化管理。
(2)实验环境
①Linux操作系统(以Ubuntu Desktop操作系统为例)。
②可连通互联网的主机。
③KVM、QEMU、虚拟机操作系统安装文件等。
(3)实验步骤
1)配置环境:配置环境的步骤如下。
①查看CPU是否支持硬件虚拟化,因为KVM需要硬件虚拟化功能支持。

Intel CPU :
grep vmx /proc/cpuinfo
AMD CPU :
grep svm /proc/cpuinfo

如果查询的信息中有“vmx”或“svm”字段,说明CPU可支持硬件虚拟化。
②配置安装源:Linux默认安装源下载及安装速度较慢,因此需要修改软件安装源为适合本地环境的安装源以提高速度。修改/etc/apt/sources.list文件,此处将安装源改为“mirrors.ustc.edu.cn”(中国科技大学)。

$sudo vi /etc/apt/sources.list
// 在vi编辑环境中,将软件源替换为“mirrors.ustc.edu.cn”,在命令模式下使用以下命令行:
:1,$s/cn.archive.ubuntu.com/mirrors.ustc.edu.cn/g    // 根据操作系统版本不同
                                // 此处安装源为“cn.archive.
                                // ubuntu.com”,不同Ubuntu
                                // 版本可能有所不同
:1,$s/security.ubuntu.com/mirrors.ustc.edu.cn/g    // 根据操作系统版本不同
                                // 此处安装源为“security.
                                // ubuntu.com”,不同Ubuntu
                                // 版本可能有所不同
:wq                            // 保存退出vi环境

$sudo apt-get update
$sudo apt-get upgrade

③安装KVM、QEMU及配套软件。

$sudo apt-get install kvm qemu libvirt-bin virtinst virt-manager virt-viewer
 xtightvncviewer

// 查看KVM是否安装成功

# virsh -c qemu:/// system list
 Id    Name                           State
----------------------------------------------------
// 如果显示以上信息,则说明KVM、QEMU安装成功!

④使用命令行建立虚拟机,安装操作系统,使用虚拟机。

# qemu-img create -f qcow2 ubuntu.img 10G

# qemu-system-x86_64 -hda ubuntu.img  -cdrom <虚拟机操作系统安装文件> -boot d -m 1024

# qemu-system-x86_64 -hda ubuntu.img  -m 1024
// 启动完成后,系统会提示如下信息:
VNC server running on ‘127.0.0.1:5901’  // 不同环境下,端口号会有所不同

// 在Ubuntu桌面上新开一个Terminal,在命令行输入:
#vncviewer :5901

之后,就可以在新窗口中查看和操作普通操作系统一样操作虚拟机,显示效果如图3-11所示:

image

⑤通过virt-manager管理虚拟机。在用户界面上,打开Terminal终端,输入以下命令:

#virt-manager

系统弹出如图3-12所示的窗口:

image

后续的操作都在这个环境下进行。
a)将已有的虚拟机镜像文件加入到virt-manager中。点击界面上侧工具栏第一个图标,弹出“新增虚拟机”窗口,在“安装选项”中选择“导入有磁盘镜像”,之后选择第④步创建的虚拟机镜像,按照提示进行操作,完成虚拟机镜像的导入操作。
b)在virt-manager中新建虚拟机。在virt-manager中,点击界面上侧工具栏第一个图标,弹出“新增虚拟机”窗口,在“安装选项”中选择“本地安装媒介”,之后选择虚拟机操作系统的安装镜像所在位置,之后按照提示进行操作,完成虚拟机操作系统的导入操作。如图3-13所示。image

c)在virt-manager中拷贝现有虚拟机。在virt-manager中现有的虚拟机实例上单击右键,在右键菜单上选择“Clone”,如图3-14所示。
之后,按照系统提示完成虚拟机克隆操作,就能够以现有虚拟机为模板创建新的虚拟机。如图3-15所示。
 
image

2.?阿里云虚拟化上机实践
(1)实验目的
使用阿里云进行虚拟机的创建与管理。
(2)实验环境
阿里云平台
(3)实验步骤
步骤1:配置选型
阿里云推荐以下几种配置组合方案,能够满足大部分用户的需求。
入门型:1vCPU+1GB+1MB,适用于访问量较小的个人网站。
进阶型:1vCPU+2GB+1MB,适用于流量适中的网站、简单开发环境、代码存储库等。
通用型:2vCPU+4GB+1MB,能满足90%云计算用户,适用于企业运营活动、并行计算应用、普通数据处理。
理想型:4vCPU+8GB+1MB,用于对计算性能要求较高的业务,如企业运营活动、批量处理、分布式分析、APP应用等。
注意 这些推荐配置只是作为开始使用云服务器ECS的参考。阿里云提供了灵活、可编辑的配置修改方式。如果在使用过程中,发现配置过高或过低,可以随时修改配置。
步骤2:创建Linux实例
这里只介绍新购实例。如果已有镜像,可以使用自定义镜像创建实例。新购实例的操作步骤如下:
①登录云服务器管理控制台。如果尚未注册,单击免费注册。
②定位到云服务器ECS→实例。单击“创建实例”。如图3-16所示。

image

③选择付费方式,有包年包月或按量付费。关于两种付费方式的区别,请参见计费模式。如果选择“按量付费”,请确保账户余额至少有100元。如无余额,请进入充值页面充值后再开通。注意:对于按量付费的实例,即使停止实例,也会继续收费。如果不再需要该按量付费的实例,请及时释放实例。如图3-17所示。

image

④选择地域。所谓地域,是指实例所在的地理位置。可以根据用户所在的地理位置选择地域。与用户距离越近,延迟相对越少,下载速度相对越快。例如,如果用户都分布在杭州地区,则可以选择华东1。
在这里需要注意:
不同地域间的内网不能互通。
实例创建完成后,不支持更换地域。
不同地域提供的可用区数量、实例系列、存储类型、实例价格等也会有所差异,请根据业务需求进行选择。
⑤选择网络类型。目前,大部分地域提供两种网络类型。网络类型一旦选择后,不能更改,因此请慎重选择。
如果想使用经典网络,选择“经典网络”。然后点击“选择安全组”。如图3-18所示。

image

如果需要使用逻辑隔离的专有网络,选择“专有网络”。如图3-19所示。

image
⑥选择实例,包括实例系列、I/O优化实例和实例规格。关于实例规格的详细介绍,请参考实例规格族。其中,实例系列II是实例系统I的升级版,能提供更高的性能,推荐使用。推荐选择I/O优化,挂载后可以获得SSD云盘的全部性能。如图3-20所示。image

⑦选择网络带宽。如果选择0MB,则不分配外网IP,该实例将无法访问公网。如果选择了按量付费,同时选择0MB固定带宽,则同样不分配外网IP,而且不支持0MB带宽升级,因此请谨慎选择。
按固定带宽付费如图3-21所示。

image

按使用流量付费如图3-22所示。

image

⑧选择镜像。可以选择公共镜像,包含正版操作系统,购买完成后再手动安装部署软件;也可以选择镜像市场提供的镜像,其中集成了运行环境和各类软件。公共镜像中的操作系统License无须额外费用(海外地域除外)。如图3-23所示。

image

⑨选择操作系统。选择操作系统的时候,应注意以下几个问题:
最流行的服务器端操作系统,强大的安全性和稳定性。
免费且开源,轻松建立和编译源代码。
通过SSH方式远程访问您的云服务器。
一般用于高性能Web等服务器应用,支持常见的PHP/Python等编程语言,支持MySQL等数据库(需自行安装)。
推荐使用CentOS。
⑩选择存储,如图3-24所示。系统盘为必选,用于安装操作系统。可以根据业务需求,选择添加最多4块数据盘,每块数据盘最大32TB。用户还可以选择用快照创建磁盘,把快照的数据直接复制到磁盘中。

image

设置实例的登录密码和实例名称,如图3-25所示。请务必牢记密码。也可以在创建完成后再设置密码。

image

设置购买的时长和数量。
单击页面右侧价格下面的“立即购买”。
确认订单并付款。
至此,实例创建完成,你会收到短信和邮件通知,告知实例名称、公网IP地址、内网IP地址等信息。之后,就可以使用这些信息登录和管理实例。
步骤3:登录Linux实例
根据使用的本地操作系统,可以从Windows、Linux、Mac OS X等操作系统登录Linux实例。
步骤4:格式化和挂载数据盘
如果在创建实例时选择了数据盘,那么在登录实例后,系统需要先格式化数据盘,然后挂载数据盘。另外,还可以根据业务需要,对数据盘进行多分区配置。建议使用系统自带的工具进行分区操作。
注意:云服务器ECS仅支持对数据盘进行二次分区,而不支持对系统盘进行二次分区(不管是Windows还是Linux系统)。如果强行使用第三方工具对系统盘进行二次分区操作,可能引发未知风险,如系统崩溃、数据丢失等。
本操作适用于非I/O优化+SSD云盘Linux(Redhat、CentOS、Debian、Ubuntu)实例。
①使用管理终端或远程连接工具,输入用户名root和密码登录到实例。
②运行fdisk -l命令查看数据盘。注意:在没有分区和格式化数据盘之前,使用df -h命令是无法看到数据盘的。在下面的示例中,有一个5GB的数据盘需要挂载。如图3-26所示。
③如果执行了fdisk -l命令后,没有发现/dev/xvdb,则表示你的实例没有数据盘,因此无需挂载。
④运行fdisk/dev/xvdb,对数据盘进行分区。根据提示,依次输入n、p、1,两次按回车,wq,分区就开始了。如图3-27所示。
⑤运行fdisk -l命令,查看新的分区,可以看到新分区xvdb1已经创建好。如下面示例中的/dev/xvdb1。如图3-28所示。

image

image

⑥运行mkfs.ext3 /dev/xvdb1,对新分区进行格式化。格式化所需时间取决于数据盘大小。也可自主决定选用其他文件格式,如ext4等。如图3-29所示。

image

⑦运行echo /dev/xvdb1 /mnt ext3 defaults 0 0>>/etc/fstab写入新分区信息。完成后,可以使用cat /etc/fstab命令查看写入的信息,如图3-30所示。

image

注意 Ubuntu 12.04不支持barrier,所以对该系统正确的命令是:echo /dev/xvdb1 /mnt ext3 defaults 0 0>>/etc/fstab。
如果需要把数据盘单独挂载到某个文件夹,比如单独用来存放网页,可以修改以上命令中的/mnt部分。
运行mount /dev/xvdb1 /mnt挂载新分区,然后执行df -h查看分区。如果出现数据盘信息,说明挂载成功,可以使用新分区了。

# mount /dev/xvdb1 /mnt
# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       40G  1.5G   36G   4% /
tmpfs           498M     0  498M   0% /dev/shm
/dev/xvdb1      5.0G  139M  4.6G   3% /mnt

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接