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份數據會同時并發的寫到磁盤中,因此執行性能非常的高。
RAID0 的讀寫性能理論上是單塊磁盤的N倍(僅限理論,因為實際中磁盤的尋址時間也是性能占用的大頭)
但RAID0的問題是,它并不提供數據校驗或冗余備份,因此一旦某塊磁盤損壞了,數據就直接丟失,無法恢復了。因此RAID0就不可能用于高要求的業務中,但可以用在對可靠性要求不高,對讀寫性能要求高的場景中。
那有沒有可以讓存儲可靠性變高的方案呢?
有的,下面的RAID1就是。
RAID1
RAID5
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的一個合體。
我們看圖就明白了:
RAID10兼備了RAID1和RAID0的有優點。首先基于RAID1模式將磁盤分為2份,當要寫入數據的時候,將所有的數據在兩份磁盤上同時寫入,相當于寫了雙份數據,起到了數據保障的作用。且在每一份磁盤上又會基于RAID0技術講數據分為N份并發的讀寫,這樣也保障了數據的效率。
但也可以看出RAID10模式是有一半的磁盤空間用于存儲冗余數據的,浪費的很嚴重,因此用的也不是很多。
整體對比一下 RAID0、RAID1、RAID5、RAID6、RAID10 的幾個特征: