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