天天看點

RAID混合RAID非标準RAID

概述

RAID(Redundant Arrays of Independent Disks)獨立備援磁盤陣列。

分類

RAID級别

raid0: 讀、寫性能提升,無容錯能力,空間n*disk

raid1: 寫性能略有下降,讀性能提升,容錯,空間:1*disk

raid4: 讀、寫性能提升,有容錯能力(最多壞一塊磁盤),空間:(n-1)*disk

1 & 0 = 1

raid5: 讀、寫性能提升,有容錯能力(最多壞一塊磁盤),空間:(n-1)*disk

raid10, raid01

raid10: 讀、寫性能提升,有容錯能力(每一組可壞一塊盤),空間:n*disk/2

raid6: 有兩塊校驗盤,容許同時壞兩塊,至少需要4塊盤,空間:(n-2)*disk

标準RAID 

RAID 0

RAID0稱為條帶化(Striping)存儲,将資料分段存儲于 各個磁盤中,讀寫均可以并行處理。是以其讀寫速率為單個磁盤的N倍(N為組成RAID0的磁盤個數),但是卻沒有數 據備援,單個磁盤的損壞會導緻資料的不可修複。大多數<code>striping</code>的實作允許管理者通過調節兩個關鍵的參數來定義資料分段及寫入磁盤的 方式,這兩個參數對RAID0的性能有很重要的影響。

STRIPE WIDTH

stripe width是指可被并行寫入的 stripe 的個數,即等于磁盤陣列中磁盤的個數。

STRIPE SIZE

也可稱為block size(chunk size,stripe length,granularity),指寫入每個磁 盤的資料塊大小。以塊分段的RAID通常可允許選擇的塊大小從 2KB 到 512KB不等,也有更 高的,但一定要是2的指數倍。以位元組分段的(比如RAID3)一般的stripe size為1位元組或者 512位元組,并且使用者不能調整。 stripe size對性能的影響是很難簡單估量的,最好在實際應用中依自己需求多多調整并 觀察其影響。通常來說,減少stripe size,檔案會被分成更小的塊,傳輸資料會更快,但 是卻需要更多的磁盤來儲存,增加positioning performance,反之則相反。應該說,沒有 一個理論上的最優的值。很多時候,也要考慮磁盤控制器的政策,比如有的磁盤控制器會等 等到一定資料量才開始往磁盤寫入。

RAID 1

鏡像存儲(mirroring),沒有資料校驗。資料被同等地寫入兩個或多個磁盤中,可想而知,寫入速度會比較 慢,但讀取速度會比較快。讀取速度可以接近所有磁盤吞吐量的總和,寫入速度受限于最慢 的磁盤。 RAID1也是磁盤使用率最低的一個。如果用兩個不同大小的磁盤建立RAID1,可以用空間較小 的那一個,較大的磁盤多出來的部分可以作他用,不會浪費。

RAID0的改良版,加入了漢明碼(<code>Hanmming Code</code>)錯誤校驗。

漢明碼能夠檢測最多兩個同時發生的比特錯誤,并且能夠更正單一比特的錯誤。漢明碼的位 數與資料的位數有一個不等式關系,即:

1

2^P ≥ P + D +1

P代表漢明碼的個數,D代表資料位的個數,比如4位資料需要3位漢明碼,7位資料需要4位漢 明碼,64位資料時就需要7位漢明碼。RAID2是按1bit來分割資料寫入的,而P:D就代表了資料 盤與校驗盤的個數。是以如果資料位寬越大,用于校驗的盤的比例就越小。由于漢明碼能夠 糾正單一比特的錯誤,是以當單個磁盤損壞時,漢明碼便能夠糾正資料。

RAID 2 因為每次讀寫都需要全組磁盤關聯,是以為了最大化其性能,最好保證每塊磁盤主 軸同步,使同一時刻每塊磁盤磁頭所處的扇區邏輯編号都一緻,并存并取,達到最佳性能。 如果不能同步,則會産生等待,影響速度。

與RAID0相比,RAID2的傳輸率更好。因為RAID0一般<code>stripe size</code>相對于RAID2的1bit來說 實在太大,并不能保證每次都是多磁盤并行。而RAID2每次IO都能保證是多磁盤并行,為了 發揮這個優勢,磁盤的尋道時間一定要減少(尋道時間比資料傳輸時間要大幾個數量級),所 以RAID2适合于連續IO,大塊IO(比如視訊流服務)的情況。

類似于RAID2,資料條帶化(stripe)存儲于不同的硬碟,資料以位元組為機關,隻是RAID3使用單塊磁盤存儲簡單的 奇偶校驗資訊,是以最終磁盤數量為 N+1 。當這N+1個硬碟中的其中一個硬碟出現故障時, 從其它N個硬碟中的資料也可以恢複原始資料,當更換一個新硬碟後,系統可以重新恢複完整 的校驗容錯資訊。

由于在一個硬碟陣列中,多于一個硬碟同時出現故障率的幾率很小,是以一般情況下,使用 RAID3,安全性是可以得到保障的。RAID 3會把資料的寫入操作分散到多個磁盤上進行,不管是向哪一個資料盤寫入資料, 都需要同時重寫校驗盤中的相關資訊。是以,對于那些經常需要執行大量寫入操作的應用來 說,校驗盤的負載将會很大,無法滿足程式的運作速度,進而導緻整個RAID系統性能的下降。 鑒于這種原因,RAID 3更加适合應用于那些寫入操作較少,讀取操作較多的應用環境,例如 資料庫和WEB伺服器等。

與RAID3類似,但RAID4是按塊(扇區)存取。無須像RAID3那樣,哪怕每一次小I/O操作也要涉 及全組,隻需涉及組中兩塊硬碟(一塊資料盤,一塊校驗盤)即可,進而提高了小量資料 I/O速度。

奇偶校驗(XOR),資料以塊分段條帶化存儲。校驗資訊交叉地存儲在所有的資料盤上。

RAID5把資料和相對應的奇偶校驗資訊存儲到組成RAID5的各個磁盤上,并且奇偶校驗資訊和 相對應的資料分别存儲于不同的磁盤上,其中任意N-1塊磁盤上都存儲完整的資料,也就是 說有相當于一塊磁盤容量的空間用于存儲奇偶校驗資訊。是以當RAID5的一個磁盤發生損壞 後,不會影響資料的完整性,進而保證了資料安全。當損壞的磁盤被替換後,RAID還會自動 利用剩下奇偶校驗資訊去重建此磁盤上的資料,來保持RAID5的高可靠性。

RAID 5可以了解為是RAID 0和RAID 1的折衷方案。RAID 5可以為系統提供資料安全保障,但 保障程度要比鏡像低而磁盤空間使用率要比鏡像高。RAID 5具有和RAID 0相近似的資料讀取 速度,隻是因為多了一個奇偶校驗資訊,寫入資料的速度相對單獨寫入一塊硬碟的速度略慢。

類似RAID5,但是增加了第二個獨立的奇偶校驗資訊塊,兩個獨立的奇偶系統使用不同的算法, 資料的可靠性非常高,即使兩塊磁盤同時失效也不會影響資料的使用。但RAID 6需要配置設定給 奇偶校驗資訊更大的磁盤空間,相對于RAID 5有更大的“寫損失”,是以“寫性能”非常差。

由圖所知,每個硬碟上除了都有同級資料XOR校驗區外,還有一個針對每個資料 塊的XOR校驗區。當然,目前盤資料塊的校驗資料不可能存在目前盤而是交錯存儲的。從數 學角度來說,RAID 5使用一個方程式解出一個未知變量,而RAID 6則能通過兩個獨立的線性 方程構成方程組,進而恢複兩個未知資料。

伴随着硬碟容量的增長,RAID6已經變得越來越重要。TB級别的硬碟上更容易造成資料丢失, 資料重建過程(比如RAID5,隻允許一塊硬碟損壞)也越來越長,甚至到數周,這是完全不可接受的。而RAID6允許兩 塊硬碟同時發生故障,是以漸漸受到人們的青睐。

伴随CD,DVD和藍光CD光牒的問世,存儲媒體出現了擦除碼技術,即使媒介表面出現劃痕,仍然可以播放,大多數常見的擦除碼算法已經演變為上世紀60年代麻省理工學院林肯實驗室開 發的Reed-Solomon碼。實際情況中,多數RAID6實作都采用了标準的RAID5教校驗比特和<code>Reed-Solomon</code>碼 。而純擦除碼算法的使用使得RAID 6陣列可以失效兩塊以上的硬碟,保護力度更強,有些實作方法提供了多種級别的保護,甚至允許使用者(或存儲管理者)指定保護級别。

顧名思義,是RAID0和RAID1的結合。先做條帶(0),再做鏡像(1)。

同上,但是先做鏡像(1),再做條帶(0)

RAID01和RAID10非常相似,二者在讀寫性能上沒有什麼差别。但是在安全性上RAID10要好于 RAID01。如圖中所示,假設DISK0損壞,在RAID10中,在剩下的3塊盤中,隻有當DISK1故障, 整個RAID才會失效。但在RAID01中,DISK0損壞後,左邊的條帶将無法讀取,在剩下的3快盤 中,隻要DISK2或DISK3兩個盤中任何一個損壞,都會導緻RAID失效。

RAID10和RAID5也是經常用來比較的兩種方案,二者都在生産實踐中得到了廣泛的應用。 RAID10安全性更高,但是空間使用率低。至于讀寫性能,與cache有很大關聯,最好根據實 際情況測試比較選擇。

DRFS,即DistributedRaidFileSystem,是一種嘗試将RAID與Hadoop的DFS結合起來的技術。 通常的HDFS在實踐中需要将replication factor設為3以保證資料完整性,而如果利用 RAID的stripe和partity(奇偶校驗)技術,将資料分為多個塊,并且存儲各個塊的校驗信 息(XOR或擦除碼)。有了這些措施,塊的副本數就可以降低并且保證同樣的資料可靠性,就能節省相當一部 分的存儲空間。

DRFS包含以下幾個元件:

DRFS client: 提供應用程式通路DRFS的接口,在發現讀取到的檔案有損壞時修複,整個操作對應用程式透明

RaidNode: 建立,維護檢驗檔案的daemon

BlockFixer: 周期性地檢查檔案,重新計算校驗和,修複檔案.

RaidShell: 類似于hadoop shell.

ErasureCode: 即DRFS所使用的生成校驗碼的算法,可為XOR或者Reed-Solomon算法。 XOR僅能建立一個校驗位元組,而Reed-Solomon則可以建立無數位(位數越多,能恢複的數 據也越多),如果使用Reed-Solomon,replication甚至可以降為1,缺點是降低了資料讀 寫的并行程度(隻能從單機讀寫)。

本文轉自 SoulMio 51CTO部落格,原文連結:http://blog.51cto.com/bovin/2043653,如需轉載請自行聯系原作者

繼續閱讀