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