專利名稱:基于rs糾刪碼的數(shù)據(jù)存儲方法
技術(shù)領(lǐng)域:
本發(fā)明涉及的是一種信息處理技術(shù)領(lǐng)域的方法,具體是一種基于RS糾刪碼的數(shù)據(jù)存儲方法。
背景技術(shù):
云存儲是服務(wù)于云計(jì)算的一種存儲方式,指通過集群應(yīng)用、網(wǎng)格技術(shù)或分布式文 件系統(tǒng)等功能,將網(wǎng)絡(luò)中大量各種不同類型的存儲設(shè)備通過應(yīng)用軟件集合起來協(xié)同工作, 共同對外提供數(shù)據(jù)存儲和業(yè)務(wù)訪問功能的一個系統(tǒng)。隨著信息時代的到來,海量信息的存儲及對可靠性要求越來越高,存儲成本和高 可靠性始終是一對難以解決的矛盾。一方面通過增加備份數(shù)可以顯著提高可靠性,但是存 儲量也隨之成倍地增加;另一方面如果想節(jié)約成本,限制數(shù)據(jù)的備份數(shù),一旦其中一份數(shù)據(jù) 塊的備份全部損壞時,整個文件或許都不能使用了,導(dǎo)致不可挽回的損失。經(jīng)過對現(xiàn)有的文獻(xiàn)檢索發(fā)現(xiàn),目前基本所有的云存儲技術(shù)都是采用了一種類似 Hadoop (云計(jì)算中的一種開源軟件)系統(tǒng)中的HDFS (Hadoop Distributed File System,即 Hadoop分布式文件系統(tǒng))。該技術(shù)主要是將一個數(shù)據(jù)文件按照設(shè)定的大小(如64M)分成 大小η塊,再通過對每一個數(shù)據(jù)塊的完整備份(例如Hadoop中的HDFS分布式文件系統(tǒng)為 3份相同備份同一機(jī)架不同數(shù)據(jù)節(jié)點(diǎn)各一份,另外一機(jī)架上的數(shù)據(jù)節(jié)點(diǎn)1份)來帶提高可 靠性。但該技術(shù)最大的缺點(diǎn)是比較浪費(fèi)空間一個文件要備份2倍的額外存儲空間,從而提 高了成本。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)中存在的上述不足,提供一種基于RS糾刪碼的 數(shù)據(jù)存儲方法。本發(fā)明首先對待存儲文件的所有原始數(shù)據(jù)進(jìn)行分塊和分組,然后對每一組 數(shù)據(jù)再進(jìn)行RS糾刪碼編碼存儲,在可以靈活設(shè)定可靠性的基礎(chǔ)上,具有極大地節(jié)約存儲空 間,以節(jié)約成本的優(yōu)點(diǎn)。本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的,本發(fā)明包括以下步驟第一步,對待存儲文件進(jìn)行分塊處理,從而得到N個大小相同的原始數(shù)據(jù)塊,并對 這些原始數(shù)據(jù)塊進(jìn)行分組處理,得到M個數(shù)據(jù)組。所述的分塊處理,是將待存儲文件按照固定大小T分為N個原始數(shù)據(jù)塊,當(dāng)最后 一塊原始數(shù)據(jù)塊小于T時,對最后一塊原始數(shù)據(jù)塊填充冗余,使其大小正好是Τ。所述的分組處理,是將K個原始數(shù)據(jù)塊作為一組,從而將N個原始數(shù)據(jù)塊分為M 組,其中最后一個原始數(shù)據(jù)組的原始數(shù)據(jù)塊的個數(shù)小于或者等于K。第二步,將每個數(shù)據(jù)組中的原始數(shù)據(jù)塊逐塊的從用戶端傳送到數(shù)據(jù)節(jié)點(diǎn),當(dāng)?shù)趇 個數(shù)據(jù)組傳輸完畢后,接收到該數(shù)據(jù)組數(shù)據(jù)的數(shù)據(jù)節(jié)點(diǎn)將接收到的數(shù)據(jù)傳送給管理節(jié)點(diǎn)指 定的一個數(shù)據(jù)節(jié)點(diǎn),該數(shù)據(jù)節(jié)點(diǎn)得到該組數(shù)據(jù)塊的所有原始數(shù)據(jù)塊信息,id第三步,得到第i組數(shù)據(jù)塊的所有原始數(shù)據(jù)塊信息的數(shù)據(jù)節(jié)點(diǎn)對該數(shù)據(jù)組進(jìn)行RS編碼,使第i個數(shù)據(jù)組從Ki個原始數(shù)據(jù)塊變?yōu)镵i個原始數(shù)據(jù)塊和Ri個冗余數(shù)據(jù)塊, 1 ^ i ^ M, Ki是編碼前第i個數(shù)據(jù)組中原始數(shù)據(jù)塊的數(shù)目。所述的RS編碼是依次對每個原始數(shù)據(jù)塊中w比特的數(shù)據(jù)按照下面的公式進(jìn)行處 理,得到對應(yīng)該&個《比特原始數(shù)據(jù)的Ri個w比特的冗余數(shù)據(jù),將第j冗余數(shù)據(jù)的所有w 比特的冗余數(shù)據(jù)按順序進(jìn)行組合得到第j冗余數(shù)據(jù)塊,Ri,具體公式是FD = C, 其中F是RiXKi的范得蒙德矩陣,D是第i個數(shù)據(jù)組中&個《比特原始數(shù)據(jù)組成 的KiX 1的矩陣,C是編碼后第i個數(shù)據(jù)組中Ri個W比特的冗余數(shù)據(jù)組成的RiX 1的矩陣。第四步,將編碼后的同一數(shù)據(jù)組中的數(shù)據(jù)塊存儲的若干個機(jī)架上,且同一機(jī)架上 中同一數(shù)據(jù)組的數(shù)據(jù)塊不超過Ri個。第五步,當(dāng)存儲文件中有數(shù)據(jù)塊損壞時,采用RS糾刪碼恢復(fù)數(shù)據(jù)塊,得到恢復(fù)后 的數(shù)據(jù)塊。所述的恢復(fù)數(shù)據(jù)塊,是1)當(dāng)損壞的數(shù)據(jù)塊的數(shù)目小于或等于Ri時,通過下面的公式分別得到w比特的原 始數(shù)據(jù)塊,進(jìn)而組合得到損壞的原始數(shù)據(jù)塊或者是通過RS編碼得到損壞的冗余數(shù)據(jù)塊;
第i個數(shù)據(jù)組中Ki個W比特原始數(shù)據(jù)塊組成的KiX 1的矩陣,C是編碼后第i個數(shù)據(jù)組中 Ri個w比特冗余數(shù)據(jù)塊組成的RiX 1的矩陣,A'是從A中去除損壞數(shù)據(jù)塊所對應(yīng)的行后的 新矩陣,E'是從E中去除損壞數(shù)據(jù)塊所對應(yīng)的行后的新矩陣;2)當(dāng)損壞的數(shù)據(jù)塊的數(shù)目大于Ri時,損壞的數(shù)據(jù)塊無法恢復(fù)。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是節(jié)省了大量的存儲空間,本來備份3份才 能達(dá)到的可靠性,現(xiàn)在只需備份2份或1份即可,從而降低了數(shù)據(jù)存儲的成本;可靠性的要 求可以根據(jù)文件重要性進(jìn)行靈活地設(shè)置,通過備份數(shù)量和編碼參數(shù)的設(shè)定,可以提供更加 豐富的存儲策略;編碼后的數(shù)據(jù)組中包括原來所有的原始數(shù)據(jù)塊,這樣可以保證日常使用 的效率。
具體實(shí)施例方式以下對本發(fā)明的方法進(jìn)一步描述本實(shí)施例在以本發(fā)明技術(shù)方案為前提下進(jìn)行實(shí) 施,給出了詳細(xì)的實(shí)施方式和具體的操作過程,但本發(fā)明的保護(hù)范圍不限于下述實(shí)施例。實(shí)施例本實(shí)施例用于對180M的文件進(jìn)行存儲,具體包括以下步驟第一步,對待存儲180M文件進(jìn)行分塊處理,按照固定大小30M分為6個大小相等 的原始數(shù)據(jù)塊,并將這6個原始數(shù)據(jù)塊分為兩組,每組包括3個原始數(shù)據(jù)塊。第二步,將每個數(shù)據(jù)組中的原始數(shù)據(jù)塊逐塊的從用戶端傳送到數(shù)據(jù)節(jié)點(diǎn),當(dāng)?shù)趇 個數(shù)據(jù)組傳輸完畢后,接收到該數(shù)據(jù)組數(shù)據(jù)的數(shù)據(jù)節(jié)點(diǎn)將接收到的數(shù)據(jù)傳送給管理節(jié)點(diǎn)指 定的一個數(shù)據(jù)節(jié)點(diǎn),該數(shù)據(jù)節(jié)點(diǎn)得到該組數(shù)據(jù)塊的所有原始數(shù)據(jù)塊信息,1 < i ^ 2。第三步,得到第i組數(shù)據(jù)塊的所有原始數(shù)據(jù)塊信息的數(shù)據(jù)節(jié)點(diǎn)對該數(shù)據(jù)組進(jìn)行(5,3) RS編碼,使第i個數(shù)據(jù)組從3個原始數(shù)據(jù)塊變?yōu)?個原始數(shù)據(jù)塊和2個冗余數(shù)據(jù)塊。本實(shí)施例中所述的RS編碼是依次對每個原始數(shù)據(jù)塊中4比特的數(shù)據(jù)按照下面的 公式進(jìn)行處理,得到對應(yīng)每3個4比特原始數(shù)據(jù)的2個4比特的冗余數(shù)據(jù),本實(shí)施例共得到 1536個4比特的第一冗余數(shù)據(jù)和1536個4比特的第二冗余數(shù)據(jù),將1536個4比特的第一 冗余數(shù)據(jù)按順序組合成第一冗余數(shù)據(jù)塊,將1536個4比特的第二冗余數(shù)據(jù)按順序組合成第 二冗余數(shù)據(jù)塊,即分別得到兩個30M的冗余數(shù)據(jù)塊,具體公式是FD = C,(公式一)其中F是2X3的范得蒙德矩陣,D是第i個數(shù)據(jù)組中3個4比特原始數(shù)據(jù)組成的 3X1的矩陣,C是編碼后第i個數(shù)據(jù)組中2個4比特的冗余數(shù)據(jù)組成的2X1的矩陣。本實(shí)施例中i7= 123。第四步,將編碼后的同一數(shù)據(jù)組中的數(shù)據(jù)塊存儲的若干個機(jī)架上,且同一機(jī)架上 中同一數(shù)據(jù)組的數(shù)據(jù)塊不超過2個。第五步,當(dāng)存儲文件中有數(shù)據(jù)塊損壞時,采用RS糾刪碼恢復(fù)數(shù)據(jù)塊,得到恢復(fù)后 的數(shù)據(jù)塊。以第一組數(shù)據(jù)組為例,所述的恢復(fù)數(shù)據(jù)塊,是1)當(dāng)損壞的數(shù)據(jù)塊的數(shù)目小于或等于2時,通過下面的公式得到原始數(shù)據(jù)塊,進(jìn) 而得到損壞的原始數(shù)據(jù)塊或者是通過RS編碼得到損壞的冗余數(shù)據(jù)塊; 其中
是2X2的單位矩陣,F(xiàn)是2X3的范得蒙德矩陣,D是表
示第1個數(shù)據(jù)組中3個4比特原始數(shù)據(jù)組成的3X1的矩陣,C是表示編碼后第1個數(shù)據(jù)組 中2個4比特冗余數(shù)據(jù)組成的2X1的矩陣,A'是從A中去除損壞數(shù)據(jù)塊所對應(yīng)的行后的 新矩陣,E'是從E中去除損壞數(shù)據(jù)塊所對應(yīng)的行后的新矩陣。因?yàn)榫仃嘑是一個范得蒙德矩陣,任取矩陣A的2行或者1行都是線性獨(dú)立的,故 矩陣A' —定是可逆的,D的值可以利用高斯消元法從(公式二)中計(jì)算得出,這樣所有的 原始數(shù)據(jù)塊都可以利用(公式二)按照每次計(jì)算4比特?cái)?shù)據(jù)來依次恢復(fù)出來。2)當(dāng)損壞的數(shù)據(jù)塊的數(shù)目大于2時,損壞的數(shù)據(jù)塊無法恢復(fù)。本實(shí)例中成功恢復(fù)了同一數(shù)據(jù)組中任意不超過2塊損壞的數(shù)據(jù)塊,且大大節(jié)約了 存儲空間如果只有一份備份,則本實(shí)施例中的(5,3) RS編碼將節(jié)省4/9空間(現(xiàn)有技術(shù)備 份三份需要9塊),從而在大規(guī)模使用中節(jié)約了很大的成本;并且可通過設(shè)置備份參數(shù)和編 碼參數(shù),使設(shè)置更加靈活,可靠級別更加細(xì)化。
權(quán)利要求
一種基于RS糾刪碼的數(shù)據(jù)存儲方法,其特征在于,包括以下步驟第一步,對待存儲文件進(jìn)行分塊處理,從而得到N個大小相同的原始數(shù)據(jù)塊,并對這些原始數(shù)據(jù)塊進(jìn)行分組處理,得到M個數(shù)據(jù)組;第二步,將每個數(shù)據(jù)組中的原始數(shù)據(jù)塊逐塊的從用戶端傳送到數(shù)據(jù)節(jié)點(diǎn),當(dāng)?shù)趇個數(shù)據(jù)組傳輸完畢后,接收到該數(shù)據(jù)組數(shù)據(jù)的數(shù)據(jù)節(jié)點(diǎn)將接收到的數(shù)據(jù)傳送給管理節(jié)點(diǎn)指定的一個數(shù)據(jù)節(jié)點(diǎn),該數(shù)據(jù)節(jié)點(diǎn)得到該組數(shù)據(jù)塊的所有原始數(shù)據(jù)塊信息,1≤i≤M;第三步,得到第i組數(shù)據(jù)塊的所有原始數(shù)據(jù)塊信息的數(shù)據(jù)節(jié)點(diǎn)對該數(shù)據(jù)組進(jìn)行RS編碼,使第i個數(shù)據(jù)組從Ki個原始數(shù)據(jù)塊變?yōu)镵i個原始數(shù)據(jù)塊和Ri個冗余數(shù)據(jù)塊,Ki是編碼前第i個數(shù)據(jù)組中原始數(shù)據(jù)塊的數(shù)目;第四步,將編碼后的同一數(shù)據(jù)組中的數(shù)據(jù)塊存儲的若干個機(jī)架上,且同一機(jī)架上中同一數(shù)據(jù)組的數(shù)據(jù)塊不超過Ri個;第五步,當(dāng)存儲文件中有數(shù)據(jù)塊損壞時,采用RS糾刪碼恢復(fù)數(shù)據(jù)塊,得到恢復(fù)后的數(shù)據(jù)塊。
2.根據(jù)權(quán)利要求1所述的基于RS糾刪碼的數(shù)據(jù)存儲方法,其特征是,第一步中所述的 分塊處理,是將待存儲文件按照固定大小T分為N個原始數(shù)據(jù)塊,當(dāng)最后一塊原始數(shù)據(jù)塊 小于T時,對最后一塊原始數(shù)據(jù)塊填充冗余,使其大小正好是T。
3.根據(jù)權(quán)利要求1所述的基于RS糾刪碼的數(shù)據(jù)存儲方法,其特征是,第一步中所述的 分組處理,是將K個原始數(shù)據(jù)塊作為一組,從而將N個原始數(shù)據(jù)塊分為M組,其中最后一個 原始數(shù)據(jù)組的原始數(shù)據(jù)塊的個數(shù)小于或者等于K。
4.根據(jù)權(quán)利要求1所述的基于RS糾刪碼的數(shù)據(jù)存儲方法,其特征是,第三步中所述的 RS編碼是依次對每個原始數(shù)據(jù)塊中w比特的數(shù)據(jù)按照下面的公式進(jìn)行處理,得到對應(yīng)該Ki 個w比特原始數(shù)據(jù)的Ri個w比特的冗余數(shù)據(jù),將第j冗余數(shù)據(jù)的所有w比特的冗余數(shù)據(jù)按 順序進(jìn)行組合得到第j冗余數(shù)據(jù)塊,Ri,具體公式是FD = C,其中F是RiXKi的范得蒙德矩陣,D是第i個數(shù)據(jù)組中Ki個w比特原始數(shù)據(jù)組成的 KiXl的矩陣,C是編碼后第i個數(shù)據(jù)組中Ri個w比特的冗余數(shù)據(jù)組成的RiX 1的矩陣。
5.根據(jù)權(quán)利要求1所述的基于RS糾刪碼的數(shù)據(jù)存儲方法,其特征是,第五步中所述的 恢復(fù)數(shù)據(jù)塊,是指1)當(dāng)損壞的數(shù)據(jù)塊的數(shù)目小于或等于Ri時,通過下面的公式分別得到w比特的原始數(shù) 據(jù)塊,進(jìn)而組合得到損壞的原始數(shù)據(jù)塊或者是通過RS編碼得到損壞的冗余數(shù)據(jù)塊;A' D = E', λ λ其中J= ,E= ,I是KiXKi的單位矩陣,F(xiàn)是RiXKi的范得蒙德矩陣,D是第i V^ J Kf-J個數(shù)據(jù)組中Ki個w比特原始數(shù)據(jù)塊組成的Ki X 1的矩陣,C是編碼后第i個數(shù)據(jù)組中Ri個 w比特冗余數(shù)據(jù)塊組成的RiX 1的矩陣,A'是從A中去除損壞數(shù)據(jù)塊所對應(yīng)的行后的新矩 陣,E'是從E中去除損壞數(shù)據(jù)塊所對應(yīng)的行后的新矩陣;2)當(dāng)損壞的數(shù)據(jù)塊的數(shù)目大于Ri時,損壞的數(shù)據(jù)塊無法恢復(fù)。
全文摘要
一種信息處理技術(shù)領(lǐng)域的基于RS糾刪碼的數(shù)據(jù)存儲方法,包括以下步驟對待存儲文件進(jìn)行分塊處理和分組處理;將每個數(shù)據(jù)組的原始數(shù)據(jù)塊傳送到數(shù)據(jù)節(jié)點(diǎn)并由數(shù)據(jù)節(jié)點(diǎn)進(jìn)行RS編碼,使每個數(shù)據(jù)組在原始數(shù)據(jù)塊的基礎(chǔ)上增加若干個冗余數(shù)據(jù)塊,將編碼后的同一數(shù)據(jù)組中的數(shù)據(jù)塊存儲的若干個機(jī)架上,且同一機(jī)架上中同一數(shù)據(jù)組的數(shù)據(jù)塊不超過冗余數(shù)據(jù)塊的數(shù)目,當(dāng)存儲文件中有數(shù)據(jù)塊損壞時,采用RS糾刪碼恢復(fù)數(shù)據(jù)塊,得到恢復(fù)后的數(shù)據(jù)塊。本發(fā)明在保證日常使用效率基礎(chǔ)上,節(jié)省了大量的存儲空間;數(shù)據(jù)存儲可靠性的要求可以根據(jù)文件重要性進(jìn)行靈活地設(shè)置,通過備份數(shù)量和編碼參數(shù)的設(shè)定,可以提供更加豐富的存儲策略,大大降低了數(shù)據(jù)存儲成本。
文檔編號G06F12/06GK101840377SQ20101017177
公開日2010年9月22日 申請日期2010年5月13日 優(yōu)先權(quán)日2010年5月13日
發(fā)明者曹羽中, 沈林峰, 程正杰, 鄭燕飛, 陳克非 申請人:上海交通大學(xué)