邱紹穎 崔浩杰
1.廣州市民政局 廣東廣州 510030
2.中國聯(lián)通廣州市分公司 廣東廣州 510000
用戶使用不同文件名來復(fù)制文件,或者對文件進(jìn)行少量更新后創(chuàng)建新的類似文件。當(dāng)用戶在機(jī)構(gòu)內(nèi)的人員之間多次復(fù)制冗余文件時,這些冗余文件數(shù)量會劇增。冗余數(shù)據(jù)產(chǎn)生的另一個來源是應(yīng)用程序。例如,網(wǎng)紅自拍備受推崇,當(dāng)對移動物體進(jìn)行連拍時,1s內(nèi)可拍攝30張照片,人們希望存儲效果好的照片,而刪除效果差的照片,但網(wǎng)紅往往無暇進(jìn)行處理,直接將所拍照片發(fā)送給系統(tǒng),此類應(yīng)用程序會在類似圖片中產(chǎn)生大量冗余[1]。
當(dāng)用戶首次請求某份文本文件時,網(wǎng)絡(luò)進(jìn)行一次傳輸,不會在網(wǎng)絡(luò)中產(chǎn)生冗余傳輸。但是,當(dāng)用戶再次請求同一文本文件時,冗余傳輸就會發(fā)生。同時,多媒體文件(如圖片或視頻流)傳輸也會產(chǎn)生冗余傳輸。例如,當(dāng)不同客戶端從YouTube視頻網(wǎng)站接收流媒體文件時,冗余數(shù)據(jù)包必定會通過多個ISP(互聯(lián)網(wǎng)服務(wù)提供商)進(jìn)行轉(zhuǎn)發(fā)。
在服務(wù)器端,當(dāng)同一單位人員上傳相同(或類似)文件時,冗余數(shù)據(jù)就會激增。此外,通過復(fù)制、RAID(獨立冗余磁盤陣列)和遠(yuǎn)程備份來提高文件的可靠性也會加速冗余數(shù)據(jù)的產(chǎn)生。這些來自客戶端和服務(wù)器端的冗余數(shù)據(jù)導(dǎo)致的問題之一是存儲空間的消耗增加。在網(wǎng)絡(luò)端,網(wǎng)絡(luò)帶寬消耗增加。在客戶端,數(shù)據(jù)訪問時延會增加,因為用戶每次都會從大數(shù)據(jù)中心云存儲系統(tǒng)遠(yuǎn)程下載相同文件。我們發(fā)現(xiàn),冗余數(shù)據(jù)會對存儲設(shè)備和網(wǎng)絡(luò)性能產(chǎn)生嚴(yán)重影響。
完全副本備份冗余方式對數(shù)據(jù)進(jìn)行直接拷貝,生成副本,并存儲在不同的服務(wù)器上。只要存在一個副本保持?jǐn)?shù)據(jù)的完整性,那么用戶就可以正常獲取這個數(shù)據(jù)。很多著名的存儲系統(tǒng)都采用了完全副本冗余方式,如GFS、Atmos、Ceph等。完全副本冗余方式有可靠性高、降低訪問延遲、處理簡單的優(yōu)勢。完全副本備份技術(shù)管理簡單,但消耗很大的存儲空間和通信開銷,網(wǎng)絡(luò)性能明顯降低。完全副本備份冗余技術(shù)可以分為基于文件和基于文件分塊這兩種冗余模式:
(1)基于文件的副本備份,基于文件的副本備份技術(shù)是將文件整個地復(fù)制很多份并分別存儲于不同存儲節(jié)點,當(dāng)檢索數(shù)據(jù)時,每個文件的多個分布于不同節(jié)點的副本中只要有一個完整的副本存在,就可以恢復(fù)出原始文件。
(2)基于文件分塊的副本備份(也稱為碎片備份),基于文件分塊的副本備份技術(shù)是將文件分成塊后復(fù)制一定數(shù)量的副本,然后將其保存在不同存儲節(jié)點中[2]。
這兩種方法都有存儲效率低、存儲空間浪費大的缺點。比如完全副本備份技術(shù)采用副本數(shù)為3,而其真實有效使用的空間只有1/3。完全備份方式因為實現(xiàn)簡單,目前大多數(shù)存儲系統(tǒng)中均采用此種存儲方式。
糾刪碼(Erasure Code, EC)是一種前向錯誤糾正(FEC)技術(shù),由于它具有容錯性,近年來多應(yīng)用于存儲系統(tǒng)中,可以有效提高系統(tǒng)可靠性。糾刪碼冗余是指:將數(shù)據(jù)分成若干數(shù)據(jù)塊,對這些數(shù)據(jù)塊進(jìn)行編碼操作,生成額外的冗余塊,然后數(shù)據(jù)(包括冗余塊)存儲于不同存儲節(jié)點。用戶在檢索數(shù)據(jù)時,即使某些分塊丟失,只要從所有的冗余塊中選取略大于源數(shù)據(jù)塊數(shù)量的數(shù)據(jù)塊,通過解碼操作就能恢復(fù)出源數(shù)據(jù)。根據(jù)編解碼的方式不同,主要將糾刪碼分為如下幾種類型:
(1)RS編碼,RS(Reed-Solomon)碼是糾錯碼中經(jīng)典的一種編碼,利用范特蒙矩陣或者柯西矩陣的特性來實現(xiàn)糾錯碼的功能,可以糾正任意多個錯誤。根據(jù)生成矩陣的不同,RS編碼可以分為Vandermonde編碼(VRS)和Cauchy編碼(CRS)。把輸入數(shù)據(jù)視為向量D=(D1,D2,…,Dn),編碼后數(shù)據(jù)視為向量(D1,D2,…,Dn,C1,C2,…,Cm),那么RS編碼能夠容忍m個數(shù)據(jù)丟失。RS編碼實現(xiàn)簡單、可靠性高、冗余度任意、空間最優(yōu),然而編解碼性能較低、計算復(fù)雜,對于存儲性能要求較高的云存儲系統(tǒng)并不適用。
(2)LDPC編碼,級聯(lián)低密度糾刪碼稱為LDPC(Low-Density Parity Check)糾刪碼,LDPC作為一種線性分組碼,編碼和譯碼運算完全采用異或方式,運算速度比RS碼快得多,下圖是LDPC碼編碼示意圖,其中冗余位y1,y2…y5是根據(jù)信息位x1,x2,…x10基于一定的概率組合而成的,表達(dá)式并非唯一,因此結(jié)構(gòu)不是唯一確定的,所以譯碼成功率也具有一定的不確定性[3]。
云存儲系統(tǒng)由于其分布性的特點,并不能保證每個存儲節(jié)點的可靠。為了保證存儲數(shù)據(jù)的安全,必須采取一系列的冗余措施,避免數(shù)據(jù)造成不可恢復(fù)的損壞。