「銀河小科普」我們平常說的磁盤陣列(RAID)到底是什麼東西?

前言

上一次我們講了關於SSD的一些小知識,這一次我們從機械硬盤切入,講一講絕大部分的硬件玩家們都聽過的一個詞:RAID。RAID技術在SSD沒有普及的年代曾經是提高硬盤性能的大殺器,即便是老舊的機械硬盤也能通過這種方法獲得成倍的性能提升,完全不遜色於目前市面上的大部分固態硬盤產品。

那麼這種超級牛B的技術到底是怎麼工作的呢?聽我慢慢道來。

RAID的全稱是Redundant Array of Independent Disks(獨立硬盤冗餘陣列)。隨著SSD的不斷普及,在機械硬盤年代大放異彩的RAID也慢慢被普通用戶所遺忘,但這並不代表RAID技術已經落後過時。對於很多注重數據安全的組織機構、個人用戶、多盤NAS來說,RAID技術依然扮演著相當重要的角色,並且在可預見的將來不會被輕鬆取代。

「銀河小科普」我們平常說的磁盤陣列(RAID)到底是什麼東西?

RAID通俗來說就是把多個硬盤(通常是機械硬盤)組合成一個硬盤陣列組,以此來獲得更高的速度和容量。組成硬盤陣列組的所有硬盤將會作為一個統一的整體進行工作,在操作系統裡會被識別為一個硬盤。

當下的標準RAID形式共有七種,分別是RAID 0、RAID 1……直到RAID 6,除此之外還有多種形式的混合RAID,包括RAID 10、RAID 30、RAID 50等等。本文我們只討論最常見的5種形式:RAID 0、RAID 1、RAID 5、RAID 6、RAID 10。

「銀河小科普」我們平常說的磁盤陣列(RAID)到底是什麼東西?

類別

RAID 0

「銀河小科普」我們平常說的磁盤陣列(RAID)到底是什麼東西?

RAID 0是為了彌補機械硬盤的讀寫速度瓶頸誕生的,是最早出現的磁盤陣列形式,通常被稱為"條帶存儲陣列"。組建RAID 0只需要2塊或以上數量的硬盤就可以做到。下面我們就以2塊硬盤(DISK 0和DISK 1)組建的RAID 0為例來對RAID 0進行講解。

上面的示意圖比較直觀地解釋了RAID 0的工作模式:我們要將一個大文件A寫入硬盤裡,RAID 0模式就會把這個文件A分解為A1-A8這8個區塊。在硬件層面上,寫入到硬盤的文件A是同時向2塊硬盤傳輸分塊的數據的,因此傳輸速度是2塊硬盤的速度之和。而且在RAID 0模式之下硬盤的存儲空間並沒有被壓縮,依然是他們的容量相加;在系統軟件層面上,文件A的存儲過程展示跟單硬盤的操作沒有什麼兩樣。文件的讀取也是一樣的道理,系統會同時向2塊硬盤發出讀取命令,所以文件的讀取速度也還是2塊硬盤相加。

在理解了RAID 0的工作模式後,相信大部分同學已經能夠得出結論:隨著組建RAID 0的硬盤數量的增加,硬盤的讀寫速度和總容量也是在不斷相加的,在帶寬和硬盤接口數量沒有被限制的前提下,RAID 0的性能會不斷增加。

說完優點我們再來說缺點。RAID 0的缺點和它的優點一樣突出,由於連續的數據是分散分佈在多個硬盤裡所以一旦某個硬盤壞掉了,整個陣列裡的數據就都損壞了, 沒有拯救的餘地。基於這些特性,RAID 0很適合那些對性能有比較高的要求同時對數據安全沒有太高要求的人使用,比如普通的優點玩家。

RAID 1

「銀河小科普」我們平常說的磁盤陣列(RAID)到底是什麼東西?

RAID 1通常被稱為鏡像存儲陣列,也需要至少2塊硬盤才能組建。

RAID 1的工作原理是把容量最小的、速度最慢的那塊硬盤裡的數據完全照搬到別的硬盤裡,讓所有硬盤裡的數據保持高度的一致。跟RAID 0模式那種犧牲數據安全性來獲得速度的做法正好相反,RAID 1的安全性是最高的,只要還有一塊硬盤沒壞,數據就不會丟失。因為工作原理的特殊性,RAID 1這種磁盤陣列在操作系統層面上的容量等於陣列中最小的那塊硬盤的容量,寫入速度等於最慢的那塊硬盤的速度,讀取速度等於所有硬盤讀取速度之和。

因為這些特性的存在,RAID 1就會出現在那些不計成本需要保存重要數據的場合裡,例如一些郵件系統的數據保護。

RAID 5

「銀河小科普」我們平常說的磁盤陣列(RAID)到底是什麼東西?

由於RAID 0和RAID 1都有非常突出的優點和缺點,因此RADI 5(硬盤分區技術)應運而生。RAID 5是一種讀寫速度、數據安全、存儲成本都比較折中的方案,因此也成為了目前最常見到的RAID形式。組建RAID 5至少需要3塊硬盤。

我們以上圖中4塊硬盤組建的RAID 5陣列為例,儲存數據的時候,RAID 5會採用與RAID 0相同的條帶儲存模式,將文件A分割為A1、A2、A3三個區塊,與此同時還會自動產生一個校驗數據塊Ap,校驗數據塊的作用是記錄存儲數據的校驗碼,以便對損壞的數據進行恢復。校驗數據本身一定是跟存儲數據在不同的硬盤中的,參見上圖中的Bp、Cp、Dp與數據B、C、D的相對位置。

上圖中,當陣列中的某一塊硬盤(假設是DISK 0)損壞時,系統就會自動根據A2和A3的數據結合校驗碼Ap去修復損壞的數據A1,所以數據的安全性能夠得到一定的保障。因為Dp是校驗數據,所以DISK 0的損壞不會影響文件D的存儲和讀取。由於存儲數據和校驗數據必須在不同的硬盤中,所以RAID 5的數據讀取速度和可用容量都是n-1個硬盤之和。

善於思考的同學應該已經發現了RADI 5的侷限性了,RAID 5只能夠承受一塊硬盤的損壞,如果損壞的硬盤數量超過了1塊,丟失的數據就完全沒有了恢復的可能,整個磁盤陣列中的數據就會跟RAID 0一樣全部丟失。

RAID 6

「銀河小科普」我們平常說的磁盤陣列(RAID)到底是什麼東西?

RAID 6的工作模式和RAID 5非常類似,但是引入了雙重校驗的概念,需要至少4塊硬盤才能組建。RAID 6在RAID 5的基礎上又增加了一塊硬盤來存儲另一種完全不同的獨立的的校驗數據Aq、Bq、Cq等等。這樣一來就可以保證在磁盤陣列在2塊硬盤產生損壞的前提下保證數據安全,同時,RAID 6不僅支持存儲數據的恢復,還支持校驗數據的恢復。

RAID 6 擁有快速的讀取性能、更高的容錯能力。但是由於在進行數據寫入的時候硬盤還要進行兩種校驗碼的計算和存儲,所以它的成本要比RAID 5高很多(磁盤利用率是n-2),並且設計和實施非常複雜,這也導致它的寫入性能也非常一般。

因此,RAID6 很少得到實際應用,主要用於對數據安全等級要求非常高的場合。

RAID 10

「銀河小科普」我們平常說的磁盤陣列(RAID)到底是什麼東西?

RAID 10是RAID 1+0的簡稱,它是RAID 0和RAID 1的混合體,上圖是它的一種典型工作模型。RAID 10是在RAID 1的基礎上,再針對底層陣列組建RAID 0陣列,相當於是兩層RAID。組建RAID 10需要至少4塊硬盤,但是磁盤的空間利用率和讀寫速度都只有所有硬盤和值的50%。

RAID 10可以在任意一塊硬盤損壞的前提下進行無損更換,更換後再把同組硬盤中的數據鏡像過去就能正常工作,因此數據安全性又得到了提高。

在此基礎上我們還可以根據下圖中的RAID 01來對這種磁盤陣列組合進行分析:

「銀河小科普」我們平常說的磁盤陣列(RAID)到底是什麼東西?

數據先在RAID 0陣列中做條帶狀分佈,然後在另一個磁盤陣列中進行鏡像組建RAID 0。

後記:

對於手裡有多塊機械硬盤的同學,首推RAID 0,在機械盤上用出SSD的快感總歸是讓人非常舒適的體驗。對於需要存儲家庭照片視頻等的需求來講,組建RAID 1是非常必要的,網盤的隱私問題和複製粘貼的繁瑣性都讓人頭大,RAID 1就可以很好地解決這類問題。

關於如何組建磁盤陣列,我們會在以後的文章中進行詳細解答。今天的作業是:請自行腦補RAID 50和RAID 60的工作模型。

下課。

相關推薦

推薦中...