糾刪碼(erasure coding,EC)是一種數據保護方法,它將數據分割成片段,把冗餘數據塊擴展、編碼,並將其存儲在不同的位置,比如磁碟、存儲節點或者其它地理位置。
基本介紹
- 中文名:糾刪碼
- 外文名:Erasure Codes
糾刪碼會創建一個數學函式來描述一組數字,這樣就可以檢查它們的準確性,而且一旦其中一個數字丟失,還可以恢復。多項式插值(polynomial interpolation)或過採樣(oversampling)就是糾刪碼所使用的關鍵技術。
從數據函式角度來說,糾刪碼提供的保護可以用下面這個簡單的公式來表示:n = k + m。變數“k”代表原始數據或符號的值。變數“m”代表故障後添加的提供保護的額外或冗餘符號的值。變數“n”代表糾刪碼過程後創建的符號的總值。
舉個例子來說,在一個EC 10/16的配置中,會有6個額外的符號(變數m)被添加到10個原始符號(變數k)中。這16個數據片段(變數n)會遍布16個驅動器、節點或地理位置中。而原始檔案可以從10個驗證片段中重建。
糾刪碼,也稱為前向糾錯(FEC)編碼,早在50年前就已出現。隨後產生了不同類型。其中一個最早也是最常見的類型就是RS(Reed-Solomon),這種類型的數據可以使用任何k符號的組合或數據塊來重建,即使m符號丟失或不可用。比如,在EC 10/16中,即使有6個驅動器、節點或者地理位置丟失或不可用,而原始檔案還是可以恢復。
糾刪碼可以用於有大量數據和任何需要容錯的應用程式或系統中,比如磁碟陣列系統、數據格線、分散式存儲應用程式、對象存儲或歸檔存儲。目前,糾刪碼的一個常見的使用案例是基於對象的雲存儲。