随着谷歌,微软,亚马逊,IBM等大型公司越来越致力于云计算的研究,使“云”得到了飞速发展,越来越多的用户开始将数据部署在“云端”,然而云在给用户带来许多便利的同时,由于传统web服务以及自身特点带来的安全风险,正日益成为阻碍其进一步发展的因素。在目前云平台安全机制下,对云存储、云安全风险以及在云平台下数据恢复问题做了简单分析。
1 云存储
Yahoo云计算平台核心是Hadoop技术,它所采用的分布式文档系统HDFS(Hadoop Distributed File System)与Google的GFS(Google File System)分布式系统不同,是真正运作MapReduce云计算技术的开放源代码云计算系统。Hadoop除HDFS分布式文档系统、MapReduce分布式平行计算框架以及Hbase分布式数据库三大核心技术外,还包括Hive、Pig等子技术。
1.1 HDFS分布式文件系统
为了加强对后文数据恢复问题的认识,这里简单介绍一下HDFS分布式文件系统。
HDFS是根据Coogle发表的GFS文档系统论文开发的开放源代码分布式文档系统,是一种典型的主从式( Master / Slave )架构,主要用来解决数据爆炸式增长的问题,具有存储效率高、扩展性能好、可靠性有保障、价格低廉以及可再用性强的优点。它由一个名叫 NameNode的控制节点和多个名叫 DataNode 的数据节点组成。NameNode 维护着整个文件系统的命名空间,将文件系统的元数据保存在内存中,管理、控制文件的相关操作,但实际的数据并不存放在 NameNode 中,而是存放在 DataNode 中。
当客户端应用程序访问文件时,HDFS首先将包含该文件名字的访问请求发送给 NameNode,然后 NameNode 将存储该文件所有数据块的 DataNode 地址信息反馈给客户端应用程序,进而客户端应用程序直接和相应的 DataNode 建立连接并进行具体的文件读写操作。它的数据访问特性是“一次写入,多次读取”,文档一旦创建就不允许更改,而是以附加的方式加在原文档后面。另外,HDFS被分割的block大小一般为128MB,并且默认以3个备份存储到不同的机架,以Linux操作系统的ext2/ext3文档系统格式存储在硬盘上,用来保证数据的安全[1] 。更重要的是HDFS具有容错功能,当出现宕机或者其它突发状况,HDFS检测到错误时,可以通过HDFS的容错检测以及自动恢复系统将损坏的文档复原,这就是后文介绍的有关数据恢复的知识。
2 云计算的安全
美国Gartner 公司于 2008 年发布的一份名为《云计算安全风险评估》的报告,报告指出云计算存在的七大安全风险[2],分别是优先访问权、管理权限、数据位置、数据隔离、数据恢复、调查支持、长期发展。
云计算安全风险主要体现在以下几个方面:恶意服务注入,非法数据恢复,篡改数据备份:安全一致性差:跨虚拟机袭击,分布式服务拒绝[3]。
从以上可知,数据恢复是云计算数据安全的一个研究热点,该文着重就数据恢复问题进行分析。数据恢复包括恢复两个方面的数据:一是受损数据;二是已删数据。受损数据恢复相比较而言,方法更多,而且简单许多,已删数据目前则必须是在一定条件下才可以恢复。
2.1受损数据恢复
包括即冗余恢复[3]、副本恢复[4]和备份恢复[5]三种恢复方式。其中,冗余恢复方式主要用于云端数据存取过程中数据受损时的恢复;副本恢复和备份恢复方式则主要用于云端数据存储后数据受损时的恢复。
2.1.1冗余恢复[3]
由于数据传输过程中可能出现宕机等突发状况,使得数据在传输的过程中受损。这种情况下可以利用冗余恢复对数据进行恢复。冗余恢复是利用纠错码对传输过程中的受损数据进行即时恢复,系统使用Reed-Solomon码提供任意高错误恢复技术,保证系统在发现问题后能够被迅速检测到并进行恢复。
为了确保云端数据更加可靠,保证云端已存储的数据的安全性,对云端存储的数据还可以采用副本恢复和备份恢复两种方式。根据上文提到的云计算的分布式文档系统可知,云端存储的数据(块)在不同的服务器上都存有3个及以上的副本。很显然在某台服务器上数据出现错误状况时,可以利用云端其他服务器上的数据(块)来代替当前服务器上的受损数据,这就是所谓的“异地灾难备份机制”,像银联数据中心这样的金融机构采用的就是“两地两中心”或者“两地三中心”这样的异地灾难备份机制来保证金融数据的安全性的。
2.1.2副本恢复[4]
云端已存数据的副本恢复方式原理就是利用分布式系统的存储特性,通过云端各服务器之间相互复制数据块的副本来实现的。简要地说,如果系统在进行完整性验证过程中发现某数据(块)完整性受损,可以通过云端服务器上的复制进程(如上文1.1所提到的),实现数据(块)副本之间的复制来恢复受损或丢失的数据(块),这就是云端已存数据的副本恢复方法。
但是并不排除其他极端情况,比如,数据被损坏后或者被恶意篡改后正好复制进程启动(按照复制策略),那么受损或被恶意篡改的数据就会被复制到各个服务器,覆盖原来冗余存储的正确数据(块),从而使得数据(块)完全被损坏。对于此类云端受损数据,可以借鉴windows系统里面的备份机制,即将数据恢复到受损前的某个状态,一旦出现以上状况,就恢复到受损前这个正常状态。为了实现这一恢复策略,需要在云端定时保存历史备份数据,且这些数据不能进行更新和同步操作。
2.1.3备份恢复[5]
数据备份和备份策略是比较成熟的技术,备份策略如下:一是按照云端数据存储模型和结构,云端数据采用分块备份;二是采用全备份和增量(或者差异)备份相结合的方法对云端数据块进行备份。 备份恢复是以丢失用户实时修改更新的数据为代价,把用户的数据恢复到某一正常时期的状态。
综上,受损数据的恢复流程是:系统通过完整性验证,一旦发现已存云端数据受到损坏后,自动启动恢复模式,采用的受损数据恢复方式的顺序一般依次为:冗余恢复、副本恢复和备份恢复。
2.2 已删数据恢复
2.2.1 Linux 文件系统下已删数据的恢复
基于 HDFS 的数据销毁机制设计:HDFS 中数据的删除是异步的。在 NameNode 将元数据删除后,DataNode 通过 heartbeat获取此改变(invalid block 列表),并通过 Java 的文件删除方法删
除本地文件系统上对应的文件。由此可见,这种删除机制与单机状态下文件删除普通的没有什么不同,这种删除机制并没有在删除数据之前对数据进行覆写算法等破坏性操作。然而 Linux 系统的 ext2 文件系统(前文1.1提到)的文件删除机制只是改变了块位图和索引节点的状态[6,7],只是导致系统不能通过索引节点去定位文件,文件的实际内容甚至是索引节点中的元数据都没有被真正删除,只有等下一次数据写入、进行多种覆写算法删除的时候才能覆盖这些数据。所以,Linux 中的数据在删除操作之后,并没有被实际删除,仍可以通过使用e2undel、libundel库恢复文件[7]。
对于Linux ext3/4文件系统,因为默认带有日志文件,系统出现宕机等突发状况时,日志文件会记录突发状况,可以用于数据的恢复,对于恢复后不可识别的数据,会被fsck放在lost+found目录下。至于这种类型文件系统下的已删数据恢复,还需进一步研究分析。
2.2.2 HDFS 分布式文件系统下已删数据的恢复
实际上,当用户通过HDFS Shell命令删除文件时,文件并未即刻被删去,而是会被重命名到/Trash文件中,文件在该文件中保留预定时间,在该时间段内,可以随时恢复被删除的文件,当超过这个保留时间时, Namenode 就会将该文件从名字空间中删除,删除文件会使得该文件相关的数据块被释放,类似于windows系统中的回收站机制。具体被删文件恢复仿真过程如下:
①运用shell命令创建一个文件d,如图1。
②运用shell命令删除文件d,可以发现自动生成了一个Trash文件,如图2。
③ 在删除之后查看时,发现被删除的文件d存放于Trash文件目录中,如图3。
④试图从/Trash中恢复被删除的d文件,如图4。
⑤再次查看时会发现被删除的文件已经被恢复了,如图5。
2.2.3 磁盘介质上已删数据的恢复
HDFS 文件系统是一个异构的分布式文件系统[6],它可以支持异构的主机构成一个统一的分布式文件系统。其中,存储的异构主要表现在存储介质的不同,现在主流存储介质有传统硬盘的磁介质和固态硬盘( SSD)的闪存半导体介质。
对于磁盘介质上已删的数据恢复[8],首先对文件系统进行分析,自动进行raid磁盘阵列的磁盘次序、块大小等参数的分析,确定磁盘存储的数据结构中主引导记录、DOS引导记录、文件分配表、硬盘分区表等数据完整程度。根据相应信息提供策略选择,自动分析生成残留数据部分原始文件位置、数据大小、类型等信息,从云存储目标区域读取磁盘数据区数据,对文件进行重建还原,并对缺失部分数据进行估算,生成原文件,恢复残留数据。
3 结束语
云时代已经到来,大数据已经无处不在并已爆炸式发展,数据安全风险是“云”进一步发展壮大的障碍,所以数据安全更是值得深究的一个方面,当数据安全(包括数据恢复)得到强有力保障的时候,云的发展必定更加快速、稳健。
参考文献:
[1] 徐成俊.云计算实用技术[M].兰州:甘肃人民出版社,2013.
.
//Autonomous Decentralized Systems(ISADS),2011 10th INTERNATIONAL Symposium on.Japan:Tokyo,2011:631-636.
[3] 边根庆.面向分散式存储的云存储安全架构[J].西安交通大学学报,2013,6(45):44.
[4] 项菲.新的基于云计算环境的数据容灾策略[J].通信学报,2013,6(34).
[5] 孙勇.面向云计算的键值型分布式存储系统研究[J].电子学报,2013,7(4):1409.
[6] 秦军.HDFS 的多安全级数据销毁机制设计[J].计算机技术与发展,2013,3(23):131.
[7] 冯锐,王磊.如何恢复 Linux 上删除的文件,第3 部分[EB/OL].[2012-04-04]. http://www.ibm.com/developerworks/cn/linux /l-cn-filesrc3.