APP下载

Ceph云文件系统中纠删码的应用研究

2016-01-27刘莎楚传仁

计算机时代 2016年1期

刘莎 楚传仁

摘 要: Ceph云文件系统[1]通过完全副本冗余策略来提高数据的可靠性,但是会造成存储空间的浪费。为了提高存储空间的利用率,研究了纠删码和缓存分层(Cache层)技术[2]。在Ceph平台下,通过实验对完全副本与纠删码冗余存储进行分析比较,得出在存储数据越来越大的情况下,基于Cache分层的纠删码存储性能优势比完全副本更明显;完全副本则更适合于对小文件进行存储。

关键词: Ceph; 云文件系统; 纠删码; 完全副本; 缓存层

中图分类号:TP309.3 文献标志码:A 文章编号:1006-8228(2016)01-01-03

Research on application of erasure code in Ceph cloud file system

Liu Sha, Chu Chuanren

(School of Communication Engineering, Hangzhou Dianzi University, Hangzhou, Zhejiang 310018, China)

Abstract: Ceph cloud file system uses replication technology to improve data reliability, but will cause the waste of storage space. To improve the storage space utilization, this paper studies the erasure code and cache tiering technology. On Ceph platform, through the analysis of replication mechanism and erasure code, the performance advantage of erasure code based on cache tiering is found more obvious than replication mechanism when the data is large enough, while replication mechanism is more suitable to small file.

Key words: Ceph; cloud file system; erasure code; full replica; cache tiering

0 引言

数据的可靠性是云存储领域研究的重点,为了保证数据可靠性,大多数分布式云文件系统使用完全副本冗余技术,即为每个对象创建同等数量的副本。本文所研究的Ceph云系统其数据放置策略就是基于该机制。完全副本冗余技术部署简单,访问效率高,但是会浪费很大的存储空间。数据的副本冗余技术主要有完全副本和纠删码[3]。为了应对这一弊端,需要考虑纠删码,纠删码把原始数据通过一种规则编码成数据块和校验块后,再将这些块一一进行存储。这种冗余存储技术使存储空间的利用率得到了显著提高,其缺点是读性能下降。

本文的主要目标是在Ceph系统采用完全副本冗余技术的基础上,使用纠删码技术来提高存储空间的利用率,同时引入缓存分层技术,以弥补纠删码读取速度慢的缺陷。

1 Ceph文件系统概述

Ceph作为云存储分布式系统,具有高可扩展性、高可靠性和高性能特性[4],并且其系统源码是开源的。即可以支持TB到PB的扩展,没有单点故障,数据能够均衡地在节点上分布。同时Ceph作为统一的存储系统,可以提供和支持对象、块和文件的存储功能。

Ceph系统由四个组件组成:①客户端(Client),用户对Ceph文件系统进行执行操作的入口;②对象存储集群(OSD,Object Storage Device)负责存储包括元数据在内的所有数据,同时负责数据的请求服务;③元数据服务器(MDS,Metadata Server)对系统中的元数据进行缓存,并对数据进行管理;④集群监视器[5](Monitors),监视和管理整个集群,时刻对集群的有效状态进行维护。Ceph系统架构图如图1所示。

图1 Ceph系统架构图

2 容错机制

2.1 完全副本

Ceph系统采用主-从(Primary-Replica)方式对文件执行读写操作[6]。对于读操作,Client端可以向对象(object)所对应的OSD集群的主OSD或从OSD发起读操作,但是写操作必须是对主OSD发起。Ceph系统对object的更新是按顺序的,因为一个object有且仅有一个OSD。当object请求主OSD进行写操作时,主OSD要把数据发送给其他从OSD;其他从OSD分别完成写操作的请求后,将会一一向主OSD发送写操作完成信息;当object写入到其对应的所有的OSD中后,主OSD向Client端发送写操作完成信息,从而确保了副本的一致性。

2.2 纠删码

本文所研究的纠删码的编码和解码操作都是由主OSD执行的。当object需要进行写操作时,通过Crush算法找到主OSD,并把object全部写入到主OSD中。object在主OSD上被切分成k个数据块后进行编码,产生n个数据块,其中m=n-k个数据块为编码块。编码后的第一个数据块存储在主OSD上,剩余的n-1个数据块由主OSD分配到各个节点上。

在对文件进行读操作时,主OSD会优先收集相应OSD上的数据块。不管数据块是否丢失,只需要收集k个数据块和编码块,主OSD就可以解码出原来的数据。

2.3 纠删码与完全副本冗余度比较

纠删码的原理是:将源数据分成k个数据块,再进行编码生成n个冗余数据块,新编码生成的m=n-k个数据块为编码块。只要丢失的数据块个数不大于m,就能够通过剩余的数据块实现原始数据的恢复。为了比较纠删码与完全副本的存储空间占用率,引入了冗余度。冗余度用来表示信源信息率的多余程度,使用纠删码放置策略的冗余度为:

对于可以纠m个错的完全副本来说,需要m+1个副本,冗余度为m+1。相比较纠删码来说,完全副本的冗余度大于纠删码的冗余度。即纠删码技术可以节省极大的存储空间。

3 Cache分层

由于纠删码的访问效率相对于完全副本来说比较低,所以需要在存储层之上添加Cache层。Cache层可以为Client端提供更高I/O性能;存储层主要放置使用纠删码进行编码后的数据块;Ceph objecter在Client端之后,用来处理Objects的放置位置;在Cache层与存储层之间有一个缓存分层代理(the cache tiering agent),其作用是用来自动处理缓存层和后备存储层间的数据迁移。管理员(admin)有权利配置数据如何迁移。如下有两种典型的模式。

回写模式(Writeback Mode):Client端写数据到Cache层,Cache层做出响应后,在Cache层的数据会被下刷到存储层中,并刷新Cache层;当Client端需要对存储层读写数据时,缓存分层代理把存储层的数据迁移到Cache层后发给Client端。Client端在Cache层执行I/O操作。回写模式适用于经常发生变动的数据。

只读模式(Read-only Mode):Client端直接写数据到存储层;在进行读数据操作时,需要在存储层中拷贝必须的数据到Cache层。根据已经设定好的规则,原来的数据会从Cache层中删除。只读模式适用不经常变动的数据。数据是弱一致性的,可能包含过时的数据[7]。

4 实验结果与分析

4.1 环境配置

为了测试云文件系统中纠删码技术的数据访问性能,搭建了以下测试环境:2个Monitors、1个MDS、6个OSD、1个Client端。软件环境:Ubuntu 12.04、Ceph 0.94.2。在相同纠错能力下,创建完全副本冗余存储和添加Cache层的纠删码存储,这里纠删码为RS纠删码。

4.2 测试分析

使用Rados bench对完全副本和纠删码冗余存储的不同请求大小(32K、64K、128K、256K、512K、1M、2M、4M)在16进程下进行读写性能的测试[8-9],并对测试结果进行分析。图2为读性能的测试,图3为写性能的测试。

通过图2读性能的对比分析可知,纠删码与完全副本冗余存储的读性能比较稳定,完全副本的读性能相对来说要比纠删码的好[10]。图3显示在1M以内的数据完全副本的写性能高于纠删码,1M以上的数据纠删码的写性能明显要高于完全副本。因此,当我们要存储不经常改变的冷数据或大数据时,可以选择纠删码存储;当需要存储经常变化的数据或小文件时,可以选择完全副本进行存储[11]。

5 结束语

本文搭建了基于纠删码Ceph冗余存储系统,通过实际测试,可以得出基于Cache分层的纠删码存储数据越来越大时,其性能更优于完全副本存储,而且可以节省极大的数据存储空间。完全副本冗余存储则适合对小文件进行存储,其读写性能明显优于纠删码。该系统与其他相关研究的区别在于,系统是一个PB级的分布式文件系统,并在使用纠删码降低存储空间浪费的基础上引入缓存分层,实现在进行大数据存储时,读写性能更优于完全副本存储。该系统具有增加空间利用率和提高读写性能的普遍意义,但是接下来需要考虑使用哪种纠删码可以更有效地提高性能。

参考文献(References):

[1] 程靓坤.基于Ceph的云存储系统设计与实现[D].中山大学,

中山大学硕士学位论文,2014.

[2] 沈良好.基于Ceph的分布式存储节能技术研究[J].计算机工

程,2014.39(3):322-327

[3] 程振东,栾钟治,孟由等.云文件系统中纠删码技术的研究与

实现[J].计算机科学与探索,2013.23(4):315-325

[4] Weil S A, Brandt S A, Miller E L, et al. CRUSH:

Controlled, scalable, decentralized placement of replicated data[C]//Proceedings of the 2006 ACM/IEEE conference on Supercomputing, Tampa, USA: ACM,2006.

[5] 郑传建.Ceph对象文件系统添加任务迁移特性的研究[D].武

汉理工大学硕士学位论文,2014.

[6] 刘学梁.基于对象存储的安全分布式文件系统研究[D].电子

科技大学硕士学位论文,2012.

[7] 聂瑞华,张科伦,梁军.一种改进的云存储系统容错机制[J].计

算机应用研究,2013.45(12):3724-3728

[8] 肖哲锋.基于ErasureCode的高可用分布式存储系统的设计

与实现[D].国防科学技术大学硕士学位论文,2010.

[9] 李玲,付园,麻晓珍等.云存储系统中数据冗余策略优化问题[J].

吉林大学学报,2013.44(1):1-7

[10] 王引娜,宋耀光,倪巍等.基于RS纠删码的HDFS云存储动

态副本策略研究[J].科技创新导报,2013.17:29-31

[11] 杨东日,王颖,刘鹏.一种副本复制和纠错码融合的云存储

文件系统容错机制[J].清华大学学报(自然科学版),2014.34(1):137-144