毛红霞
摘 要:本文将纠删码冗余技术应用于云存储系统中。采用基于RS纠删码的数据分片方法,把用户数据分成若干分片分别存储到不同存储节点。在拜占庭故障的情况下,不同的m个分片的子集可能解码出不同的数据块,所以使用分片验证技术来确保分片来自于唯一正确的数据块,从而保证数据的可靠性。
关键词:纠删码冗余技术;数据分片
1.纠删码冗余技术的原理
一般来说,纠删码可以用一个四元组(n,k,b,k)来表示,其中,k是编码前文件块的个数,b是每个文件块包含的比特数,k是一个不小于k的数,n是编码后的文件块个数[1]。
纠删码冗余技术用于存储系统中的步骤是:
(1)将文件数据划分成k个文件块,每个文件块的大小都是相等的,包含b bits。
(2)使用纠删码函数E进行编码,得到n个文件块,并且每个文件块大小相等,并且有唯一的标识。
(3)将这n个文件块根据分布式存储策略存储到相应的存储节点上。
(4)存储系统中的任意k个数据块通过解码函数D都可以还原成原始文件。
2.数据分片技术
在将RS纠删码应用于云存储系统时,首先将用户的数据文件分成X+1个大小相等的数据段,对每一个数据段使用纠删码的编码函数进行编码,并将数据块Di和校验块Dj按下标分别存放到不同的文件分片中,文件分片流程如图2所示。
通过分片之后得到的文件分片都包含数据块和校验块两部分。文件分片根据云存储的分布式存储策略存储在不同的存储服务器上,只要有任意k个分片能够正常使用,系统就能完全恢复用户的原始文件。单个文件分片的泄漏或存储服务器的故障也不會影响用户的数据信息,从而保障了云存储中用户数据的可靠性[2]。
3.数据分片验证一致性策略
基于纠删码冗余技术的云存储系统中,每个存储节点上只存储经过编码后的某个文件分片,经过权限验证后的正确客户至少要读取m个分片才能解码出原始数据。但存在拜占庭故障的情况下,不同的 m 个分片的子集可能解码出不同的数据块,所以客户在写数据分片时必须要同时将检验数据同时写入,确保文件的分片均来自于唯一的源数据块。
Krawczyk 提出了分布式指纹的概念,可以用于对数据分片的验证。实质上是一种称为交叉校验和(crossed checksum,简称 cc)的结构[3],将每个文件分片进行哈希运算,得到相应的哈希值,具体数据结构如图3所示。
一般情况下,客户读操作时先从读取到的分片中恢复出数据块 B,然后用纠删码将 B编码生成n个分片,再分别哈希每一个分片,与交叉检验码中的对应部分相比较,如果全部都一致,那么数据验证成功,即重构的源数据是正确的,编码前的数据是相等的,代码如下,验证过程如图4所示[4]。
4.总结
为了解决云中数据丢失或失效的问题,采用基于RS纠删码的数据分片机制,把用户数据分成若干分片分别存储到不同存储节点。数据分片的验证技术可以确保用户数据的可靠性与完整性。
参考文献
[1]何润润.基于纠删码的数据冗余策略研究.机电技术,2010 . 5
[2]余林琛,章 巍,林 强,许杰星,钟 贝. RS纠删码在云存储中的应用. 微电子学与计算机,2011.8
[3]王宝林.纠删码分片验证技术研究.电脑知识与技术,2010-2.
[4]蔡鸾佳.拜占庭容错纠删码分布式存储协议.计算机系统应用,2012-21-2