APP下载

基于内存云的数据存储优化策略

2018-06-20钱育蓉蒲勇霖范迎迎

计算机技术与发展 2018年6期
关键词:数据文件磁盘备份

张 猛,钱育蓉,蒲勇霖,范迎迎,杜 娇

(新疆大学 软件学院,新疆 乌鲁木齐 830008)

0 引 言

随着信息技术的飞速发展,网络数据呈爆炸式增长,社交网络、信息检索和电子商务等在线数据密集型(on line data intensive,OLDI)应用[1]成为研究的热点话题,这些应用对于数据的访问性能(带宽、延迟等)提出了更高的要求[2]。虽然在现有的云计算平台下,虚拟化技术的普及以及CPU与内存性能有很大的提升,但是网络带宽和磁盘I/O仍然是制约OLDI应用发展的瓶颈[3]。一方面,大、小数据块在数据密集型应用中大量存储[4]。例如大量的MB级别乃至GB级别的视频和音频对象存储在在线视频或者音乐应用当中,而且用户对其点击阅览要求也非常高,这就要求在线数据密集型应用要有很高的性能。另一方面,随着计算机技术的不断成熟以及内存成本的不断降低,内存云[5](RAMCloud)的设计理念应运而生,并且性能很好地满足了当前此类应用的要求。内存云是由大量的普通服务器内存组成的一种新型数据中心存储系统,使用键值的存储方式将所有的应用数据都时刻存储在内存中[6]。一般的传统硬盘只是将被动随机访问存储器(dynamic random access memory,DRAM)取代而作为内存云的备份介质。相比传统的硬盘,内存云的吞吐量和访问延迟要比传统磁盘存储系统好100~1 000倍。

当前内存云设计只考虑了大、小数据块对象在内存中如何管理以提供高效的读写性能的问题,以及在现有的研究中只关心大、小块数据对象的存储优化问题[7]和硬件节能策略[8]却忽略了数据存储在内存中的精确度问题,基于此,研究内存云的数据存储的精确度将会成为必然。因此,基于内存云中数据存储精确度低的问题,文中提出一种数据存储优化策略。

1 内存云系统架构

内存云是由成千上万的服务器(它是由动态随机访问存储器构成的内存集群,里面存储着所有的应用数据)组成并且在数据中心运行的集群存储系统[9]。在内存云中,每一台服务器不仅被作为响应客户端请求的主服务器(Master),而且又作为备份其他主服务器内存信息的备份服务器(Backup)。每一个内存云集群都拥有一个类似于Hadoop分布式文件系统(Hadoop distributed file system,HDFS)[10]中的NameNode节点的Coordinator节点,用来存储文件的Mapping映射信息,通过运用键值对来保存用户所请求的信息在哪一台主服务器上,而集群的管理配置信息是由Coordinator执行的并且存储服务器的网络地址和对象的位置等不参与客户请求。RAMCloud的客户端包含存储表和存储服务器的映射关系的缓存,并且在第一时间获取映射表。客户端可以不经过Coordinator直接向相关的服务器发送存储请求[11-12]。它的整体结构如图1所示。

图1 内存云基本结构模型

存储在内存中的数据会因为电脑宕机掉电而丢失,为了避免以上这种情况的发生,保证数据的可靠性,需要在每一台的主机服务器中随时备份数据到各个磁盘中,这里的存储方式是基于日志结构的[13]。首先,将内存中的部分数据以日志的形式保存起来,其次切分成段(Segment),然后,将切分好的数据存储到不同的服务器的内存缓冲区(Buffer)中,最后用哈希表进行记录。主服务器继续执行其他命令,此时备份服务器的报告才算完成,接着备份服务器周而复始地接受其他备份操作请求,当内存缓冲区满后采用批处理方式异步顺序传输到本地磁盘,当某台主机宕机时,各个备份服务器就会根据其存储的日志来进行数据恢复,这样大大提升了恢复系统崩溃的速度,而且也提高了文件的写入速率。

内存云的存储模型是以键值对来表现的,在RAMCloud集群系统中,这种模型是由数据块对象(key)组成,并且被组织到可以在RAMCloud集群中跨越多个主服务器的表中,每一个主服务器的内存中都包含一个由众多表和键组成的哈希表和一个对象集合[14],如图2所示。这样的内存管理机制能够快速地定位任何一个对象,并且每一个对象都被一个知识偏移量[15]所标识。

图2 主服务器备份服务器的内部结构

2 相关模型与定义

本节首先对数据的储存机制进行建模,并在此基础上建立了节点矩阵、文件分块矩阵,两个层次的可用性模型。

众多的服务器组成了一个RAMCloud集群[16],它们主要分为三类:协调器(Coordinator)、主服务器(Master)、备份服务器(Backup)。一般一个Coordinator和storage server组成一个典型的RAMCloud集群,然而一个RAMCloud内部是由一个Coordinator以及Master、Backup组成。

Cluster={,…,

}

(1)

定义1(集群节点矩阵):设Coordinator集合组成了一个RAMCloud集群,其中元素表示编号Coordinator1的RAMCloud集群中有s1台Coordinator服务器。设该集群由i个Coordinator组成,所以可得出|Cluster|=i,并且用dn表示Coordinator服务器,那么可以用Csm×i来表示RAMCloud集群中所有的Coordinator:

(2)

其中,Csm×i中的第i列表示编号为Coordinatori的RAMCloud集群K中的si个Coordinator服务器,其中节点数量集合{s1,s2,…,si}中的最大值用sm表示。设k=∑si表示Coordinator节点数量,矩阵Csm×i可以表示sm×i个元素,当sm×i>∑si时,用sm×i-∑si个0来填充矩阵Csm×i,在RAMCloud集群中该位置没有放置Coordinator服务器。

定义2:文件分块矩阵。

存储在RAMCloud集群中的文件都会被拆分,并且以数据块的形式存储在table中,并且table可以跨越多个server,在同一个集群中提高数据的可靠性。如果由k(k>3)个Coordinator{dn∈Csm×i}组成的RAMCloud集群中,设F为RAMCloud集群中存储的某一文件,数据库的大小为bs,则文件F的大小为n×bs,那么F就会有n×m个数据块存储在k个Coordinator中,则矩阵Fn×m表示文件的分块,使用{b11,b21,…,bn1}来表示原文件F的数据块,文件的原始数据块用n表示,并且该文件的副本用矩阵Fn×(m-1)表示。

(3)

(4)

当RAMCloud集群得到用户传输的数据时,数据块b11就会存储在table节点中,数据块b12作为b11的副本存放在与b11不同的Backup中,同样b12作为b11的副本2,也存放在与b12相同的机架但是却不同的Backup中。假设m为副本系数且m>3,则其他数据块就会存储在b11、b12、b13以外的Backup中且该Backup是任意的。并且在数据的存储过程中,重复存储的数据会影响到内存的缓存,还会影响到数据存储的精度,所以在RAMCloud中设置MD5索引,查找内存中重复的数据,其中重复的数据文件要经过布隆过滤器过滤,在这里该策略不做详细论述。

算法:存储优化策略。

输入:数据文件{F1,F2,…,Ft},表示用户上传t个数据文件到系统。

输出:Disk,表示数据文件存储到磁盘。

1.{F1,F2,…,Ft}←getUpDatafile();

/*获得用户上传数据文件*/

2.t←Datafiles.length();

/*数据文件的个数*/

3.RAMCLOUDfile←file[t];

/*数据文件存储到内存云*/

4.fori=0 tot-1 do

5.DatafileInfo={F1,F2,…,Fm}.get(file[j]);

/*获得数据文件i的信息*/

6.ni=Datafile.getBlockDivNum();

/*取得数据原始分块数*/

7.mi=Datafile.getBlockDuplicateNum();

/*副本系数*/

8.(Fn×m)i← createBlock×F(ni,mi);

/*构造数据文件矩阵模型*/

9.MD5Stri← {t(file),get(i),MD5(64)};

/*MD5的值,删除内存中的重复文件*/

10.fors=0 tonido

11.foru=0 tomido

12.Blocksuget MatrixValue((Fn×m)i);

/*获得数据文件中的一条数据流*/

13.DiskDatafile←Blocksu;

/*将数据块存储到磁盘文件区中*/

14.end for

15.end for

16.end for

通过64位MD5索引删除内存云中的重复数据,节省了大量的内存空间,该方法既有效提高了内存云系统的读/写准确性,又节省了内存活动状态的空间,完全符合优化内存云数据存储的思想。

(5)

(6)

基于负载均衡,数据分类将系统中所有数据存储到内存中。设数据文件冗余率为r%,由于对重复覆盖的数据进行布隆过滤器过滤,过滤后的数据块大小为a,那么过滤的数据占有的内存空间为:

(7)

设原系统内存存储的数据文件占有的内存空间为SUMOm,经过重复覆盖原系统内存中存储的数据文件并且经过滤重复的文件后,现在存储的数据文件占有的内存空间SUMMem为:

SUMMem=SUMMem+SUMOm-SUMown=SUMMem+

a×r%]/u

(8)

数据文件副本系数m的值越大,数据的可用性越高,且数据精准度越高。精确度原数据模型可根据用户对不同的数据文件可用性要求对m进行动态调节。在满足用户可用性QoS的前提下最大限度地节约对存储资源的消耗。根据文献[13]定理2,m的最小值的函数目标为:

(9)

其中,bais表示内存中数据可用概率;QoSava表示该数据的可用性QoS。

3 实 验

3.1 实验环境

实验采取的是模拟RAMCloud集群的方式,集群中共有20个节点,其中包括1个协调器节点,19个存储服务器节点。这20个节点中的每一个服务器节点和硬盘不仅是集群中的主服务器而且是备份服务器,在这20个节点中的每一个服务器均配置了8 GB内存和100 GB的硬盘。硬盘的缓冲区为64 MB,磁盘副本参数为3,主服务器的段大小参数默认为8 MB,20个服务器节点模拟联想集群服务器(Syatem X3950 X6241JCC),其配置为48个CPU,可扩展112个节点。

3.2 实验结果分析

内存云运行期间数据需要不断地从各个服务器传送至协调器,通常数据存储的精确度与数据量的大小以及数据传输中各节点的性能有关,准确率通过式10计算:

(10)

(1)有效存储准确率对比。

图3展示了在不同数据大小下,引入DSOS后的准确率对比,未引入DSOS时随着存储数据的增大数据存储的准确率逐渐减小。

(2)有效存储效率对比。

从图4可以明显看出,采用存储优化算法在不同数据下呈现出类似于线性的理想存储效率,并且随着存储数据的增加,存取效率对比原系统也在不断提高。实验结果表明,采用存储优化算法的数据越大,其存储效率也越高。该实验体现出了基于内存云的大数据存储优化算法具有较好的性能和效果。

图3 相同存储数据下有效存储准确率的对比

图4 相同存储数据下有效存储效率的对比

4 结束语

内存云框架的出现为线数据密集(OLDI)的应用带来了新的机遇与挑战,但是在大数据的背景下,海量的数据想要准确无误地存储到内存中已经成为制约其发展的一个重要问题。针对该问题,提出了基于内存云提升数据存储精确度的策略。该策略根据RAMCloud的体系结构,将原系统中已存在的数据重复覆盖,经过布隆过滤器过滤掉重复的数据,从而提升了数据存储到RAMCloud的准确率。

下一步研究工作将着重在以下几方面:在保持RAMCloud中数据存储精确度不变的条件下降低RAMCloud的能耗;在保持内存云较高的性能前提下,降低内存云的能耗;扩展内存云的应用范围以及更加合理地设计存储框架。

参考文献:

[1] DEAN J,CHEMAWAT S.MapReduce:simplified data processing on large clusters[J].Communication of the ACM,2008,51(1):107-113.

[2] 于 炯,廖 彬,张 陶,等.云存储系统节能研究综述[J].计算机科学与探索,2014,8(9):1025-1040.

[3] ARMBRUST M, FOX A,GRIFFITH R,et al. A view of cloud computing[J].Communications of ACM,2010,53(4):50-58.

[4] 褚 征,于 炯,鲁 亮,等. 基于内存云的大块数据对象

并行存取策略[J].计算机应用,2016,36(6):1526-1532.

[5] RUMBLE S, KEJRIWAL A, OUSTERHIUT J.Log-struchured memory for DRAM-based storage[C]//Proceeding of the 12th USENIX conference on file and storage technologies.Berkeley:USENIX Association,2014:1-6.

[6] 宋宝燕,王俊陆,王 研.基于范德蒙码HDFS优化存储策略研究[J].计算机学报,2015,38(9):1825-1837.

[7] 英昌甜,于 炯,鲁 亮,等.基于小文件的内存云存储优化策略[J].计算机应用,2014,34(11):3104-3108.

[8] 鲁 亮,于 炯,英昌甜,等.内存云架构的磁盘节能策略[J].计算机应用,2016,34(9):2518-2522.

[9] OUSTERHOUT J,AGRAWL P,ERICKSON D,et al.The case for RAMCLouds:scalable high-performance storage entirely in DRAM[J].ACM SIGOPS Operating Systems Review,2010,43(4):92-105.

[10] 董新华,李瑞轩,周弯弯,等.Hadoop系统性能优化与功能增强综述[J].计算机研究与发展,2013,50:1-15.

[11] ZHENG Zhiyun,ZHAO Shaofeng,ZHANG Xingjin,et al.Cloud storage management technology for small file based on two-dimensional packing algorithm[C]//Proceedings of the 2013 international conference on computer engineering and networking.Berlin:Spriang-Verlag,2013.

[12] STUTSMAN R.Durability and crash recovery in distributed in-memory storage system[D].Stanford:Stanford University,2013.

[13] ROSENBLUM M,OUSTERHOUT J K.The design and implementation of a log-structured file system[J].ACM SIGOPS Operating System Review,1991,25(5):1-15.

[14] 钱育蓉,于 炯,王卫源,等.云计算环境下软硬件节能和负载均衡策略[J].计算机应用,2013,33(12):3326-3330.

[15] RUMBLE S M,KEJRIWA L A,OUSTERHOUT J.Log-stractured memory for DPAM-based storage[C]//Proceedings of the 12th USENIX conference on file and storage technologies.Berkeley:USENIX Association,2014:1-6.

[16] 郭 刚,于 炯,鲁 亮,等.内存云分级存储架构下的数据迁移模型[J].计算机应用,2015,35(12):3392-3397.

猜你喜欢

数据文件磁盘备份
利用云备份微信聊天记录
它的好 它的坏 详解动态磁盘
如何只备份有用数据而不备份垃圾数据
创建虚拟机磁盘方式的选择
解决Windows磁盘签名冲突
Windows10应用信息备份与恢复
基于表空间和数据文件探讨MIS中数据库架构设计
Windows系统下动态磁盘卷的分析与研究
地面气象观测软件数据质量控制
旧瓶装新酒天宫二号从备份变实验室