分布式檔案系統裡的EC和RS編譯碼的效率問題

2021-06-18 04:42:02 字數 1021 閱讀 6625

erasure code(糾刪碼)是通訊、計算機領域常用技術。對於儲存技術而言,糾刪碼是提高資料冗餘和降低成本之間的一種折中。

傳統盤陣上用的raid4、raid 5也是一種簡單的ec,資料冗餘度較低,編譯碼只是簡單的異或操作。

分布式檔案系統領域副本技術是最常見的提高資料冗餘度的方法。但是副本的方式空間利用率太低,雙副本也就50%。採用ec對於分布式檔案系統而言,可以提高空間利用率,但是也帶來的一定的效能損耗和管理複雜度。支援ec的分布式檔案系統並不太多。isilon的onefs是支援ec的,但是其編碼比例比較固定的,最多不能超過n:4。hdfs最初也不支援ec,後面有社群做了ec的補丁。facebook對於社群的最新貢獻是對傳統的rs編碼方式的ec做了改進,提出了一種lrc編碼(locally reparable code)。

想談下rs(reed solomon)編碼的效率問題。rs編譯碼矩陣的計算的損耗可以不考慮,因為編譯碼矩陣肯定是提前算好的。那這裡需要考慮的就是編碼時複雜的矩陣乘法。rs編碼是基於有限伽羅華域上的運算。rs碼的矩陣乘法而言,涉及兩個操作「乘法」、「加法」。伽羅華域的加法比較簡單,對計算機而言就是異或。乘法比較複雜。傳統的rs碼採用gf(2^8)域上的乘法。gf(2^8)域總共有2^8(256)個不同的數字,如果每次編碼時都需要計算這些乘法,效率非常低。如果提前算好存下來,編碼時只是去記憶體裡面取以下,這樣就不需要複雜的乘法計算,這也是空間換時間的一種trade off。對於8位的rs碼而言,需要(1+2^8)*2^8,大約2^(8*2-1) byte=32k byte來儲存這些結果,對於現代計算機而言32k根本不算什麼。如果是16位的編碼,需要2^(16*2-1)*2 byte=4g byte來儲存這些結果。4g的記憶體消耗有些大,但也並非無法承受。但是到了32位的rs嗎而言,這種方法已經完全無法實現了,因為記憶體消耗達到了驚人的2^(32*2-1)*4 byte = 32 e byte。

對於通用處理器而言,伽羅華域的乘法過於複雜。當然128位的rs碼也並非完全不可能。如果用空間換時間不行,那就只好時間換空間。伽羅華域的乘法結果只能每次臨時算出來,這就需要專門的asic晶元或者用lpga之類的方法直接用硬體算出來。

分布式檔案系統

分布式檔案系統 概述 系統管理員可以利用分布式檔案系統 dfs 使使用者訪問和管理那些物理上跨網路分布的檔案更加容易。通過 dfs,可以使分布在多個伺服器上的檔案在使用者面前顯示時,就如同位於網路上的乙個位置。使用者在訪問檔案時不再需要知道和指定它們的實際物理位置。例如,如果您的銷售資料分散在某個域...

分布式檔案系統

常見的分布式檔案系統有,gfs hdfs lustre ceph gridfs mogilefs tfs fastdfs等。各自適用於不同的領域。它們都不是系統級的分布式檔案系統,而是應用級的分布式檔案儲存服務。google學術 這是眾多分布式檔案系統的起源 google file system 大...

分布式檔案系統

缺點是檔案路徑是一致的,只能用於嵌入式檔案的儲存,沒有辦法作為系統請求檔案的儲存,不過對於web2.0可以從設計層面進行一些改善,將使用者的資料互動更多地方在伺服器端,而不是資料庫中,比如使用者的文章就在 com yyy裡面,但是這又帶來一些新的問題,檔案同步負載均衡等問題。現在著眼於將自製的web...