The Virtualization of Cloud Computing

Basic

云计算

​ 云计算是目前互联网时代信息基础设施与应用服务模式的重要形态,它依托于虚拟化技术,为信息系统的软硬件资源提供按需共享的应用方式。云计算提供了多样的服务模式,包括基础设施即服务(IaaS, infrastructure as a service)、平台即服务(PaaS, platform as a service)、软件即服务(SaaS, software as a service),甚至X即服务(XaaS, X as a service)。其中,IaaS具有高度虚拟化、动态伸缩性和庞大规模的技术特征,是其他服务模式的基础,也是整个云平台建设的基石。本文的研究重点也在IaaS云。

虚拟化技术

完全虚拟化技术和半虚拟化

完全虚拟化技术又叫硬件辅助虚拟化, 在虚拟机和宿主计算机之间加入了一个软件层Hypervisor, 即虚拟机管理程序[4]。

​ 完全虚拟化技术可以追溯到20世纪六七十年代, IBM对大型机所进行的虚拟化研究。完全虚拟化技术由于云计算的快速发展而得到了广泛应用和发展。完全虚拟化的Hypervisor可以分为两种类型。第一种类型是Hypervisor直接运行在物理硬件之上, 这种类型的虚拟机如KVM (Kernelbased Virtual Machine) 。KVM本身就是一个基于操作系统的虚拟机管理程序。第二种是Hypervisor运行在另一个操作系统中, 这种类型的虚拟机管理程序包括了QEMU和WINE。图1所示即是第二种类型的完全虚拟化的结构示意图。

图1 完全虚拟化示意图

​ 宿主机操作系统运行在硬件资源之上, 并且通过虚拟机管理程序, 将硬件资源进行统一分配和管理, 然后重新划分给各虚拟机。虚拟机操作系统的指令需要经过虚拟机管理程序的捕获, 并被翻译成CPU能识别的指令格式。因此, 虚拟机管理程序的负荷很大, 会占用一定的资源。

半虚拟化是在完全虚拟化的基础上, 对客户端操作系统进行了修改, 增加了一个专门的API。该API对客户操作系统发来的指令进行了最优化, 使虚拟机管理程序不需要耗费太多的资源进行翻译, 因此, Hypervisor的工作负担变得非常小, 那么整体的性能将有很大的提高。半虚拟化的缺点是需要修改包含API的操作系统。对于不包含该API的操作系统而言, 就不能使用该方法。因为如Windows这样的操作系统由于版权政策等使得内核是没办法修改的。

容器技术

​ 容器虚拟化技术已经成为一种被大家广泛认可的服务器资源共享方式, 通过容器技术可以按需构建操作系统实例[5]。最为重要的是, 容器技术可同时将操作系统镜像和应用程序加载到内存当中, 同时容器技术还可以从网络磁盘中进行加载。目前容器虚拟化技术的典型代表是Mesos和Docker。Mesos主要利用操作系统本身的一些特性如cgroup、namespace等来实现对容器的隔离。Docker则主要使用Docker应用程序接口来进行容器管理。尤其是Docker的发展非常迅速, 已经成为了一个产业标准。围绕Docker的生态圈已经形成, 围绕Docker的很多开源项目正处于开发中, 包括容器操作系统、系统监测、应用程序开发平台、开发工具、大数据、网络等。Docker容器虚拟化技术的基本结构如图2所示。

图2 Docker容器虚拟化示意图

虚拟化技术分类

​ 在计算机系统中,从底层至高层依次可分为硬件层操作系统层函数库层应用程序层,虚拟化可发生在上述四层中的任一层,基于不同的抽象层次,可以将虚拟化技术分为硬件抽象层虚拟化、操作系统层虚拟化、库函数层虚拟化和**编程语言层虚拟化[**3]。


云计算中虚拟化技术应用场景

网络虚拟化 The Virtualization of Network

​ 云计算中的虚拟技术包括对网络的虚拟化处理,通过将网络进行虚拟化,可以为用户提供虚拟局域网和专用网两个单独运行的网络环境。在目前的信息处理过程中,由于所需处理的网络信息太过庞大,因此需要对分散的用户信息进行集中,网络虚拟化技术可以将多个局域网集中在一个统一的网络服务器之上,使得所有经过这些局域网进行传输的信息都可以在同一个网络服务器中进行查阅和管理。

存储虚拟化 The Virtualization of Storage

​ 大量的信息上传和存储需要更大的存储空间来进行支持,随着物联网时代的到来,各种信数据呈爆炸式指数级增长,对现有硬件设备的存储提出了原来越高的要求,单纯依赖硬件存储已经变得不现实,因此也需要对存储进行虚拟化。

​ 利用存储的虚拟化技术,可以在主机的硬件存储空间之外单独再开拓出容量巨大的云存储空间,用户可以将多种类型的信息进行上传和储存,解决了不同信息与存储设备之间存在的不兼容问题,也可以为用户节省大量的硬件购置成本[5]。

​ 同时,还可大大提高信息数据的安全性,一般来讲,将信息储存在硬件设施当中,如果出现意外断电等状况,很容易导致存储区域出现异常而导致信息丢失,这对于用户来说必然是巨大损失,而云空间则不受这些因素的影响,即便因为用户的错误操作导致信息丢失,也能够通过云平台中的文件恢复技术机制进行找回,减少因操作失误而导致的损失。

存储虚拟化技术按照实现的原理可以分为基于主机的存储虚拟化、基于存储设备的存储虚拟化、基于网络的存储虚拟化三种。

1. 基于主机的存储虚拟化系统

​ 基于主机的存储虚拟化系统在服务器主机操作系统中安装存储虚拟化管理软件,使服务器的存储空间可以跨越多个异构的磁盘阵列,常用于在不同磁盘阵列之间做数据镜像保护,该方式一般由服务器操作系统中的逻辑卷管理器(LVM)软件完成,不同操作系统的逻辑卷管理器软件也不相同。实现原理是在服务器操作系统的一个卷组(VG)中放入来自于不同存储设备的两个LUN,一个卷组中的两个物理LUN之间进行数据镜像。

图2 基于主机的存储虚拟化

优势

基于主机的存储虚拟化系统因为不需要任何附加硬件,这种存储虚拟化是最容易实现、设备成本最低、方案最为成熟的解决方案,部分厂商提供图形化管理界面可以方便地用于SAN的管理和虚拟化,在主机和小型SAN结构中有着良好的负载平衡机制

劣势

由于需要在主机操作系统中安装存储虚拟化软件会给操作系统带来一定的开销,占用主机CPU的处理时间,这种方案的可扩充性较差,实际运行的性能不是很好,有可能影响到系统的稳定性和安全性问题,导致不经意间越权访问到受保护的数据。

实例

​ 基于主机的存储虚拟化是一种小规模少量服务器存储虚拟化性价比不错的方法,目前AIX、HPUX、SOLARIS及LINUX等操作系统的LVM均可以支持这种存储虚拟化方式。

2. 基于存储设备的存储虚拟化

​ 基于存储设备的存储虚拟化系统主要是在企业级存储阵列的控制器主机上增加资源虚拟化功能模块,使存储阵列具有将除自身存储空间以外的其它物理存储资源进行虚拟化管理的功能,近年来,各存储厂商均将这种形式的虚拟化技术应用到各自的企业级存储控制器之中,形成了基于存储设备控制器的存储虚拟化应用平台。

图3 基于存储设备的存储虚拟化

优势

​ 这种基于存储阵列的控制器允许其它异构品牌的异构存储阵列直接与自身的控制器进行连接,在具有虚拟化功能的存储控制器中出现了设备自身的内部存储介质和在其基础之上的外部异构设备的存储介质两种资源,并且可以按内部存储介质的相同的方式进行管理。

​ 基于存储设备的存储虚拟化系统将内部存储资源和外部存储资源进行统一池化管理,由虚拟化系统统一向外提供LUN映射,不再需要原存储系统对存储资源进行管理,减少了异构存储管理的难度,大大降低了存储网络复杂性。

​ 通过存储设备控制器上的虚拟化管理系统可以在存储系统不停机的情况下,可以实现存储资源从一个池迁移到另一个池,并可在不相似和相似存储设备之间进行数据复制,并且可以通过分区技术,将端口、缓存和磁盘池等资源分配给特定的负载,以保证服务质量和安全性,通过存储控制器之间的群集功能,增加存储单元和控制器之间的冗余链路连接,保证在某一个存储或控制器出现故障的情况下,最大程度的保证系统的安全和数据的可用性。

劣势

​ 由于异构存储设备通过统一的存储虚拟化设备控制器对外提供LUN映射服务,这种统一服务的效率会受到存储控制器性能的限制。

实例

​ 这种存储虚拟化模式适用于中型企业数据中心通过采购新型具有虚拟化功能的存储设备来统一池化管理企业异构存储,目前EMC、HITACHI、HP、IBM等厂商均有虚拟化存储设备供用户选择。

3. 基于网络的存储虚拟化

​ 随着NAS和SAN存储架构的出现,存储实现了存储介质、存储控制器和服务器的分离,服务器和存储控制器之间通过网络(TCP/IP或FC)进行连接,使用得服务器可以灵活高效的使用共享存储资源,这个网络也成为最佳做存储虚拟化的位置,近年来各家存储厂商都研发了各自的基于网络的存储虚拟化设备。

图4 基于网络的存储虚拟化

​ 基于网络的存储虚拟化是在网络层嵌入存储资源智能管理设备,抽象化服务器与存储阵列之间的物理存储资源,将各厂家的异构存储阵列通过FC接口连接到存储层SAN交换机,汇总后连接到存储虚拟化设备(带内存储虚拟化方式),所有LUN映射和I/O请求连同数据一起通过存储虚拟化设备传送给服务器,服务器只能看到由存储虚拟化设备提供的LUN而不直接与存储设备进行交互。

​ 存储虚拟化设备负责分析请求、查阅LUN映射表,并依次执行存储设备I/O。

​ 存储虚拟化设备不仅可以转换存储请求,还能利用自己内存对I/O数据进行缓存,提供数据使用量指标、管理数据复制服务、协调数据迁移服务。

​ 基于网络的存储虚拟化可以提供统一的异构存储管理接口、支持异构存储间的同步数据复制和远程异步数据复制、采用带内管理方式还可以提升存储性能,方便的进行横向扩展; 但这种方式比其它两种存储虚拟化实施起来复杂很多,它需要中断服务器所有至存储设备的LUN映射重新进行到存储虚拟化设备的LUN映射;实现完成以后所有加入的存储设备不能进行去虚拟化操作,因为存储LUN的所有元数据都保存在存储虚拟化设备上。

​ 这种存储虚拟化模式由于加入了独立的存储虚拟化管理设备,提供了其它两种存储虚拟化模式不具有的多种新功能,不仅可以实现本地异构存储的数据复制,而且可以提供具有容灾功能的远程数据复制,是大型企业数据中心进行存储虚拟化和容灾建设的一种高性价比的解决方案,目前IBM、EMC和Falcon Stor等供应商均可提供基于网络的存储虚拟化解决方案。

计算虚拟化 The Virtualization of Computing (计算机应用程序的虚拟化)

​ 在以往的应用程序运行环境当中,由于操作系统需要将有限的资源分配给多个主机,剩下的性能在处理多个具备同样信息的应用时容易出现严重的冲突问题,严重时会导致系统崩溃,数据大量丢失。因此,有必要对计算机应用程序进行虚拟化处理,所谓计算机应用程序的虚拟化,就是在操作系统和信息文件之外单独建立一个封闭的运行环境,在运行具有同样信息的应用时,用户可以将其分开在两个系统当中,确保彼此之间不会出现冲突。

云计算虚拟化技术的缺点和改进措施

虚拟化技术不够安全

​ 在传统环境中,漏洞的攻击面相对较窄,攻击范围相对有限。但是,使用虚拟化系统可以使许多用户共享计算资源,从而增加了遭受攻击的机会。各种安全厂商需要调查和研究传统网络环境中的常见漏洞,然后共同分享所有研究结果。但是,在云平台上,这将包含一些具有封闭性的商业秘密,这对提高安全性能极为不利。

​ 在云计算环境下,用户失去了对计算和数据的完全控制[2]能力,造成了信任缺失,虚拟化技术扩展了软件栈、增加了新的攻击面,底层资源的共享可能引发同驻攻击,解决云安全问题迫在眉睫。
​ 然而,传统的被动防护策略难以抵御新的漏洞和攻击,同时安全产品自身的安全性也相当脆弱,容易被攻击者利用而成为新的攻击面,如“棱镜门”事件就是攻击者利用防火墙来收集秘密情报,并篡改病毒库,从而引发全网瘫痪。
​ 可信计算是一种具前瞻性的安全技术,它将防护前置,以主动的方式弥补被动防护的不足。
​ 目前,用“可信计算构筑网络安全”已成为一种共识,基于可信计算技术构建新一代的安全结构也成为国际的主流。同时,可信计算作为云安全体系的重要技术之一,是解决云安全问题的有效手段[3]。对我国来说,安全市场对可信的需求也在不断攀升,2019年发布和实施的等级保护2.0[4]的云安全的相关标准中,强化了可信计算技术的使用,从一级到四级都提出了可信验证的防护要求。
可信证明是可信计算的重要的技术特征之一。

​ 随着云虚拟化平台下可信计算的发展,对可信证明技术的研究也在不断深入。本文对云虚拟化平台可信证明的关键技术进行分析和总结,以期为研究人员对此研究进展有个总体把握,对未来研究提供借鉴。

可信证明的定义

​ 不同的组织对可信有不同的定义。其中,可信计算组(TCG, trusted computing group)的定义受到了普遍的认可。TCG认为,若实体是可信的,则它的行为总是以预期的方式朝着预期的目标发展。即若一个实体可信,则其行为、能力符合预期并且可验证其符合预期。

​ 对于证明,TCG规范中的定义是证明是一种报告机制,证明方将其平台的身份以及软硬件配置信息报告给挑战方。挑战方验证成功后,相信证明方提供的身份信息和报告是正确、可靠的。美国国家安全局对证明的定义[5]则是证明是证明方向挑战方提供证据而表明其具备某些特性的行为。[文献6]在这2个定义的基础上重新定义证明,并给出形式化描述。其认为证明是证明方通过提供证据或逻辑推理向挑战方表明自己具有某种属性的过程。形式化表示为
$$

S \overset{<E(S)VR(S,r)>}{\rightarrow} evidence
\
C \overset{I(evidence)}{\rightarrow} P
$$
​ 其中,S表示证明方,C表示挑战方;E(S)表示获取证明信息的操作,R(S,r)表示逻辑推理的操作;evidence表示证据的结果,I(evidence)表示验证证据结果的操作,P表示证明方具有的属性。

定义1:可信证明是证明方向挑战方提供可信相关的证据,挑战方验证可信证据是否符合预期来判断证明方是否可信的过程。

​ 根据可信证明的定义,可信证明应包括2个基本步骤:一是证明方提供与可信相关的可信证据,这些可信证据包括证明方的平台身份信息、证明方平台软硬件配置的完整性信息等;二是挑战方收到可信证据后,验证其是否符合预期,并根据验证结果推理证明方是否具备可信性。

增加安全性的措施

虚拟机监控软件是基础硬件和虚拟化系统的一部分,可帮助监控和管理虚拟化系统。要实现这一级别的安全性,必须确保未经授权的用户无法访问虚拟化软件层[6]。此外,授权用户必须将访问记录完全存储在虚拟化软件层中轻松执行审计。

在数据安全方面,采用加密技术对存储在云中的数据进行加密,防止恶意云“租户”和云服务提供商滥用其权利,确保数据安全。数据传输需要使用SCP安全复制协议,TTP超文本传输协议等密码协议来保护数据的完整性和保密性。

在硬件设备部分,需要使用可靠的TPM物理服务器在服务器启动时对用户进行身份验证。如果用户未经过身份验证,则无法启动虚拟服务器。为了确保服务器CPU和CPU之间的物理隔离,必须选择支持硬件虚拟化的CPU,以将安全风险降至最低。为了监视虚拟化系统,可以监视虚拟化。虚拟机硬件设备的管理是虚拟化系统的基础。为了确保该层的安全,就必须严格控制访问权限。用户认可的虚拟化软件层,必须有一个完整的概述。云计算和云服务提供商,以防止安全地管理所需的规格,所存储的数据在云中的区域的安全性,加密,数据编码,数据处理的误操作。完整性和数据保护,SCP的机密性,使用可靠的物理TPM服务器硬件设备[7]。可以在服务器启动时检查用户ID,如果失败了用户验证,则无法启动虚拟服务器。为了保证服务器的CPU之间的物理隔离,选择CPU支持硬件虚拟化,需要尽量减少安全风险。如果在虚拟服务器和逻辑层上安装,每个虚拟服务器的磁盘从每个虚拟服务器的每个分区分开。在物理主机防火墙和防病毒安全性,可以使用传统的安全措施,如主机防御系统。物理或主机是为了防止一个虚拟服务器,其他网络服务都有严格的控制,可能无法在物理主机上运行。与此同时,通过虚拟专用网络源产生的物理主机和虚拟服务器和共享资源之间的关系,通过加密的网络系统实现。此外,传统的网络攻击方法还没有在虚拟化平台上使用,但也有必要避免诸如虚拟机逃逸和信息泄漏之类的问题,并始终提防SOL发生注入和跨脚本攻击,以最大程度地减少威胁。

云计算虚拟化技术未来几年的发展趋势

虚拟化技术与Docker容器技术进行优势互补

与传统的虚拟化技术相比,Docker容器技术可以从独立的虚拟化操作系统中检索多个应用程序,并在同一操作系统上同时运行。虚拟机从与同一物理服务器无关的虚拟设备中获取多个操作系统。虽然Docker容器技术比传统的虚拟化技术更有效,但Docker容器技术已经过改进,只有升级Docker容器技术才能获得最大的好处。鉴于当前的云计算趋势,传统虚拟化技术已广泛应用于许多企业和网络用户。由此可见,Docker容器技术与传统虚拟化技术各有优缺点。因此,这两种技术不能互换,并且两者的共存将成为虚拟化技术发展的必然趋势。

传统虚拟技术和Docker容器技术有机结合

传统的虚拟化技术和Docker技术各不相同,如果两者共存,则优势可能是互补的。传统的虚拟化技术无法超越Docker技术的优势,但Docker技术的最大缺点是资源隔离和安全问题,传统的虚拟化技术在资源隔离方面具有许多优势。此外,传统的虚拟化技术可以有效地控制虚拟机的性能,从而创建一组独立的系统[8]。因此,这两种技术的有机结合为虚拟化技术的开发提供了无限的可能性。

云计算服务以Docker容器技术为核心

Docker容器技术提供了许多用传统虚拟化技术无法实现的好处,并且提供了远远超过传统虚拟化技术的技术级别。Docker容器技术还提供多种操作方法来适应虚拟化技术的趋势。因此,中国云计算的未来发展将集中在Docker的容器技术上。