基于PCI-E SSD的分布式文件系统优化技术研究
2017-03-14庞恒茂
◆俞 俊 钱 琳 庞恒茂 卜 敏
基于PCI-E SSD的分布式文件系统优化技术研究
◆俞 俊 钱 琳 庞恒茂 卜 敏
(南京南瑞集团公司信息系统集成分公司 江苏 211100)
随着大数据时代的到来,企业和用户对存储领域的需求呈现爆炸式增长,据总量指数级增长,业务呈现日益复杂的趋势,当前数据已经成为企业的核心资源,因此对数据存储的安全性和可靠性,性能也提出了更高要求。本文提出了基于PCI-E SSD在分布式文件系统的数据分层和热点管理与替换技术,不仅可以提升存取速度、降低耗电量、同时具有较高的数据安全性,并有效地降低了访问延迟,使其能够适用于结构化数据(如数据库)、非结构化数据频繁并发读写的环境中。
PCI-E SSD;分布式安全;分布式文件系统
0 前言
基于电力系统业务建立高传输带宽、低延迟的系统环境的需求,固态存储盘(SSD)在分布式文件系统中的应用实际上属于自动分层存储技术一部分,由于PCI-E SSD的物理特性,其更安全的存储方式、更高效的存取性能使其成为了许多学者研究的热点。文献[1]提出了一个基于PCI-E与RAID5的存储方式,改进了中规模存储的性能。文献[2,3]对于PCIE-SSD的协议栈与多队列多中断技术进行了研究,提出了一个原型系统,提升了总体性能。文献[4]提出了一个基于SSD+HDD的异构元数据存储系统Hybrid MDSL,针对SSD特性设计了提高空间利用率的方案。文献[5]提出了基于SSD与HDD的分级存储方案FMCFS,实现了对固态与磁盘空间的高效管理。文献[6]对于存储中的重复索引安全提出了一种解决方案LiveStor,降低了系统整体能耗,并提升了安全性,基于文献[6],文献[7,8]对于分布式存储的安全提出了密钥分发与管理、用户与存储节点身份认证机制等方案,提升了分布式存储的安全性。本文通过结合PCIE-SSD与分布式文件系统技术,提出了缓存技术的热点算法、数据块优化以及基于SSD的数据分层存储技术,提升了分布式系统的总体性能。
1 基于缓存技术的热点算法
在 Memcached 内存对象缓存系统基础上进行实现,通过修改 Memcached 系统中原有的 LRU 算法,将其改为提出的基于存取代价的缓存替换算法。Memcached是一个高性能的分布式内存对象缓存系统,用于在动态 Web 系统中减轻数据库负载。它通过在内存中缓存数据来减少读取数据库的次数,从而提升Web 系统的速度。
Memcached 基于一个存储键值对的 Hashmap,其守护进程(daemon)是用 C 写的,但是客户端可以用任何语言来编写,并通过 Memcached 协议与守护进程通信。现在很多的大型 Web应用系统包括 Facebook、Youtube、Twitter、Wikipedia、Yahoo、WordPress、Digg 等都在使用 Memcached 来支持他们每天数亿级的页面访问。通过把 cache 层与他们的 Web 架构集成,他们的应用程序在提高了性能的同时,还大大降低了数据库的负载。
2 存储系统中数据块优化技术
分布式文件系统等文件系统的数据是分块进行存储的。分块存储有以下优点。首先,如果一个文件超过了本地文件系统支持的单个文件的大小上限,也能够在本系统中存储;如果一个文件的大小接近或了一个Master节点的磁盘空间,我们可以把他们分布至不同的Master节点上。这样会使整个系统的负载更加均衡,而不会出现某个Master的磁盘用尽,而其他Master节点还没使用的情况。其次,分块存储可以简化系统的复杂性,由于块的大小是固定的,因此系统可以很容易的计算出每个Master可以存储的数据块数a。最后,分块存储有利于冗余机制的实现。
3 基于SSD的数据分层存储技术
3.1 数据自动分层
自动分层的基本原理是,数据在创建后随着时间推移价值会逐步降低。数据主要在其创建后的72小时内被访问。在此之后访问量会骤然减少,访问频率越来越低,30天以后数据只会被偶尔访问。在这时,数据就成了“被动数据”或“冷数据”。
随着数据价值的降低,数据应当迁移到低速、低成本的存储层上。如果要手动这样做的话,这种重复操作显然非常乏味,难以满足所需工作量。换句话说,没有人会这么做。自动分层技术会基于诸如数据创建时间、访问频率、最后访问时间或响应时间之类的策略进行数据迁移。
图1 数据分层存储
3.2 热区管理与替换
根据热区的定义,一段时间内,热区的访问次数要高于冷区的访问次数。我们可以简单地把热度值定义为某个区块内的数据块被外部访问的频度。但这种算法会出现两个问题:一是时间维度的热区无法识别;二是对热区的查询速度慢。于是,我们对热点管理替换算法进行了优化。
当某个item首次插入或者再次命中时,首先获得该item所在slab 的 LRU 链头尾指针,通过这两个指针可以快速对 LRU链进行操作。
如果原来LRU链已经存在至少一个元素,则将原来头节点的prev 指针指向现在的新头节点。然后将 LRU 的头指针指向现在新的item。如果尾指针为空的话将尾指针指向该item,最后将该slab的item个数加1。
根据基于存取代价的缓存替换算法内容的研究,将其实现在Memcached缓存系统中,替换Memcached 原有的 LRU 缓存替换算法。如果该节点已经在缓存中,当前被命中的话,就根据 P值计算公式计算出其P值。然后就从链表头开始对逐个节点计算P 值,直到找到该 item 的P 值比该节点P 值大的节点,然后将item插入到该节点前面即可。如果搜索完整个链表仍然找不到这样的节点的话,就把该item 作为链表尾节点。
如果没有得到该文件的热度信息,或者它不是hot文件,我们只存储三个备份,此时不用分块。而当上传的文件大小大于最大的分块因子sn时,我们必须做分块处理,至于具体的分块大小,我们需要调用配置中的分块函数。
而当上传的文件大小在分块因子s0和sn之间时,情况就较为复杂,我们首先需要判断分块是不是必要,对系统性能有增强还是减弱,如果有必要分块,则调用模块2进行分块,否则直接分配其一个block-id,然后进行副本的存储。
随着访问量增加,热度值可能溢出(尤其是上层节点),节点内所有热度值右移1 位不会改变本节点内的热度排序,所以不需要修改同层不同节点和不同层节点。当节点访问计数大于一定阈值时节点内所有区的热值右移1 位可以隔离历史访问信息热值右移1 位相当于使这一个时刻之前的热度值的权重降为1 /2,使近期的访问量在热度值中占有更高的权重。当一个区内的数据块长时间没有访问时,其热度值将不断变小直至变为0,成为冷区。
3.3 MTE替换方法
当需要调入数据块且SSD 的读写缓存已满时,就使用最小热度选取(Minimum Thermal Eclectic,MTE)方案从已有数据块中选择替换块。被替换数据块的选取原则是从SSD 中热度值最低的冷区中选取,当被选中的冷区包含多个数据块时,则依据LRU 算法选取。冷区的查找是从根节点开始的,首先找到本层热度值最低且在SSD 中有数据块的区节点,然后依次向下一层查找,最后检索到的叶子节点所指向的区就是要查找的冷区。SSD 缓存的数据块的调入由后台模块定期或空闲时完成。
图2 MTE替换方法
此外,根据多任务的I /O 工作流具有顺序访问和区域集中的特性,可以采取预取策略增加命中率。可以采用两种预取策略:一是定期扫描热区的信息,选择热度值高的区,调入这些区的未调入的数据块;二是在数据块调入时,查看该区的热度值是否达到一定门限,如果是,则试图调入该数据块之后的几个数据块;如果不是,则采用MTE预取策略。
4 实验
4.1 实验环境
实验使用6台服务器组成分布式集群,每个服务器操作系统为Red Hat Linux Enterprise 6.5,内存12GB,硬盘为3TBHDD与1.6TB PCI-E SSD,实验室采用普通千兆网络与交换机。
4.2 实验方案
实验在5台服务器上部署分布式集群,同时客户机上部署测试工具,使用iozone与fio进行性能测试与压力测试,根据社交网络与公司业务数据,模拟热数据访问情景。测试方案包括批量小文件顺序与随机读写性能,单个大文件顺序与随机读写性能,测试文件总量为5*3TB=15TB,实验使用配置文件控制系统是否使用数据分层与热点管理技术,并作出对比测试。
4.3 实验结果与分析
实验于5台服务器与一台客户机组成的分布式集群上进行,测试结果如表1所示。
表1 PCI-E SSD分布式系统测试
可以看出,使用PCI-E SSD的改进算法对于分布式系统性能具有飞跃性的提升。尽管原系统也配置了同样大小的PCI-E SSD,但使用了改进算法后,系统总体性能无论是在单客户端,还是在整个文件系统的吞吐量上,都有了近30%的性能提升。故实验表明MTE替换算法与数据自动分层对于单机吞吐量与总体性能都有巨大提升。
5 结束语
本研究基于PCI-E SSD在分布式文件的应用,实现了合理的利用热点算法找出系统中的热点数据可以大幅的提高缓存数据的命中率,使得分布式文件系统的读写性能产生巨大的提升。同时,降低存储系统节点的磁盘负载,提高缓存空间的利用率,对于优化整个分布式文件系统的性能也具有重要意义。研究通过使用数据分层存储技术,用读写速度极快的PCI-E SSD的缓存系统存储常用的热点数据,使用普通SSD存储较为常用的数据,使用传统的硬盘存储很少使用的历史数据,建立读写性能高效的层次化分布式文件系统。系统将为电网业务提供更可靠的存储和维护能力,并且具备良好的可伸缩性和灵活性,为应对企业的数据快速增长带来的业务压力给出了更好的解决方案。
[1]张元凯,蔡惠智,刘垚,王维.基于PCIe和RAID5的高速存储系统设计[J].微计算机信息,2010.
[2]润冬,刘芳,肖侬等.PCIe SSD I/O栈设计与原型系统研究[J].计算机研究与发展,2015.
[3]李云.面向高性能应用的PCIE SSD的驱动研究与实现[D].国防科学技术大学,2012.
[4]陈卓,熊劲,马灿.基于SSD的机群文件系统元数据存储系统[J].计算机研究与发展,2012.
[5]梁学森.基于SSD和HDD的分级文件系统的设计与实现[D].北京邮电大学,2014.
[6]杜敏,郑钊,关少华等.面向分布式存储的安全云存储系统研究[J].北京电子科技学院学报,2013.
[7]张砚波,刘正伟,文中领等.一种高效存储解决方案的分析与研究[C]// 全国信息存储技术大会,2011.
[8]杨祥清.存储系统数据去重策略研究[J].信息通信,2014.
本研究由2015年国家电网科技项目资助,WBS号:524606150008。