糾刪碼 定義及常見型別

2021-07-24 23:32:37 字數 1947 閱讀 2191

你能給糾刪碼乙個好的定義嗎?

ethan miller:糾刪碼是在丟失部分資料的情況下根據剩餘資料將丟失的資料重建的一組演算法。舉個例子,如果我想保護六份資料,我會使用一種糾刪碼演算法來產生兩份額外的資料,這樣總共就會有八份資料。這八份資料中的任意六份資料都能恢復另外兩份資料。 糾刪碼的要點是你可以選擇對資料做任意數量的分片。我知道一些糾刪碼可以將資料至多分成200片或者奇數片,你也可以選擇校驗資料的數量。比如可以是10份原始資料加上8份校驗資料,一共18分資料。其中只要有任意10份資料是完整的就可以恢復全部資料。 所有it部門都使用raid5和raid6,這也是最常用的糾刪碼型別。大部分的it部門不考慮使用能夠保護多於兩份資料丟失的糾刪碼型別,至少現在是這樣。不做考慮的原因是在同乙個raid組中兩個成員同時發生故障的機率相對較小。但如果你的it環境很大,資料量有1pb甚至更多,那麼你可能需要考慮使用在兩個成員都發生故障時依然能夠保護資料的糾刪碼。 

有其它型別的糾刪碼嗎?

哪種應用、負載以及資料型別適合使用糾刪碼? 

miller:有一種型別的資料非常適合使用糾刪碼,這種資料就是歸檔資料。因為歸檔資料需要儲存相當長的一段時間,乙份、兩份或多份資料出現問題的可能性會急劇上公升。 歸檔資料的另乙個特性是寫入操作很少,這使得糾刪碼可以很輕易的恢復資料。一旦你寫入一次資料,你可能會在很久以後才會讀取,甚至永遠不會再讀取。糾刪碼的大部分額外開銷是在寫入的時候產生的(寫懲罰),而在讀取的時候只有少量開銷。事實上,只有在發生故障的時候才會有額外的讀取開銷。如果沒有故障發生,糾刪碼對讀取操作通常不會有任何影響。 從應用的角度來看,對於讀寫都很繁忙的應用,使用糾刪碼並不是乙個很好的選擇。但對於只有大量讀取的應用,糾刪碼可以提供強大的可靠性,並且在恢復資料的時候只產生很小的額外開銷,因為糾刪碼的額外開銷主要來自寫操作。

如何評判不同產品的糾刪碼? 

miller:我認為評判糾刪碼的第一條標準是效能。換句話說,當你部署了一種糾刪碼後,寫入速度會有多快?進行資料恢復時的讀取速度有多快? 另乙個標準是糾刪碼如何將資料單元分割?可以是整盤的分割,可以是卷級的分割,也可以是部分盤或部分卷的分割,總之會有各種方式將資料單元進行分割。分割時還會遇到的乙個問題是糾刪碼單元的數量有多少?有10個資料單元和5個糾刪碼單元組成的糾刪碼系統,也有12個資料單元和4個糾刪碼單元組成的糾刪碼系統。但大部分糾刪碼產品都能配置資料單元和糾刪碼單元的個數。 還有乙個需要考慮的點是某些糾刪碼型別會帶來一些問題,儘管並非一定會有問題。大部分產品都是用reed-solomon糾刪碼,所有的reed-solomon糾刪碼的工作機制基本是相同的。但有些型別的糾刪碼為了使資料恢復更加快速,採用了不同的工作機制。使用這種型別糾刪碼的廠商宣稱它能從4塊硬碟中的部分硬碟(並非所有硬碟)中恢復99.9%的資料丟失故障,但正如之前的描述,這種讓資料恢復更加快速的工作機制會增加一定的風險。所以在你做出選擇之前需要了解它們的工作機制。 還有些需要考慮的小細節,比如不同的廠商部署糾刪碼的方式或許會有些不同。所以在部署之前你需要了解每個廠商的糾刪碼是如何工作的,它們能在什麼樣的場景恢復資料故障。 

你認為糾刪碼會在未來掀起一波浪潮嗎? 

miller:我認為在某些領域,糾刪碼會在未來掀起一波浪潮。特別是在儲存歸檔領域,在我看來糾刪碼是必備的,因為你會把資料儲存10年甚至20年,你會經歷各種故障並將它們恢復。此外在資料歸檔中,你會經常讀取資料,就像我們之前提到的,只有寫歸檔資料才會有額外的效能開銷。所以糾刪碼在未來一定會在資料歸檔領域成為潮流,這毫無疑問。 此外,我認為未來糾刪碼是否會成為潮流取決於裝置容量大小和讀寫速率的相對速度提公升差異。當儲存容量的增速大於讀寫速率的增速時,糾刪碼的作用就更能夠體現。這就是為什麼我們從90年代中期(那時我是加州大學伯克利分校的raid小組的一員)的raid5走到了今天的raid6。看看過去,當時你讀一整塊硬碟的時間只需要幾分鐘時間,而今天你可能要花上大半天。如果用最快的速度在連續一周的時間進行讀取操作,你可能需要更好的糾刪碼,因為在一周的時間你可能會遭遇兩到三次的故障,這樣你需要花費額外的資源去重建資料,你也希望這些故障能夠被解決。所以我認為由於我們的儲存裝置容量在不斷變大,但讀寫速率並無法按照相應的比例來提公升,我們對糾刪碼的需求就會變得越來越多。

糾刪碼簡介

背景 在資料儲存領域,hadoop採用三副本策略有效的解決了儲存的容錯問題,但是三副本策略中磁碟的利用效率比較低,僅有33 而且副本帶來的成本壓力實在太高,後來適時的出現了糾刪碼的概念。當冗餘級別為n m時,將這些資料塊分別存放在n m個硬碟上,這樣就能容忍m個 假設初始資料有n個 硬碟發生故障。當...

Hadoop容錯恢復之糾刪碼

在hdfs中常見的容錯恢復是副本機制,它會在部分檔案丟失之後通過心跳機制發資料給namenode然後尋找未丟失的副本,按照replication進行備份。這樣的話會保證資料在絕大多數情況下不丟失。但是造成的問題就是這種機制使得hadoop的空間利用率會很低。比如說在乙個備份數量為3的情況下空間利用率...

ceph中糾刪碼如何讀寫資料

從該圖我們可以看到從前端的業務檔案到資料儲存到儲存硬碟上的過程,步驟如下 1.file object對映 rados中需要配置object的大小,一般會設定為2m到4m的大小。當使用者寫入資料檔案時,首先會根據object的大小值將file進行切分。如果file的大小不足object的大小,則直接按...