随着社会信息化程度的提高和企事业单位对信息系统依赖性的增强,信息系统的容灾备份成为灾难发生时确保业务连续性和数据可用性的重要手段。
云灾备作为灾备领域的一个新兴概念,它的出现为企业提供了一个行之有效的解决方案。云灾备是指将灾备看做一种服务,由客户付费使用灾备服务提供商提供的灾备服务的模式。采用这种模式,客户可以利用服务提供商的优势技术资源、丰富的灾备项目经验和成熟的运维管理流程,快速实现客户的灾备目标,降低客户的运维成本和工作强度,降低灾备系统的总体拥有成本。
云灾备模式之所以被提出并逐渐得到应用,相关技术的发展起到了至关重要的作用。
1 重复数据删除技术
重复数据删除技术是指将存储系统中存在的大量内容相同的数据删除,只保留其中一份,从而缩减存储空间的技术。在云灾备中,该技术既能大幅减少灾备中心存储的数据量,降低灾备中心的建设和运维成本,又能大幅减少数据备份和恢复过程中用户和灾备提供商间的数据传输量,提高备份和恢复的性能,是一项十分重要的技术。
按照检查重复数据的粒度不同,重复数据删除技术可以分为对象/文件级和块级的重复数据删除。文件级删重技术是在文件级别的粒度下查找重复数据的方法。该技术计算速度快,但粒度太粗,即使不同文件内部存在很多相同的数据,也不能被检测并实现冗余消除。块级别的重复数据删除根据切分数据块方法的不同,又可分为固定分块和可变分块的删重技术。固定分块技术是使用固定大小的分块策略在存储系统中识别相同数据的一种方法,可以提供很高的处理速度,但是对编辑和修改的序列很敏感,处理效率低。变长分块是一种基于内容技术的分块方法。与固定分块不同的是它的块断点不以一个预设值来确定,而是以其文件内容进行计算,当满足一定的标准之后方认为其为块断点。其优点是对于插入问题和删除问题处理高效。无论是插入还是删除一小部分字节,只会影响一到两个块,其余的块保持不变。其主要缺点是计算开销较大和检测重复块时指纹值索引查找的开销较大。由于其对数据变化的低敏感性,变长分块逐渐成为重复数据删除技术的主流。
随着灾备中心的规模不断增大,存储的数据量和访问量不断增加,单一节点上的重复数据删除方法已不能满足性能和容量的需求。除上述基本重复数据删除技术外,一些优化和改进技术对云灾备是至关重要的,包括高性能、可扩展的、分布式的重复数据删除技术,以及为提高灾备中心数据可靠性的高可靠重复数据删除技术。
1.1 高性能可扩展重复数据删除技术
在提高重复数据删除性能方面,可以使用减轻磁盘瓶颈技术。在重复数据删除系统中,为了节约成本,一些系统仅具有少量的内存,因而不能支持所有的数据索引一次性地进入内存进行检测,从而导致了大量的磁盘访问,这成为性能下降的最主要因素。针对这种情况,Data Domain重复数据删除文件系统中采用了减轻磁盘瓶颈的3种技术,它们分别是:
(1)摘要向量,一种内存中紧凑的数据结构,用于辨别新的块。
(2)基于流的块排列,一种用于提高磁盘上的被连续访问块的访问局部性的数据排列方法。
(3)局部性保持,保持了重复块的指纹值的局部性从而达到缓存的高命中率。
应用这3种技术,可实现高吞吐率、低开销的相同块删除存储系统。
在提高重复数据删除可扩展性方面,Extreme Binning技术利用文件的相似性,可以将每个文件的磁盘访问次数降至一次,达到较好的吞吐率。在具有多个节点的系统中,每个文件通过一个路由算法分配到唯一的一个节点。每个节点是与其他节点相独立的自治节点,从而允许查找相似文件的操作最大地并行化。当数据量增大时,吞吐率也会随着节点数目的增多而增大。
1.2 高可靠重复数据删除技术
在高可靠性重复数据删除方面,R-ADMAD高可靠性提供机制将变长数据块打包成定长对象,利用纠错码对将象编码后分存到一个冗余组中的多个存储节点上。冗余组是根据系统的当前状态和失效域动态创建的。R-ADMAD还提出了一个分布式和动态的恢复过程。
2 云存储安全技术
在云灾备应用环境中,用户的数据存放在由云服务提供商管理和维护的服务器上,不再受用户的直接控制,增加了数据的潜在风险。各种因素,如云服务提供商的系统故障、服务器被攻击、云服务提供商内部人员的泄密或蓄意破坏等,都有可能造成用户数据的泄密、损坏或丢失。
可以说,数据安全已成为限制云灾备在企业中进一步推广和应用的关键因素,而云存储安全技术则试图解决云灾备服务模式带来的种种数据安全问题。云灾备环境由3个参与方组成:用户(云灾备服务的使用者)、云服务提供商、可信第三方。
2.1 完整性检查和持有性证明技术
完整性检查是指检查从CSP读回的数据和之前写入的数据是否一致,即数据是否被篡改。基本方法是写文件时使用某种单向哈希函数对数据计算得到一个哈希值,存放在本地可靠存储中。读文件时进行同样计算得到哈希值并和本地的哈希值比较。为了降低完整性检查的复杂度,可以采用Merkle哈希树的方法,将文件分成若干数据块,最底层的树叶节点对应数据块的哈希值,次底层节点是每两个哈希值的哈希值,由此逐层递归构造出一个二叉树,根节点对应最终的哈希值。此时检查一个数据块完整性的复杂度由O(n)降为O(log n),其中n为数据块个数。
上述方法可以验证CSP返回的数据的完整性。然而在很多情况下用户需要知道其数据是否始终由CSP完好保存并可获取。当用户在云中存储大量数据时,如果用户每次将所有数据下载到本地,用上述完整性验证方法检查数据是否完好,这种做法显然是不可行的。为此研究者提出了持有性证明,即CSP可以通过某种方法向用户证明其仍然完好的持有用户数据,并且数据是可获取的,而不需要提供完整数据。
这些方法可以分为两类:基于RSA公钥密码算法的和基于对称密码算法的。基于RSA的方法利用了基于RSA的哈希函数的同态性。令N=pq为一RSA模数,其中p和q为大质数,F为代表文件的大整数,用户保存k=F mod Φ(N ),其中Φ(N )=(p-1)(q-1)。在一次挑战-应答过程中,用户发送ZN中的随机元素g,CSP返回s=g F mod N,用户验证是否g F mod N="s"。这类方法的最大优点是允许用户发起无限次的检查,缺点是由于需要进行有限域上以文件数据块为指数的指数运算,计算开销较大,尤其在文件预处理阶段。
基于对称密码算法的持有性证明的基本思想是首先将文件加密并用纠错码编码,然后在编码后的文件的一些随机位置插入和文件数据不可区分的“岗哨”。用户在挑战时要求CSP返回在这些随机位置的岗哨,可以证明只要CSP以大于一定值的概率做出有效应答,则文件是可恢复的。该类方法的优点是计算开销小,但只适用于加密的文件,并且只允许用户进行有限次的检查。
除上述基本方法外,为了解决持有性证明在实际应用中面临各种问题,还提出了多种扩展和增强的持有性证明方法。这些扩展和增强对提供安全可靠的云灾备服务是至关重要的,包括:对公开审计的支持,由可信的第三方代替用户行使验证数据完好的职能,减轻用户的负担,同时保持数据对第三方的机密性;对动态数据的支持,从而允许用户对数据(文件)进行增、删、改等操作;对分布式存储和数据冗余编码的支持,当用户通过持有性证明发现某些节点的数据损坏时,能及时通过存储在其他节点的冗余数据进行恢复。
2.2 可问责技术
通过上述方法可以发现CSP破坏数据安全性的行为,然而仍需涉及一旦这种行为发生如何处理的问题。可以仿照现有云存储服务提供数据访问性能和可用性保证的方法,由用户和CSP间签订关于数据安全(如数据机密性、完整性)的服务水平协议(SLA)。CSP按照协议要求提供服务,保证用户数据的安全性,用户为服务支付费用。一旦CSP不能达到协议要求,用户可以根据协议要求赔偿。安全服务水平协议的引入可能会导致纠纷:例如:当数据安全性被破坏时,CSP为减少经济损失可能宣称该错误是由用户导致(如用户客户端软件缺陷),或者数据安全性本未破坏,而用户虚假指控CSP违反协议,试图不当得利。
为解决上述问题,研究者提出了可问责性的概念。一个多方参与的分布式系统称作是可问责的,如果它满足以下两个条件:(1)能够可靠地发现错误。(2)每个错误能以不可否认的方式归咎到至少一个过失方。在一个可问责的云存储环境中,当CSP违反安全服务水平协议(例如破坏了数据的完整性或可用性),用户能够发现并向第三方机构(如法律仲裁机构)证明CSP的违规行为,从而要求经济赔偿。可问责性是双向的,当CSP没有违规行为或过错是由用户导致时,用户无法无端指控CSP,从而转嫁责任或不当得利。
可问责性证明可以通过鉴证机制实现。鉴证是将用户和其发出的请求绑定以及将CSP和数据的某个状态绑定的签名消息。可以利用这些鉴证在一个轻量级的审计协议中验证CSP的行为。
3 操作系统虚拟化技术
除了数据级的灾备,还应提供系统级的灾备。即在将数据复制到云端的同时,也将受保护的应用程序的状态复制到云端,当灾难发生时可以立即切换到云端的应用程序运行,保证业务连续性。系统级灾备是通过操作系统虚拟化和检查点实现的。检查点用来捕获进程某一时刻的运行状态,从而实现进程迁移。进程迁移既可以是用户应用程序进程到云灾备中心的迁移,也可以是云灾备中心内部的虚拟机池间进程迁移,以实现根据前端用户的需求自动地调节灾备服务提供商有限的硬件与软件资源,动态地、弹性的反应前端业务对灾备的需求。
当程序因故障中断,如果不能保留其中间运行状态,恢复后从头运行将会带来极大的消耗。检查点技术能够解决这个问题。通过保留各个进程的运行状态,恢复时能够复原到最近一次保留的数据映像。
传统的检查员机制是基于库的检查点机制。例如以静态库的形式实现,或通过加载动态链接库来追踪程序运行过程中的数据变化。也有一些检查点机制实现于内核级别甚至硬件级别。例如通过在文件系统层之上引入一个中间层来实现保留文件系统状态的检查点机制;或者借助Fuse内核模块实现的支持检查点机制的文件系统,通过Fuse侦测、拦截内核级别的文件系统操作并将控制权传递给用户,从而能够在用户空间对文件系统状态进行保留。
随着操作系统虚拟化技术的发展,基于虚拟容器的检查点技术也得到了很好的应用。虚拟容器是通过系统虚拟化技术构建出来的一个进程运行的较独立的上下文环境。虚拟容器检查点技术能够有效保护容器内运行的应用程序和服务而不需要对应用进行修改。
用于构建虚拟容器的系统虚拟化技术可以分为如下3类:
(1)基于容器的操作系统级别虚拟化技术。这类技术通过对系统内核的修改,能够将特定的进程进行封装,形成相对独立的进程运行环境。其优点是构建进程运行环境,即虚拟容器,仅仅需要对系统资源做逻辑上的重新组织和调度,不需要在容器底层设立复杂的指令模拟层和Hypervisor(虚拟化系统管理程序)。因此这是一种轻量级的系统虚拟化技术,额外开销小。这类技术的缺点是应用范围有局限,不能支持多种内核,虚拟容器内部的运行环境必须与包含容器的物理主机上的宿主系统相类似。
(2)半系统虚拟化技术。这类技术采用了根据操作系统内核定制的Hypervisor,力求在保留Hypervisor带来的隔离性和安全性基础上,尽量提升虚拟容器内部进程的运行效率。其典型代表是Xen。Xen通过修改Linux系统的内核,在半虚拟化Hypervisor中集成了半虚拟化系统调用层,能够快速响应虚拟容器内部进程发出的系统调用等特权指令。同时,对于普通指令,半虚拟化Hypervisor不做任何处理,而直接将CPU资源开放给虚拟容器使用。通过这样的机制,大大减少了Hypervisor中间层带来的额外开销。但是,半虚拟化机制需要定制内核,因此也部分丧失了 Hypervisor的灵活性,无法支持多种内核。
(3)全系统虚拟化技术。这类技术的实质是设计一个居于中间的用来完成硬件抽象功能的虚拟化系统管理程序。对于虚拟容器内部进程的每条指令,Hypervisor都能够拦截并通过一个仿真器将其翻译为宿主机的硬件CPU指令。对于其他的系统资源,例如PCI设备、网络,Hypervisor也负责地址的转换和在逻辑上进行抽象。全虚拟化的优点是非常灵活,宿主机上能够同时运行不同种类的操作系统内核,而月 Hyperisor能够全面监控虚拟容器内部进程的运行状况和对资源的访问情况,隔离性和安全性高;缺点是其Hypervisor形成了一个厚重的中间层,带来了较大的性能损失。对于全虚拟化的实现,也有很多种类,例如借助硬件支持实现的全虚拟化;基于仿真器的纯软件全虚拟化。后两种虚拟容器实现技术又可以统称为基于Hypervisor的虚拟化技术,总体来说,其性能由于中间抽象层的引入而有较大的损失。
基于虚拟容器的检查点技术的代表是Capsule。Capsule被定义为一组进程及其运行时的CPU、内存、I/O设备等相应状态的集合。其设计思想是将这个集合作为一个整体,在生成检查点时保留整体集合的一致状态。其实现是通过设计一个虚拟的运行环境(基于VMware GSX Hypervisor)并令进程运行于其中,借助该Hypervisor的相关机制而对虚拟运行环境中的所有进程及状态保留检查点,进而实现检查点的传送和异地恢复,达到进程迁移的效果。
4 结束语
云灾备是一种重要的灾难备份形式,本文介绍了云灾备中的3个关键技术:重复数据删除、云存储安全和操作系统虚拟化。前两者解决数据级云灾备中的效率和安全性问题,后者解决系统级云灾备的灵活性问题。重复数据删除和操作系统虚拟化技术经过多年研究,已经相对成熟;相比之下,云存储安全技术的研究尚处于起步阶段,还有很多理论和实际问题需要解决。该技术的发展是云灾备能否得到广泛应用的一个决定因素,值得高度重视和大力研究。随着相关技术的发展和成熟,以及各行业数据中心、灾备中心建设的深入开展,云灾备必将发展成为中国灾难备份市场的主流方式。