Raid0、 Raid1、 Raid5、 Raid10的原理、特點、性能區別


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

二、RAID 有哪些?
RAID方案常見的可以分為:

RAID0
RAID1
RAID5
RAID6
RAID10
下面來分別介紹一下。

Raid 0:至少需要兩塊硬盤,磁盤越多,讀寫速度越快,沒有冗余。

Raid 1:只能用兩塊硬盤,兩塊硬盤的數據互為鏡像(寫慢,讀快),一塊磁盤冗余。

Raid 5:至少需要3塊硬盤,一塊磁盤冗余。它是最通行的配置方式。具有奇偶校驗的數據恢復功能的數據存貯方式。奇偶校驗數據塊分布於陣列里的各個硬盤中。

Raid 6:至少需要4塊硬盤,2塊磁盤冗余,硬盤的總數大於等於4即可。

Raid 10:至少需要4塊硬盤,冗余一半的硬盤數量,但是硬盤的總數必須是大於或等於4的偶數(相當於每兩塊硬盤做一個Raid0,然后把各個Raid0做成一個Raid1)。

Raid 50:至少需要6塊硬盤,磁盤的冗余相當於每三個硬盤做了一個Raid5,然后,每個Raid5又組合成了Raid0(Raid5中有一個硬盤冗余,即使壞了也不會破壞Raid0),所以,Raid50的磁盤的 冗余硬盤數量=磁盤總數÷3 。

Raid 60:至少需要8塊硬盤

具體如下

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

 

 

RAID0 的讀寫性能理論上是單塊磁盤的N倍(僅限理論,因為實際中磁盤的尋址時間也是性能占用的大頭)

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

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

RAID1

 


如圖,

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塊磁盤中(數據與對應的校驗碼信息必須得分開存儲在不同的磁盤上)。一旦某一塊磁盤損壞了,就可以用剩下的數據和對應的奇偶校驗碼信息去恢復損壞的數據。

 

 

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 的幾個特征:

 

以下是更多類型對比以及原理的簡介!

 

 

 

 

 

 

 

 

熱備盤

 

 

磁盤陣列術語匯編
Array:陣列

磁盤陣列模式是把幾個磁盤的存儲空間整合起來,形成一個大的單一連續的存儲空間。NetRAID控制器利用它的SCSI通道可以把多個磁盤組合成一個磁 盤陣列。簡單的說,陣列就是由多個磁盤組成,並行工作的磁盤系統。需要注意的是作為熱備用的磁盤是不能添加到陣列中的。

Array Spanning:陣列跨越

陣列跨越是把2個,3個或4個磁盤陣列中的存儲空間進行再次整合,形成一個具有單一連續存儲空間的邏輯驅動器的過程。NetRAID控制器可以跨越連續 的幾個陣列,但每個陣列必需由相同數量的磁盤組成,並且這幾個陣列必需具有相同的RAID級別。就是說,跨越陣列是對已經形成了的幾個陣列進行再一次的組 合,RAID 1,RAID 3和RAID 5跨越陣列后分別形成了RAID 10,RAID 30和RAID 50。

Cache Policy:高速緩存策略

NetRAID控制器具有兩種高速緩存策略,分別為Cached I/O(緩存I/O)和Direct I/O(直接I/O)。緩存I/O總是采用讀取 和寫入策略,讀取的時候常常是隨意地進行緩存。直接I/O在讀取新的數據時總是采用直接從磁盤讀出的方法,如果一個數據單元被反復地讀取,那么將選擇一種 適中的讀取策略,並且讀取的數據將被緩存起來。只有當讀取的數據重復地被訪問時,數據才會進入緩存,而在完全隨機讀取狀態下,是不會有數據進入緩存的。

Format:格式化

   在物理驅動器(硬盤)的所有數據區上寫零的操作過程,格式化是一種純物理操作,同時對硬盤介質做一致性檢測,並且標記出不可讀和壞的扇區。由於大部分硬盤在出廠時已經格式化過,所以只有在硬盤介質產生錯誤時才需要進行格式化。

Hot Spare:熱備用

當一個正在使用的磁盤發生故障后,一個空閑、加電並待機的磁盤將馬上代替此故障盤,此方法就是熱備用。熱備用磁盤上不存儲任何的用戶數據,最多可以有8 個磁盤作為熱備用磁盤。一個熱備用磁盤可以專屬於一個單一的冗余陣列或者它也可以是整個陣列熱備用磁盤池中的一部分。而在某個特定的陣列中,只能有一個熱 備用磁盤。

當磁盤發生故障時,控制器的固件能自動地用熱備用磁盤代替故障磁盤,並通過算法把原來儲存在故障磁盤上的數據重建到熱備用磁盤上。數據只能從帶有冗余的 邏輯驅動器上進行重建(除了RAID 0以外),並且熱備用磁盤必須有足夠多的容量。系統管理員可以更換發生故障的磁盤,並把更換后的磁盤指定為新的熱備 用磁盤。

Hot swap Disk Module:熱交換磁盤模式(熱插拔)

熱交換模式允許系統管理員在服務器不斷電和不中止網絡服務的情況下更換發生故障的磁盤驅動器。由於所有的供電和電纜連線都集成在服務器的底板上,所以熱 交換模式可以直接把磁盤從驅動器籠子的插槽中拔除,操作非常簡單。然后把替換的熱交換磁盤插入到插槽中即可。熱交換技術僅僅在 RAID 1,3,5,10,30和50的配置情況下才可以工作。

Initialization:初始化

   在邏輯驅動器的數據區上寫零的操作過程,並且生成相應的奇偶位,使邏輯驅動器處於就緒狀態。初始化將刪除以前的數據並產生奇偶校驗,所以邏輯驅動器在此過程中將一並進行一致性檢測。沒有經過初始化的陣列是不能使用的,因為還沒有生成奇偶區,陣列會產生一致性檢測錯誤。

IOP(I/O Processor):輸入輸出處理器

   輸入輸出處理器是NetRAID控制器的指令中心,實現包括命令處理,PCI和SCSI總線的數據傳輸,RAID的處理,磁盤驅動器重建,高速緩存的管理和錯誤恢復等功能。

Logical Drive:邏輯驅動器

陣列中的虛擬驅動器,它可以占用一個以上的物理磁盤。邏輯驅動器把陣列或跨越陣列中的磁盤分割成了連續的存儲空間,而這些存儲空間分布在陣列中的所有磁 盤上。NetRAID控制器能設置最多8個不同容量大小的邏輯驅動器,而每個陣列中至少要設置一個邏輯驅動器。輸入輸出操作只能在邏輯驅動器處於在線的狀 態下才運行。

Logical Volume:邏輯卷

   由邏輯磁盤形成的虛擬盤,也可稱為磁盤分區。

Mirroring:鏡像

   冗余的一種類型,一個磁盤上的數據在另一個磁盤上存在一個完全相同的副本即為鏡像。RAID 1和RAID 10使用的就是鏡像。
Parity:奇偶校驗位

   在數據存儲和傳輸中,字節中額外增加一個比特位,用來檢驗錯誤。它常常是從兩個或更多的原始數據中產生一個冗余數據,冗余數據可以從一個原始數據中進行重建。不過,奇偶校驗數據並不是對原始數據的完全復制。

   在RAID中,這種方法可以應用到陣列中的所有磁盤驅動器上。奇偶校驗位還可以組成專用的奇偶校驗方式,在專用奇偶校驗中,奇偶校驗數據可分布在系統中所有的磁盤上。如果一個磁盤發生故障,可以通過其它磁盤上的數據和奇偶校驗數據重建出這個故障磁盤上的數據。

Power Fail Safeguard:掉電保護

   當此項設置為可用時,在重構過程中(非重建),所有的數據將一直保存在磁盤上,直到重構完成后才刪除。這樣如果在重構過程中發生掉電,將不會發生數據丟失的危險情況。

Ready State:就緒狀態

   就緒狀態是一個可用的硬盤,它即不在線也不是熱備用盤,並可以添加到任一個陣列中或者指定為熱備用盤的這種硬盤狀態。
Rebuild:重建

   在RAID 1,3,5,10,30或50陣列中把一個故障盤上的所有數據再生到替換磁盤上的過程。磁盤重建過程中邏輯驅動器通常不會中斷對其數據的訪問請求。

SCSI Disk Status:SCSI磁盤狀態

SCSI磁盤(物理驅動器)可以有以下五種狀態,分別為Ready(就緒),未配置的加電可操作磁盤;Online(在線),配置過的加電可操作磁 盤;Hot Spare(熱備用),當一個磁盤出現故障時,准備使用的加電待用磁盤;Failed(故障),磁盤發生錯誤導致失效或用戶利用 NetRAID控制器使用程序使驅動器脫機的狀態;Rebuilding(重建),磁盤正處於從一個或幾個關鍵性邏輯驅動器上恢復數據的過程中。

Stripe Size:條帶容量

在每個磁盤上連續寫入數據的總量,也稱作“條帶深度”。你可以指定每個邏輯驅動器的條帶容量從2KB,4KB,8KB一直到128KB。為了獲得更高的 性能,要選擇條帶的容量等於或小於操作系統的簇的大小。大容量的條帶會產生更高的讀取性能,尤其在讀取連續數據的時候。而讀取隨機數據的時候,最好設定條 帶的容量小一點。如果指定128KB的條帶將需要8MB內存。

Striping:條帶化

條帶化是把連續的數據分割成相同大小的數據塊,把每段數據分別寫入到陣列中不同磁盤上的方法。此技術非常有用,它比單個磁盤所能提供的讀寫速度要快的 多,當數據從第一個磁盤上傳輸完后,第二個磁盤就能確定下一段數據。數據條帶化正在一些現代數據庫和某些RAID硬件設備中得到廣泛應用。

Write policy:寫入策略

  當處理器向磁盤上寫入數據的時候,數據先被寫入高速緩存中,並認為處理器有可能馬上再次讀取它。NetRAID有兩種如下的寫入策略:

Write Back(回寫),在回寫狀態下,數據只有在要被從高速緩存中清除時才寫到磁盤上。隨着主存讀取的數據增加,回寫需要開始從高速緩存中向此 盤上寫數據,並把更新的數據寫入高速緩存中。由於一個數據可能會被寫入高速緩存中許多次,而沒有進行磁盤存取,所以回寫的效率非常高。

Write Through(完全寫入),在完全寫入狀態下,數據在輸入到高速緩存時,它同時也被寫到磁盤上。因為數據已經復制到磁盤上,所以在高速緩存中可以直接更改要替換的數據,因此完全寫入要比回寫簡單的多。


————————————————
版權聲明:本文為CSDN博主「huang714」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/huang714/article/details/119888498


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM