伴随信息技术快速发展,信息量呈指数增长,数据持久化逐步成为企业发展的关键问题之一.考虑到云存储成本优势和管理便捷性优点,很多企业也开始将数据转移到云平台完成数据持久化.
HDFS是GFS的开源实现,是Hadoop的一个组成部分,由于具有高容错、高吞吐量、高可靠性等优点,已成为云存储主流平台之一[1-3].Hadoop最新的计算框架Yarn不仅解决了JobTracker单点故障问题,而且也开始支持除了MapReduce编程模型外的其他计算模型.另外,最新版的Hadoop2.3.0,实现异构层次化存储和DatanodeCache两大特性.未来Hadoop的发展方向将支持高吞吐量的离线计算和低延时的实时计算.
利用HDFS部署私有云存储平台[4]与租用大企业共有云存储相比,前者的开销较高.但将企业内部机密数据及其之间的映射关系完全存到云服务提供商的服务器上,无法确保隐私和数据的安全性,甚至会因数据安全问题给企业带来灾难.
文献[5]提出一种数据周期保护和自我销毁的框架和协议,但不适合企业用户.文献[6]针对安全方面提出了安全机制和安全策略.目前对安全和可信方面的缺陷大部分是采用加密和访问控制方式来实现控制.文献[7]基于HDFS输入输出方式在客户端采用经典的加密算法和属性方式对数据进行加密,同时还对密钥进行了加密传输,即采用双重加密,以实现加密后数据的可操作性.密钥保护管理方面除了加密,文献[8]提出一种在云环境下的新的基于全局逻辑层次的密钥推导机制的密钥管理方法.文献[9]中也提出对数据存储安全问题,要注意对加密算法的更新换代.然而,对数据的加密方法在保证数据安全的同时都会和读写效率成反比.文献[10]则是利用图论语义方式的访问控制策略实现了云计算安全.文献[11-12]从云计算安全架构进行研究,提出新的数据安全管理模型.
上述安全机制在一定程度上能保证数据的安全性,但由于数据及其组织、映射关系全部存储于云平台端,不能有效避免云平台管理人员的恶意操作,无法从根本上确保数据安全可靠,因此本文提出ASOM(all self-organization model)安全云存储模型,通过将元数据及其物理映射与物理数据隔离的方法进行元数据自主管理,将元数据的组织管理转移到客户端进行,可有效避免因平台内部管理漏洞等因素导致的数据安全问题[13].
1 ASOM模型分析图 1是ASOM模型图.
|
图 1 ASOM模型图 Figure 1 ASOM model |
从图 1中可知,ASOM主要分为元数据子服务器,存储设备管理服务器,数据存储服务器3个部分.其中,元数据子服务器管理云平台的元数据,存储管理服务器完成数据的持久化,元数据子服务器位于租户本地局域网或VPN内,负责租户隐私信息和元数据的本地化管理,实现了元数据和数据存储管理的隔离.整个云存储平台进行数据通信的主要有存储设备管理服务器与元数据子服务器,数据存储服务器与元数据子服务器,数据存储服务器与存储设备管理服务器.
图 1中,数据流1、2是数据读写流.数据流4是存储管理服务器向数据存储服务器发送的命令,以此来管理数据存储服务器上的数据信息.数据流5是数据存储服务器向存储设备管理服务器汇报其状态信息.数据流6是存储设备管理服务器为管理数据存储服务器获取来自元数据子服务器必要的元数据信息.数据流7是存储设备管理服务器向元数据子服务器反馈的信息.数据流3及其交互实现是数据存储服务器直接向元数据子服务器传送的数据块元信息,也将是本文详细讨论的安全方法.
2 数据节点与元数据服务器元数据是指数据的数据[14],HDFS的元数据有两种形式:一种是存储在内存的处于活动状态的元数据,供服务器使用,另外一种则是静态元数据文件.同时动态元数据又分为临时元数据和可持久化的元数据,后者主要保存了文件或目录等构建文件系统的信息[15].内存中元数据持久化后,形成元数据文件.持久化元数据是在HDFS启动和写数据时创建并将其持久化成元数据文件,非持久化元数据是由DataNode节点和NameNode节点进行交互,并由NameNode节点组织.
如图 2所示,将DataNode节点上报给NameNode节点信息分离成两类,分别为Datanode节点信息的元数据和数据块对应Datanode节点映射关系的元数据信息.前者信息不改变其交互机制,继续向NameNode节点传递,后者信息向元数据子服务器传递.因此,HDFSClient相对DataNode节点要实现RPC服务器,DataNode节点相对HDFSClient是客户端.DataNode节点周期性调用HDFSClient远程方法向元数据子服务器上报信息.
|
图 2 ASOM模型两类元数据传递示意图 Figure 2 Two types of metadata transmission on ASOM model |
DataNode节点是通过RPC机制,利用blockReport(),sendHeartbeat()和blockReceived()这3个远程方法传递元数据信息[16].在DataNode类的线程执行方法run()中调用offerService(),offerService()调用以上3个远程方法.部分类图如图 3所示.
|
图 3 HDFS元数据传递类图 Figure 3 HDFS metadata transmission class diagram |
如图 4所示,根据原HDFS元数据传递思想和RPC机制,实现元数据信息的分离需如下操作:
|
图 4 ASOM模型处理元数据映射关系类图 Figure 4 Metadata mapping class diagram on ASOM model |
(1) 创建接口.在org.apache.hadoop.hdfs.protocol包中创建DatanodeClientProtocol接口.在接口中声明两个方法blockReport()和blockReceived().
(2) 实现接口.DatanodeClientProtocol接口是由org.apache.hadoop.hdfs.DataClient类实现.
(3) 替换原有的远程过程调用.在调用DatanodeProtocol.blockReport()方法中替换成调用DatanodeClientProtocol.blockReport()方法,blockReceived()方法做同样的处理.
完成数据的提取则需要重新实现blockReport()和blockReceived(). DatanodeClientProtocol接口中blockReport()方法实现过程:(1)前期一些必要检查;(2)调用BDOperation.processReport()方法;(3)后期处理.实现流程如图 5所示.
|
图 5 blockReport()实现流程图 Figure 5 Flow chart of blockReport() implementation |
BDOperation.processReport()则是处理数据块信息关键方法,主要步骤包括:(1)开始前检查操作;(2)对数据块进行分类;(3)处理各类数据块;(4)结束处理.实现流程如图 6所示.
|
图 6 processReport()实现流程图 Figure 6 Flow chart of processReport() implementation |
HDFSClient对DataNode节点上报的元数据信息进行处理主要是为在HDFSClient节点内存中保存数据块和对应数据节点映射关系.首先在org.apache.hadoop.hdfs包中创建CBlockMap类,然后在BDOperation类中定义CBlokMap类型的静态变量用来保存数据块和对应Datanode节点映射关系.在图 4的类图中,CBlockMap是通过TreeMap来保存映射关系.CBlockInfo类是CBlockMap内部类,该类DatanodeID数组类型的变量是保存相应数据块的数据节点集.这就形成数据块和数据节点映射关系的数据结构.blockReceived()方法会将数据节点最近的接收到数据块信息传递给HDFSClient端,实现流程图类似blockReport().
元数据子服务器实现了数据块与数据节点映射关系处理后.元数据的持久化和加载元数据文件功能需要在HDFSClient端利用重构的类FSImage和类FSEditLog实现,通过调用这两个类可以在HDFSClient端的内存中完成文件和数据块的映射关系.
通过将构建文件系统层次结构和映射关系的重要元数据移植到HDFSClient端,用户对文件的常用管理操作都会访问元数据,这些对元数据操作也被转移到HDFSClient上处理.若涉及数据管理的元数据操作,则需要把相关的信息向NameNode节点上报,以便NameNode节点可以正常管理数据存储服务器上的数据.在读写过程的实现中,需要在org.apache.hadoop.hdfs包中创建一个类,该类主要处理读写过程所涉及的数据.读的过程需要得到指定文件对应数据块位置,需要向NameNode节点报告发现的坏块.写过程则需要创建文件,实现数据块分配.
NameNode节点在管理数据存储服务器用到元数据子服务器上的元数据时,利用RPC,获得部分元数据信息.RPC可以避免将元数据信息完整地保存在NameNode节点上,进而避免平台管理员利用技术手段获得NameNode节点内存中的完整元数据信息.其实现步骤如下:(1)创建接口.接口中声明获得NameNode节点所需元数据方法method.(2)实现接口.在自定义类中实现接口.(3)在FSNamesystem类中调用method,以得到所需的结果.
通过以上分析可知,HDFSClient端除了扮演传统云存储平台的客户端角色外,相对NameNode节点和DataNode节点,同时具有服务器部分管理功能.
对于NameNode节点HDFSClient作为服务端的实现步骤如下:
(1) 在初始化HDFSClient时建立RPC服务器;
(2) NameNode节点由原先的C/S架构获得HDFSClient的IP地址;
(3) NameNode节点再根据IP地址建立连接.
对于DataNode节点HDFSClient作为服务端的实现步骤如下:
(1) NameNode节点获知HDFSClient端IP后通过心跳机制将地址发送给所有的Datanode节点;
(2) 在心跳机制中我们需要再添加一个变量linkState来标识Datanode节点是否成功连接到HDFS客户端机器上;
(3) 在Datanode中定义一个方法,用来检查Datanode节点是否连接到HDFSClient,若没连接成功就从获取HDFSClient的IP地址处理连接;若连接成功后改变linkState的值来告知Namenode节点.
3 实验测试测试实验在一个Hadoop集群上完成,集群由一台存储设备管理服务器、一台元数据子服务器和两台数据存储服务器组成.各服务器操作系统是ubuntukylin13.04.实验部署如图 7所示.
|
图 7 实验部署图 Figure 7 The deployment process |
首次启动集群,通过向平台写数据开始创建元数据.其过程转变成在元数据子服务器内存中生成对应的目录树和文件所对应的数据块,并定时将需要持久化的元数据持久化到元数据子服务器上.数据在数据节点完成存储后会向元数据子服务器发送Block Recived信息,完成数据块和DataNode节点的映射关系.此后通过Block Report实现元数据子服务器上元数据映射关系和Datanode节点存储的数据块的同步.重启集群时,持久化元数据的加载也是在元数据子服务器上完成.在整个过程中重要的元数据一直存放在元数据子服务器中,和云存储平台分离,有效地避免了平台管理员对元数据可能的恶意操作的安全隐患.
传统的HDFS文件系统是将元数据文件存放NameNode节点的机器上,其元数据文件存放位置如图 8所示.利用ASOM模型后其持久性元数据文件存放在客户端规定的磁盘位置如图 9所示.
|
图 8 传统HDFS元数据文件保存位置 Figure 8 File location of traditional HDFS metadate |
|
图 9 ASOM元数据文件保存位置 Figure 9 File location of ASOM metadata |
云存储系统的安全提高会在一定程度上降低系统的效率[17],为此本文设计如下的性能测试对比.对比传统的HDFS、经加密的HDFS和AOSM 3种云存储方式的数据传输效率,结果如表 1所示.
| 表 1 数据传输效率表 Table 1 Data transmission efficienty |
表 1中,加密方式是利用128位AES在客户端上加密.可以看出当文件越大时该模型的效率比加密更明显.同时,ASOM模型比传统模型中的信息交互更频繁,但由于ASOM模型采用企业单位元数据的自组织管理方式,属于一种元数据分布式组织与管理方法,因此不会给平台服务器带来随客户量增多而产生的负载过重问题.
4 总结ASOM模型通过分析DataNode与NameNode之间的交互过程,针对HDFS文件系统中平台对元数据绝对全权管理控制问题,设计并实现了元数据子服务,通过提取HDFS中DataNode元数据信息直接跟元数据子服务器交互,并且由元数据子服务器处理文件与块、块与DataNode之间的映射关系.通过对HDFS源代码进行分析编译和模块替换,搭建原型系统进行测试.测试结果表明,对NameNode中的元数据进行必要的安全隔离保证了用户对元数据的控制与管理,可有效避免平台管理员对元数据可能的恶意操作的安全隐患.
接下来将着手完善基于ASOM模型的原型系统中的用户体验,在存储量增加的同时保证元数据服务器能动态扩充.
| [1] |
Ghemawat S, Gobioff H, Leung S T. The Google file system[C]//ACM SIGOPS Operating Systems Review. [s. l]: ACM, 2003, 37(5): 29-43.
|
| [2] |
Shvachko K, Kuang H, Radia S, et al. The hadoop distributed file system[C]//Mass Storage Systems and Technologies (MSST), 2010 IEEE 26th Symposium on, Inclinevillage, Nevada: IEEE, 2010: 1-10.
|
| [3] |
Liu K, Dong L. Research on cloud data storage technology and its architecture implementation[J].
Procedia Engineering, 2012, 29: 133-137.
DOI: 10.1016/j.proeng.2011.12.682. |
| [4] |
Zhang D W, Sun F Q, Cheng X, et al. Research on hadoop-based enterprise file cloud storage system[C]//Awareness Science and Technology (iCAST), 2011 3rd International Conference on. [s. l]: IEEE, 2011: 434-437.
|
| [5] |
张逢喆, 陈进, 陈海波, 等. 云计算中的数据隐私性保护与自我销毁[J].
计算机研究与发展, 2011, 48(7): 1155-1167.
Zhang F Z, Chen J, Chen H B, et al. Lifetime privacy and self-destruction of data in the cloud[J]. Journal of Computer Research and Development, 2011, 48(7): 1155-1167. |
| [6] |
冯登国, 张敏, 张妍, 等. 云计算安全研究[J].
软件学报, 2011, 22(1): 71-83.
Feng D G, Zhang M, Zhang Y, et al. Study on cloud computing security[J]. Journal of Software, 2011, 22(1): 71-83. |
| [7] |
余琦, 凌捷. 基于HDFS的云存储安全技术研究[J].
计算机工程与设计, 2013, 34(8): 2700-2705.
Yu Q, Ling J. Research of cloud storage security technology based on HDFS[J]. Computer Engineering and Design, 2013, 34(8): 2700-2705. |
| [8] |
程芳权, 彭智勇, 宋伟, 等. 可信云存储环境下支持访问控制的密钥管理[J].
计算机研究与发展, 2013, 50(8): 1613-1627.
Cheng F Q, Peng Z Y, Song W, et al. Key management for access control in trusted cloud storages[J]. Journal of Computer Research and Development, 2013, 50(8): 1613-1627. DOI: 10.7544/issn1000-1239.2013.20111481. |
| [9] |
吴吉义, 沈千里, 章剑林, 等. 云计算——从云安全到可信云[J].
计算机研究与发展, 2011, 48(1): 229-233.
Wu J Y, Shen Q L, Zhang J L, et al. Cloud computing: Cloud security to trusted cloud[J]. Journal of Computer Research and Development, 2011, 48(1): 229-233. |
| [10] |
Ray I, Ray I. Trust-based access control for secure cloud computing[M]. New York: Springer, 2014: 189-213.
|
| [11] |
林闯, 苏文博, 孟坤, 等. 云计算安全:架构, 机制与模型评价[J].
计算机学报, 2013, 36(9): 1765-1784.
Lin C, Su W B, Meng K, et al. Cloud computing security:architecture, mechanism and modeling[J]. Chinese Journal of Computers, 2013, 36(9): 1765-1784. |
| [12] |
Shen Q, Yang Y, Wu Z, et al. SAPSC: Security architecture of private storage cloud based on HDFS[C]//Advanced Information Networking and Applications Workshops (WAINA), 2012 26th International Conference on. Fukuoka: IEEE, 2012: 1292-1297.
|
| [13] |
徐小龙, 周静岚, 杨庚. 一种基于数据分割与分级的云存储数据隐私保护机制[J].
计算机科学, 2013, 50(8): 1613-1627.
Xu X L, Zhou J L, Yang G. Data privacy protection mechanism for cloud storage based on data partition and classification[J]. Computer Science, 2013, 50(8): 1613-1627. |
| [14] |
文艾, 王磊.
高可用性的HDFS:Hadoop分布式文件系统深度实践[M]. 1版. 北京: 清华大学出版社, 2012.
|
| [15] |
蔡斌, 陈湘萍.
Hadoop技术内幕深入解析HadoopCommon和HDFS架构设计与实现原理[M]. 1版. 北京: 机械工业出版社, 2013.
|
| [16] |
张鑫.
深入云计算:Hadoop源代码分析[M]. 北京: 中国铁道出版社, 2013.
|
| [17] |
傅颖勋, 罗圣美, 舒继武. 安全云存储系统与关键技术综述[J].
计算机研究与发展, 2013, 50(1): 136-145.
Fu Y X, Luo S M, Shu J W. Survey of secure cloud storage system and key technologies[J]. Journal of Computer Research and Development, 2013, 50(1): 136-145. DOI: 10.7544/issn1000-1239.2013.20120698. |
2014, Vol. 31