1. 程式人生 > >RAID磁碟陣列——掃盲篇

RAID磁碟陣列——掃盲篇

在單機時代,採用單塊磁碟進行資料儲存和讀寫的方式,由於定址和讀寫的時間消耗,導致I/O效能非常低,且儲存容量還會受到限制。
另外,單塊磁碟極其容易出現物理故障,經常導致資料的丟失。因此大家就在想,有沒有一種辦法將多塊獨立的磁碟結合在一起組成一個技術方案,
來提高資料的可靠性和I/O效能呢。

在這種情況下,RAID技術就應運而生了。

一、RAID 是什麼?

RAID ( Redundant Array of Independent Disks )即獨立磁碟冗餘陣列,簡稱為「磁碟陣列」,其實就是用多個獨立的磁碟組成在一起形成一個大的磁碟系統,
從而實現比單塊磁碟更好的儲存效能和更高的可靠性。

二、RAID 有哪些?

RAID方案常見的可以分為:

  • RAID0
  • RAID1
  • RAID5
  • RAID6
  • RAID10

下面來分別介紹一下。

RAID0

RAID0 是一種非常簡單的的方式,它將多塊磁碟組合在一起形成一個大容量的儲存。當我們要寫資料的時候,會將資料分為N份,
以獨立的方式實現N塊磁碟的讀寫,那麼這N份資料會同時併發的寫到磁碟中,因此執行效能非常的高。

image1

RAID0 的讀寫效能理論上是單塊磁碟的N倍(僅限理論,因為實際中磁碟的定址時間也是效能佔用的大頭)

但RAID0的問題是,它並不提供資料校驗或冗餘備份,因此一旦某塊磁碟損壞了,資料就直接丟失,無法恢復了。因此RAID0就不可能用於高要求的業務中,
但可以用在對可靠性要求不高,對讀寫效能要求高的場景中。

那有沒有可以讓儲存可靠性變高的方案呢?
有的,下面的RAID1就是。

RAID1

image2

如圖,
RAID1 是磁碟陣列中單位成本最高的一種方式。因為它的原理是在往磁碟寫資料的時候,將同一份資料無差別的寫兩份到磁碟,
分別寫到工作磁碟和映象磁碟,那麼它的實際空間使用率只有50%了,兩塊磁碟當做一塊用,這是一種比較昂貴的方案。

RAID1其實與RAID0效果剛好相反。RAID1 這種寫雙份的做法,就給資料做了一個冗餘備份。這樣的話,任何一塊磁碟損壞了,
都可以再基於另外一塊磁碟去恢復資料,資料的可靠性非常強,但效能就沒那麼好了。

瞭解了RAID0和RAID1之後,我們發現這兩個方案都不完美啊。
這時候就該 效能又好、可靠性也高 的方案 RAID5 登場了。

RAID5

這是目前用的最多的一種方式。
因為 RAID5 是一種將 儲存效能、資料安全、儲存成本 兼顧的一種方案。

在瞭解RAID5之前,我們可以先簡單看一下RAID3,雖然RAID3用的很少,但弄清楚了RAID3就很容易明白RAID5的思路。

RAID3的方式是:將資料按照RAID0的形式,分成多份同時寫入多塊磁碟,但是還會另外再留出一塊磁碟用於寫「奇偶校驗碼」。例如總共有N塊磁碟,
那麼就會讓其中額度N-1塊用來併發的寫資料,第N塊磁碟用記錄校驗碼資料。一旦某一塊磁碟壞掉了,就可以利用其它的N-1塊磁碟去恢復資料。

但是由於第N塊磁碟是校驗碼磁碟,因此有任何資料的寫入都會要去更新這塊磁碟,導致這塊磁碟的讀寫是最頻繁的,也就非常的容易損壞。

RAID5的方式可以說是對RAID3進行了改進。

RAID5模式中,不再需要用單獨的磁碟寫校驗碼了。它把校驗碼資訊分佈到各個磁碟上。例如,總共有N塊磁碟,那麼會將要寫入的資料分成N份,
併發的寫入到N塊磁碟中,同時還將資料的校驗碼資訊也寫入到這N塊磁碟中(資料與對應的校驗碼資訊必須得分開儲存在不同的磁碟上)。
一旦某一塊磁碟損壞了,就可以用剩下的資料和對應的奇偶校驗碼資訊去恢復損壞的資料。

image3

RAID5校驗位演算法原理:P = D1 xor D2 xor D3 … xor Dn (D1,D2,D3 … Dn為資料塊,P為校驗,xor為異或運算)

RAID5的方式,最少需要三塊磁碟來組建磁碟陣列,允許最多同時壞一塊磁碟。如果有兩塊磁碟同時損壞了,那資料就無法恢復了。

RAID6

為了進一步提高儲存的高可用,聰明的人們又提出了RAID6方案,可以在有兩塊磁碟同時損壞的情況下,也能保障資料可恢復。

為什麼RAID6這麼牛呢,因為RAID6在RAID5的基礎上再次改進,引入了雙重校驗的概念。

RAID6除了每塊磁碟上都有同級資料XOR校驗區以外,還有針對每個資料塊的XOR校驗區,這樣的話,相當於每個資料塊有兩個校驗保護措施,
因此資料的冗餘性更高了。

但是RAID6的這種設計也帶來了很高的複雜度,雖然資料冗餘性好,讀取的效率也比較高,但是寫資料的效能就很差。因此RAID6在實際環境中應用的比較少。

RAID10

RAID10其實就是RAID1與RAID0的一個合體。

我們看圖就明白了:

image4

RAID10兼備了RAID1和RAID0的有優點。首先基於RAID1模式將磁碟分為2份,當要寫入資料的時候,將所有的資料在兩份磁碟上同時寫入,
相當於寫了雙份資料,起到了資料保障的作用。且在每一份磁碟上又會基於RAID0技術講資料分為N份併發的讀寫,這樣也保障了資料的效率。

但也可以看出RAID10模式是有一半的磁碟空間用於儲存冗餘資料的,浪費的很嚴重,因此用的也不是很多。