RAID磁盤陣列介紹

隨着手頭的錢愈來愈多,不少人開始蠢蠢欲動想要構建我的或者家庭級別的磁盤陣列用來擴展PC存儲,或者說想要在家裏安裝一個私人的本地NAS,或者有不可名狀的文件須要落地家庭IDC環境,又或者單純是個土豪,須要在大得不得了的地下室作一個隨時能夠點播的家庭影院。這個時候,海量的存儲需求就來了,可是每每我的或者家庭對於如何設置合理的、高可用的存儲架構沒有概念,致使每每用的是裸盤陣列。結果就是一旦掛了就全掛了,哪怕運氣好不掛,隨着時間的流逝,最終總有一點會出現磁盤問題,那個時候集體更換遷移又是一個讓人想要撞牆的事情。算法

因此筆者在這篇短文裏,會用最短的篇幅給讀者介紹,來自於企業環境而且已經應用許久的RAID卡磁盤陣列技術!緩存

1、概念和支持

首先要明確一點,那就是多數的PC主板是不支持RAID陣列的,可是不少高端的主板會有原生支持RAID技術,具體的狀況須要查詢主板提供商。而不少服務器級別主板,相似於X399這種,每每是支持的,甚至有些不須要額外購置raid卡也能進行raid陣列管理。安全

可是從現實的角度來講,不管磁盤支持不支持raid卡設置,咱們都應該買一塊PCI接口的真正的RAID卡來進行磁盤陣列管理。由於主板即使支持RAID,基本上也都是軟件層面的軟raid,對於磁盤的壽命和性能有不小的折扣損失。何況隨着多顯卡併火漸漸退出主流市場,再也不被黃老闆等支持,目前主流主板的PCI接口必定是有多的,同時raid卡便宜且自帶斷電保護電池,可謂是性價比極高的硬件了。服務器

2、RAID種類介紹和優劣

歷史上RAID陣列的種類很是多,總計以下:架構

  • 單種類RAID陣列:RAID0, RAID1, RAID2, RAID3, RAID4, RAID5, RAID6
  • 混合型RAID陣列:RAID7, RAID10/01, RAID50, RAID53, RAID60

可是因爲成本和性能的優劣緣由,目前單種類RAID陣列主要就剩下RAID0,RAID1,RAID5,以及比較有意思的RAID6。筆者也會着重講解一下這幾種陣列的原理和優劣。分佈式

一、RAID0

RAID0 示意圖

  • RAID0就是【掛裸盤】,非嚴格意義來講。RAID0就是一串磁盤陣列,沒有全量備份,沒有增量備份,也沒有主從備份,什麼都沒有。可是確實是一種規範的RAID方式。
  • 性能來講都等經過單塊磁盤的讀寫,壞了就壞了,數據沒救。或者必須經過物理數據恢復。軟件層面每每無力迴天。
  • 主要應用於服務器單固態磁盤,且只有高讀寫需求,沒有數據安全需求。以及在大數據環境下作分佈式磁盤。
  • 最小磁盤需求量:N \geq 1
二、RAID1

RAID1 示意圖

  • RAID1容易理解的來講,就是【無線備備備備份制】。不管你有多少塊磁盤組成了陣列,每一個磁盤都在備份同一個磁盤的內容、同步同一塊盤的內容。
  • 最少磁盤需求量: N \geq 2
  • 讀寫速度:磁盤數量爲n,單塊磁盤讀寫速度爲s,讀寫速度S = ns
  • 陣列容量計算:假如在一格RAID1陣列中,各個磁盤的容量分別爲F1,F2,F3...Fn,那麼這個陣列的存儲大小是S=min(F1,F2,F3...Fn)。低到你懷疑人生。
三、RAID5

RAID5 示意圖

  • RAID5是目前【最爲推薦】的一種磁盤陣列選擇。主要緣由是磁盤容量利用率高+磁盤損毀後可用性較高
  • 具體原理:RAID 5不是對存儲的數據進行備份,而是把數據和相對應的[奇偶校驗]信息存儲到組成RAID5的各個磁盤上,而且奇偶校驗信息和相對應的數據分別存儲於不一樣的磁盤上。當RAID5的一個磁盤數據發生損壞後,能夠利用剩下的數據和相應的奇偶校驗信息去恢復被損壞的數據。
  • 最小磁盤需求量:N \geq 3
  • 最大可用磁盤損毀數:N = 1
  • 有效磁盤容量:假如各個磁盤的容量分別爲F1,F2,F3...Fn,那麼這個陣列的存儲大小是S=(n-1)\times min(F1,F2,F3...Fn)
  • 讀寫速度:在沒有回寫緩存的狀況下,寫入會比裸盤稍微慢一點。因此推薦上RAID卡。
四、神奇RAID6
  • 通常來講RAID6也是一種使用得比較多的磁盤陣列模式。適合對於數據安全和可用性有更高要求的用戶
  • RAID6相比RAID5還增長了一塊獨立的奇偶校驗磁盤。
  • 最小磁盤需求量:N \geq 4
  • 最大可用磁盤損毀數:N = 2
  • 有效磁盤容量:假如各個磁盤的容量分別爲F1,F2,F3...Fn,那麼這個陣列的存儲大小是S=(n-2)\times min(F1,F2,F3...Fn)
  • 讀寫速度:RAID6的寫入性能受到磁盤陣列的架構影響,會有很是大的存在區間,設置合理的話會有很是優異的速度。
  • 實現原理解釋:

在RAID5裏面用來校驗的磁盤機制,主要使用了異或計算,從而可以容忍任意一塊磁盤的損毀狀況,而且在換盤後經過rebuild來對新盤進行重構。可是在RAID6中,由於須要容忍兩塊磁盤損毀,第二塊奇偶校驗磁盤的算法就有所不一樣,比較複雜了。工具

若是出現一塊磁盤損壞的狀況,就能夠和RAID5同樣處理,Rebuild完事。 那麼關鍵來了,若是兩塊磁盤掛了的話,就須要用到全新的技術了。 咱們首先引入一個m=2^k的伽羅瓦域(有限域),對於一個k次不可約不等式 p(x) , GF(m)\cong F_2[x]/(p(x))。同時一塊數據能夠記錄成d_{k-1},d_{k-2},d_{k-3}...d_0,其中d_i是0或者1,對應伽羅瓦域裏面的元素d_{k-1}x^{k-1}+d_{k-1}x^{k-1}+...+d_1x+d_0,令D_0,...,D_n\in GF(m)對應的磁盤條帶裏面的數據,用這個方法編碼成域裏面的元素。若是g是域的某一個生成元,而且\oplus表示域的加法(能夠當作異或運算),並列表示域的乘法,那麼PQ能夠表示成: P=\bigoplus_i D_i = D_0\oplus D_1\oplus D_2 \oplus ... \oplus D_{n-1} Q=\bigoplus_i g^i D_i=g^0 D_0\oplus g^1 D_1\oplus g^2 D_2\oplus ...\oplus g^{n-1}D_{n-1} 因此,若是兩塊磁盤失效的時候,就須要經過P和Q來從新把數據算出來,這個過程使用了域論,相對比較複雜。咱們經過例子來講明,假如在一個n塊磁盤組成的磁盤陣列D_0,D_1,D_2...D_{n-1}裏面,若是D_iD_j(其中i \neq j),經過域算法咱們能夠求出兩個域A和B,其中A=D_i\oplus D_jB=g^iD_i\oplus g^jD_j。 展開兩式可得: A=\bigoplus_{\xi:\xi\neq i \ and \ \xi\neq j} D_\xi =P\oplus D_0\oplus D_1\oplus...D_{i-1}\oplus D_{i+1}\oplus...D_{j-1}\oplus D_{j+1}\oplus...D_{n-2}\oplus D_{n-1} B=\bigoplus_{\xi:\xi\neq i \ and \ \xi\neq j} g^\xi D_\xi =Q\oplus g^0 D_0\oplus g^1 D_1\oplus...g^{i-1} D_{i-1}\oplus g^{i+1}D_{i+1}\oplus...g^{j-1} D_{j-1}\oplus g^{j+1} D_{j+1}\oplus...g^{n-1} D_{n-2}\oplus g^{n-1}D_{n-1} 等式B的兩端同時乘上g^{n-i},加到上一個等式可得:(g^{n-i+j}\oplus 1)D_j=g^{n-i} B\oplus A,從而能夠求出D_j,而後再求出D_i。 這個過程裏面對Q的計算很是耗費CPU,因此必定要上硬件RAID,由於RAID帶有專用處理器專門幹這個。oop

五、融合磁盤陣列RAID10/01

RAID10 示意圖
RAID01 示意圖

  • RAID10是先鏡射再分割數據,再將全部硬盤分爲兩組。RAID01正好相反。
  • RAID10單盤故障的時候依然能夠正常使用,其餘盤照舊。RAID01單盤故障的時候,同組全部盤都不工做了,是垃圾RAID策略。
  • 因此正常的廠商不支持RAID01。
六、RAID50/60
  • 顧名思義就是RAID5/RAID6和RAID0的技術組合,RAID50最高故障盤承受數量N=2(任何一邊不到2),RAID60最高故障承受數量N=4(任何一邊不到3)。
  • 讀寫性能很是高。

3、故障解決方案

好了,如今咱們都知道各類磁盤RAID陣列的優劣和構建方式了。對於家庭和我的來講我以爲仍是RAID5最性價比高,可是若是你的磁盤陣列裏磁盤數量大於8了,其實就能夠考慮RAID6了。其餘的RAID構成的話考慮到性價比,其實對我的用戶不太合適。可是安全性和可用性需求極高的企業,除了hadoop用的分佈式裸盤之外,其餘最好仍是RAID10或者RAID1,甚至RAID60。性能

下面來講說遇到故障:大數據

  • 首先是插拔一下,注意斷電保護,不要粗暴對待機械磁盤。
  • 插拔解決不了的話直接打電話售後,正常的磁盤至少有三年以上維保,盡情換,想必在看完這篇之後你的家庭存儲陣列應該是不怕一塊盤的故障的。
  • 我沒說怎麼配置?好的,接下來又有東西能夠寫了。若是是服務器有不少廠商提供的工具,若是是我的的話在你安裝好陣列卡之後應該也有對應的工具可使用,有些是進系統的可視化軟件,有些是BOIS設置,具體看狀況。

最後,公式部分來自維基,很通俗易懂,思路也很清晰,有空去看一下域論也挺好(不會去看的

相關文章
相關標籤/搜索