什麼是RAID?

RAID是一種最初為網絡服務器市場開發的解決方案,作為以較低成本創建大型存儲的手段。 實質上,它需要多個成本較低的硬盤驅動器,並通過控制器將它們組合在一起以提供一個更大容量的驅動器。 這就是RAID所代表的意思:冗餘陣列的廉價驅動器或磁盤。 為了實現這一點,需要專門的軟件和控制器來管理各種驅動器之間的數據。

最終, 標準計算機系統處理能力使這些功能可以過濾進入個人電腦市場

現在RAID存儲可能基於軟件或硬件 ,可用於三個不同的目的。 這些包括容量,安全性和性能。 容量是一個簡單的容量,通常涉及幾乎所有類型的RAID設置。 例如,兩個硬盤驅動器可以作為單個驅動器鏈接到操作系統,從而有效地製作兩倍容量的虛擬驅動器。 性能是在個人計算機上使用RAID設置的另一個關鍵原因。 在兩個驅動器用作單個驅動器的同一個示例中,控制器可以將數據塊分成兩部分,然後將這些部分分別放在單獨的驅動器上。 這有效地提高了在存儲系統上寫入或讀取數據的性能。 最後,RAID可用於數據安全。

這是通過使用驅動器上的一些空間實質上克隆寫入到兩個驅動器的數據來完成的。 再次使用兩個驅動器,我們可以使數據寫入兩個驅動器。 因此,如果一個驅動器發生故障,另一個仍然有數據。

根據要為計算機系統組合的存儲陣列的目標,您將使用RAID的各種級別之一來實現這三個目標。

對於那些在計算機中使用硬盤驅動器的人來說 ,性能可能比容量更重要。 另一方面,那些使用固態驅動器的人可能會想要一種方式來使用較小的驅動器並將它們連接在一起以創建一個更大的驅動器。 那麼讓我們來看看可以在個人電腦上使用的各種RAID級別。

RAID 0

這是RAID的最低級別,實際上不提供任何形式的冗餘,這就是為什麼它被稱為0級。本質上, RAID 0需要兩個或更多驅動器,並將它們組合在一起以形成更大容量的驅動器。 這是通過稱為條帶的處理器實現的。 數據塊被分解成數據塊,然後按順序寫入驅動器。 這提高了性能,因為控制器可以將數據同時寫入驅動器,從而有效地將驅動器的速度相乘。 以下是三種磁盤如何工作的示例:

駕駛1 駕駛2 駕駛3
方塊1 1 2 3
第2座 4 6
第3座 7 8 9


為了讓RAID 0有效地提高系統的性能,您需要嘗試使用匹配的驅動器。 每個驅動器應具有相同的確切存儲容量和性能特徵。

如果他們不這樣做,那麼容量將被限製到最小驅動器的數倍,並且驅動器的性能最低,因為在移動到下一組之前必須等待所有條帶被寫入。 可以使用不匹配的驅動器,但在這種情況下, JBOD設置可能更有效。

JBOD僅代表一堆驅動器,實際上只是一組驅動器,可以彼此獨立訪問,但作為單個存儲驅動器顯示給操作系統。 這通常是通過在驅動器之間傳輸數據來實現的。 通常這被稱為SPAN或BIG。

實際上,操作將它們全部視為單個磁盤,但塊將在第一個磁盤上寫入,直到完成,然後進入第二個,然後是第三個,這對於將額外容量添加到現有計算機系統中是有用的,並且具有各種尺寸的驅動器,但不會增加驅動器陣列的性能。

RAID 0和JBOD設置最大的問題是數據安全性。 由於您有多個驅動器,因為您有更多的故障點,所以數據損壞的可能性會增加。 如果RAID 0陣列中的任何驅動器發生故障,則所有數據都將無法訪問。 在JBOD中,驅動器故障將導致該驅動器上發生的任何數據丟失。 因此,對那些希望使用這種存儲方法的用戶來說,最好有其他方法來備份他們的數據。

RAID 1

這是RAID的第一個真實級別,因為它為存儲在陣列上的數據提供完整級別的冗餘。 這是通過一個稱為鏡像的進程完成的。 實際上,寫入系統的所有數據都將復製到1級陣列中的每個驅動器。 這種形式的RAID通常只需一對驅動器即可完成,因為添加更多的驅動器不會增加額外的容量,只需要更多的冗餘。 為了更好地舉一個例子,下面是一個圖表,顯示瞭如何寫入兩個驅動器:

駕駛1 駕駛2
方塊1 1 1
第2座 2 2
第3座 3 3


要從RAID 1設置中獲得最有效的使用,系統將再次使用具有相同容量和性能評級的匹配驅動器。

如果使用不匹配的驅動器,則陣列容量將等於陣列中最小容量的驅動器。 例如,如果在RAID 1陣列中使用一個半TB和一個TB的驅動器,則該陣列在系統上的容量僅為單個TB。

此級別的RAID對於數據安全非常有效,因為兩個驅動器實際上是相同的。 如果兩個驅動器中的一個發生故障,則另一個具有另一個驅動器的完整數據。 這種設置的問題通常是確定哪個驅動器出現故障,因為當兩個驅動器中的一個發生故障並且無法正確恢復時,通常存儲器將無法訪問,直到插入新驅動器代替故障驅動器並恢復進程運行。 如前所述,從這方面來看也沒有任何性能上的提升。 實際上,RAID控制器的開銷會造成輕微的性能損失。

RAID 1 + 0或10

這是RAID級別0和級別1的複雜組合 。 實際上,控制器至少需要四個驅動器才能在此模式下運行,因為它要做的是製作兩對驅動器。 第一組驅動器是鏡像陣列,克隆了兩者之間的數據。 第二組驅動器也鏡像,但設置為第一組。 這提供了數據冗餘和性能增益。 以下是使用此類設置將數據寫入四個驅動器的示例:

駕駛1 駕駛2 駕駛3 駕駛4
方塊1 1 1 2 2
第2座 3 3 4 4
第3座 6 6


說實話,這不是RAID在計算機系統上運行的理想模式。 雖然它確實提供了一些性能提升,但它確實不是那麼好,因為系統上有大量的開銷。 此外,這是一個巨大的浪費空間,因為驅動器陣列的容量只有所有驅動器的一半。 如果使用的是不匹配的驅動器,則性能將限制在最慢的驅動器上,容量只是最小驅動器的兩倍。

RAID 5

這是可以在消費者計算機系統中找到的最高級別的RAID,並且是增加容量和冗餘的更有效的方法。 它通過帶有奇偶校驗的數據條帶化過程來實現這一點。 至少需要三個驅動器才能完成此操作,因為數據在多個驅動器上分割為條帶,但是一個塊的整個條帶被留出用於奇偶校驗。 為了更好地解釋這個問題,我們先看看如何在三個驅動器上寫入數據:

駕駛1 駕駛2 駕駛3
方塊1 1 2 p
第2座 3 p 4
第3座 p 6


本質上,驅動器控制器需要在數組中的所有驅動器上寫入大量數據。 第一位數據放在第一個驅動器上,第二位放在第二個驅動器上。 第三個驅動器獲取奇偶校驗位,這實際上是第一個和第二個二進制數據的比較結果。 在二進制數學中,你只有0和1.一個布爾數學過程完成比較比特。 如果兩者合計為偶數(0 + 0或1 + 1),則奇偶校驗位將為零。 如果兩者合計為奇數(1 + 0或0 + 1),那麼奇偶校驗位將為1。 原因是如果其中一個驅動器出現故障,控制器可以確定缺少的數據是什麼。 例如,如果一個驅動器發生故障,只剩下驅動器2和3,驅動器2的數據塊為1,驅動器3的奇偶校驗塊為1,則驅動器1上缺少的數據塊必須為零。

這提供了有效的數據冗餘,允許在發生驅動器故障時恢復所有數據。 現在對於大多數消費者設置來說,失敗仍然會導致系統不在,因為它不處於功能狀態。 為了使系統正常工作,有必要用新驅動器替換發生故障的驅動器。 然後,必須在控制器級完成數據重構過程,然後執行反布爾函數以在缺失的驅動器上重新創建數據。 這可能需要一些時間,特別是對於容量較大的驅動器,但至少可以恢復。

現在,RAID 5陣列的容量取決於陣列中的驅動器數量及其容量。 陣列再次受到陣列中最小容量驅動器的限制,因此最好使用匹配的驅動器。 有效存儲空間等於驅動器數量減去最低容量的一倍。 所以在數學術語中,它是(n-1)* Capacitymin 。 因此,如果RAID 5陣列中有三個2GB硬盤,則總容量將為4GB。 另一個使用4個2GB驅動器的RAID 5陣列將擁有6GB的容量。

現在RAID 5的性能比其他一些RAID的性能要復雜一些,因為在數據寫入驅動器時必須執行布爾過程來創建奇偶校驗位。 這意味著寫入性能將低於驅動器數量相同的RAID 0陣列。 另一方面,讀取性能不會像寫入那樣嚴重,因為布爾進程沒有完成,因為它從驅動器讀取直接數據。

所有RAID設置的大問題

我們已經討論過可以在個人電腦上使用的每種RAID級別的各種優缺點,但還有另一個問題,很多人在創建RAID驅動器設置時都沒有意識到。 在可以使用RAID設置之前,首先必須由硬件控制器軟件或操作系統的軟件構建。 這基本上初始化了正確跟踪數據在驅動器上的寫入和讀取方式所需的特殊格式。

這聽起來可能不是問題,但它是如果你甚至需要改變你想要你的RAID陣列配置。 例如,假設您的數據不多,並且想要為RAID 0或RAID 5陣列添加額外的驅動器。 在大多數情況下,如果沒有首先重新配置RAID陣列,將會無法移除存儲在這些驅動器中的任何數據。 這意味著您必須完全備份數據,添加新驅動器,重新配置驅動器陣列,格式化驅動器陣列,然後將原始數據恢復到驅動器。 這可能是一個非常痛苦的過程。 因此,確保您第一次按照自己的方式設置陣列。