1. 程式人生 > >RAID各種級別詳細介紹 RAID各種級別詳細介紹

RAID各種級別詳細介紹 RAID各種級別詳細介紹

RAID各種級別詳細介紹

 

獨立硬碟冗餘陣列RAIDRedundant Array of Independent Disks),舊稱廉價磁碟冗餘陣列RAIDRedundant Array of Inexpensive Disks),簡稱硬碟陣列。其基本思想就是把多個相對便宜的硬碟組合起來,成為一個硬碟陣列組,使效能達到甚至超過一個價格昂貴、容量巨大的硬碟。根據選擇的版本不同,RAID比單顆硬碟有以下一個或多個方面的好處:增強資料整合度,增強容錯功能,增加處理量或容量。另外,磁碟陣列對於計算機來說,看起來就像一個單獨的硬碟或邏輯儲存單元。分為RAID-0,RAID-1,RAID-1E,RAID-5,RAID-6,RAID-7,RAID-10,RAID-50,RAID-60。我們這裡只介紹最常用的幾種。

簡單來說,RAID把多個硬碟組合成為一個邏輯扇區,因此,作業系統只會把它當作一個硬碟。RAID常被用在伺服器計算機上,並且常使用完全相同的硬碟作為組合。由於硬碟價格的不斷下降與RAID功能更加有效地與主機板整合,它也成為了玩家的一個選擇,特別是需要大容量儲存空間的工作,如:視訊與音訊製作。

最初的RAID分成了不同的等級,每種等級都有其理論上的優缺點,不同的等級在兩個目標間取得平衡,分別是增加資料可靠性以及增加儲存器(群)讀寫效能。這些年來,出現了對於RAID觀念不同的應用。

 

RAID 0

將多個磁碟合併成一個大的磁碟,不具有冗餘,並行I/O,速度最快。RAID 0亦稱為帶區集。它是將多個磁碟並列起來,成為一個大磁碟。在存放資料時,其將資料按磁碟的個數來進行分段,然後同時將這些資料寫進這些盤中,所以在所有的級別中,RAID 0的速度是最快的。但是RAID 0沒有冗餘功能,如果一個磁碟(物理)損壞,則所有的資料都會丟失,危險程度與JBOD相當。

理論上越多的磁碟效能就等於“單一磁碟效能”ד磁碟數”,但實際上受限於匯流排I/O瓶頸及其它因素的影響,RAID效能會隨邊際遞減,也就是說,假設一個磁碟的效能是50MB每秒,兩個磁碟的RAID 0效能約96MB每秒,三個磁碟的RAID 0也許是130MB每秒而不是150MB每秒,所以兩個磁碟的RAID 0最能明顯感受到效能的提升。

\begin{align}Size & = 2 \times \min \left(S_1, S_2\right)\end{align}

但如果是以軟體方式來實現RAID,則磁碟的空間則不見得受限於此(例如Linux Software RAID),通過軟體實現可以經由不同的組合而善用所有的磁碟空間。

\begin{align}\text{Size} & = \text{sum of all disk}\end{align}

 RAID 1

 

兩組以上的N個磁碟相互作映象,在一些多執行緒作業系統中能有很好的讀取速度,理論上讀取速度等於硬碟數量的倍數,另外寫入速度有微小的降低。只要一個磁碟正常即可維持運作,可靠性最高。RAID 1就是映象,其原理為在主硬碟上存放資料的同時也在映象硬碟上寫一樣的資料。當主硬碟(物理)損壞時,映象硬碟則代替主硬碟的工作。因為有映象硬碟做資料備份,所以RAID 1的資料安全性在所有的RAID級別上來說是最好的。但無論用多少磁碟做RAID 1,僅算一個磁碟的容量,是所有RAID中磁碟利用率最低的一個級別。

如果用兩個不同大小的磁碟建RAID 1,可用空間為較小的那個磁碟,較大的磁碟多出來的空間也可以分割槽成一個區來使用,不會造成浪費。

\begin{align}Size & = \min \left(S_1, S_2, S_3 \dots \right)\end{align}
RAID 5

RAID Level 5是一種儲存效能、資料安全和儲存成本兼顧的儲存解決方案。它使用的是Disk Striping(硬碟分割槽)技術。RAID 5至少需要三顆硬碟,RAID 5不是對儲存的資料進行備份,而是把資料和相對應的奇偶校驗資訊儲存到組成RAID5的各個磁碟上,並且奇偶校驗資訊和相對應的資料分別儲存於不同的磁碟上。當RAID5的一個磁碟資料發生損壞後,可以利用剩下的資料和相應的奇偶校驗資訊去恢復被損壞的資料。RAID 5可以理解為是RAID 0和RAID 1的折衷方案。RAID 5可以為系統提供資料安全保障,但保障程度要比映象低而磁碟空間利用率要比映象高。RAID 5具有和RAID 0相近似的資料讀取速度,只是因為多了一個奇偶校驗資訊,寫入資料的速度相對單獨寫入一塊硬碟的速度略慢,若使用“回寫快取記憶體”可以讓效能改善不少。同時由於多個數據對應一個奇偶校驗資訊,RAID 5的磁碟空間利用率要比RAID 1高,儲存成本相對較便宜。

\begin{align}Size & = (N - 1) \times \min \left(S_1, S_2, \dots, S_N\right)\end{align}
RAID 10 / RAID 01

RAID 10是先鏡射再分割槽資料,再將所有硬碟分為兩組,視為是RAID 0的最低組合,然後將這兩組各自視為RAID 1運作。

RAID 01則是跟RAID 10的程式相反,是先分割槽再將資料鏡射到兩組硬碟。它將所有的硬碟分為兩組,變成RAID 1的最低組合,而將兩組硬碟各自視為RAID 0運作。

當RAID 10有一個硬碟受損,其餘硬碟會繼續運作。RAID 01只要有一個硬碟受損,同組RAID 0的所有硬碟都會停止運作,只剩下其他組的硬碟運作,可靠性較低。如果以六個硬碟建RAID 01,鏡射再用三個建RAID 0,那麼壞一個硬碟便會有三個硬碟離線。因此,RAID 10遠較RAID 01常用,零售主機板絕大部份支援RAID 0/1/5/10,但不支援RAID 01。

最後說說為什麼RAID10比RAID 01好且靠譜:

RAID0+1是先做兩個RAID0,然後再做RAID1,因此RAID0+1允許壞多個盤,但只能在壞在同一個RAID0中,不允許兩個RAID0都有壞盤。
RAID1+0是先做RAID1,然後再做RAID0,因此RAID1+0允許壞多個盤,只要不是一對磁碟壞就可以啦。
因此說RAID1+0比RAID0+1安全得多,因為在同一對磁碟中,兩塊磁碟都壞掉的概率很低。
RAID 0和RAID 1分別用於增強儲存效能(RAID 0 條帶)和資料安全性(RAID 1 映象),而RAID 0+1和RAID 10兼顧了RAID 0和RAID 1的優點,它在提供RAID 1一樣的資料安全保證的同時,也提供了與RAID 0近似的儲存效能。雖然RAID 0+1和RAID 10基本原理相近,都是RAID0和RAID1的結合,不過還是有些區別。

在MySQL資料庫中,通常我們選用RAID 10。

獨立硬碟冗餘陣列RAIDRedundant Array of Independent Disks),舊稱廉價磁碟冗餘陣列RAIDRedundant Array of Inexpensive Disks),簡稱硬碟陣列。其基本思想就是把多個相對便宜的硬碟組合起來,成為一個硬碟陣列組,使效能達到甚至超過一個價格昂貴、容量巨大的硬碟。根據選擇的版本不同,RAID比單顆硬碟有以下一個或多個方面的好處:增強資料整合度,增強容錯功能,增加處理量或容量。另外,磁碟陣列對於計算機來說,看起來就像一個單獨的硬碟或邏輯儲存單元。分為RAID-0,RAID-1,RAID-1E,RAID-5,RAID-6,RAID-7,RAID-10,RAID-50,RAID-60。我們這裡只介紹最常用的幾種。

簡單來說,RAID把多個硬碟組合成為一個邏輯扇區,因此,作業系統只會把它當作一個硬碟。RAID常被用在伺服器計算機上,並且常使用完全相同的硬碟作為組合。由於硬碟價格的不斷下降與RAID功能更加有效地與主機板整合,它也成為了玩家的一個選擇,特別是需要大容量儲存空間的工作,如:視訊與音訊製作。

最初的RAID分成了不同的等級,每種等級都有其理論上的優缺點,不同的等級在兩個目標間取得平衡,分別是增加資料可靠性以及增加儲存器(群)讀寫效能。這些年來,出現了對於RAID觀念不同的應用。

 

RAID 0

將多個磁碟合併成一個大的磁碟,不具有冗餘,並行I/O,速度最快。RAID 0亦稱為帶區集。它是將多個磁碟並列起來,成為一個大磁碟。在存放資料時,其將資料按磁碟的個數來進行分段,然後同時將這些資料寫進這些盤中,所以在所有的級別中,RAID 0的速度是最快的。但是RAID 0沒有冗餘功能,如果一個磁碟(物理)損壞,則所有的資料都會丟失,危險程度與JBOD相當。

理論上越多的磁碟效能就等於“單一磁碟效能”ד磁碟數”,但實際上受限於匯流排I/O瓶頸及其它因素的影響,RAID效能會隨邊際遞減,也就是說,假設一個磁碟的效能是50MB每秒,兩個磁碟的RAID 0效能約96MB每秒,三個磁碟的RAID 0也許是130MB每秒而不是150MB每秒,所以兩個磁碟的RAID 0最能明顯感受到效能的提升。

\begin{align}Size & = 2 \times \min \left(S_1, S_2\right)\end{align}

但如果是以軟體方式來實現RAID,則磁碟的空間則不見得受限於此(例如Linux Software RAID),通過軟體實現可以經由不同的組合而善用所有的磁碟空間。

\begin{align}\text{Size} & = \text{sum of all disk}\end{align}

 RAID 1

 

兩組以上的N個磁碟相互作映象,在一些多執行緒作業系統中能有很好的讀取速度,理論上讀取速度等於硬碟數量的倍數,另外寫入速度有微小的降低。只要一個磁碟正常即可維持運作,可靠性最高。RAID 1就是映象,其原理為在主硬碟上存放資料的同時也在映象硬碟上寫一樣的資料。當主硬碟(物理)損壞時,映象硬碟則代替主硬碟的工作。因為有映象硬碟做資料備份,所以RAID 1的資料安全性在所有的RAID級別上來說是最好的。但無論用多少磁碟做RAID 1,僅算一個磁碟的容量,是所有RAID中磁碟利用率最低的一個級別。

如果用兩個不同大小的磁碟建RAID 1,可用空間為較小的那個磁碟,較大的磁碟多出來的空間也可以分割槽成一個區來使用,不會造成浪費。

\begin{align}Size & = \min \left(S_1, S_2, S_3 \dots \right)\end{align}
RAID 5

RAID Level 5是一種儲存效能、資料安全和儲存成本兼顧的儲存解決方案。它使用的是Disk Striping(硬碟分割槽)技術。RAID 5至少需要三顆硬碟,RAID 5不是對儲存的資料進行備份,而是把資料和相對應的奇偶校驗資訊儲存到組成RAID5的各個磁碟上,並且奇偶校驗資訊和相對應的資料分別儲存於不同的磁碟上。當RAID5的一個磁碟資料發生損壞後,可以利用剩下的資料和相應的奇偶校驗資訊去恢復被損壞的資料。RAID 5可以理解為是RAID 0和RAID 1的折衷方案。RAID 5可以為系統提供資料安全保障,但保障程度要比映象低而磁碟空間利用率要比映象高。RAID 5具有和RAID 0相近似的資料讀取速度,只是因為多了一個奇偶校驗資訊,寫入資料的速度相對單獨寫入一塊硬碟的速度略慢,若使用“回寫快取記憶體”可以讓效能改善不少。同時由於多個數據對應一個奇偶校驗資訊,RAID 5的磁碟空間利用率要比RAID 1高,儲存成本相對較便宜。

\begin{align}Size & = (N - 1) \times \min \left(S_1, S_2, \dots, S_N\right)\end{align}
RAID 10 / RAID 01

RAID 10是先鏡射再分割槽資料,再將所有硬碟分為兩組,視為是RAID 0的最低組合,然後將這兩組各自視為RAID 1運作。

RAID 01則是跟RAID 10的程式相反,是先分割槽再將資料鏡射到兩組硬碟。它將所有的硬碟分為兩組,變成RAID 1的最低組合,而將兩組硬碟各自視為RAID 0運作。

當RAID 10有一個硬碟受損,其餘硬碟會繼續運作。RAID 01只要有一個硬碟受損,同組RAID 0的所有硬碟都會停止運作,只剩下其他組的硬碟運作,可靠性較低。如果以六個硬碟建RAID 01,鏡射再用三個建RAID 0,那麼壞一個硬碟便會有三個硬碟離線。因此,RAID 10遠較RAID 01常用,零售主機板絕大部份支援RAID 0/1/5/10,但不支援RAID 01。

最後說說為什麼RAID10比RAID 01好且靠譜:

RAID0+1是先做兩個RAID0,然後再做RAID1,因此RAID0+1允許壞多個盤,但只能在壞在同一個RAID0中,不允許兩個RAID0都有壞盤。
RAID1+0是先做RAID1,然後再做RAID0,因此RAID1+0允許壞多個盤,只要不是一對磁碟壞就可以啦。
因此說RAID1+0比RAID0+1安全得多,因為在同一對磁碟中,兩塊磁碟都壞掉的概率很低。
RAID 0和RAID 1分別用於增強儲存效能(RAID 0 條帶)和資料安全性(RAID 1 映象),而RAID 0+1和RAID 10兼顧了RAID 0和RAID 1的優點,它在提供RAID 1一樣的資料安全保證的同時,也提供了與RAID 0近似的儲存效能。雖然RAID 0+1和RAID 10基本原理相近,都是RAID0和RAID1的結合,不過還是有些區別。

在MySQL資料庫中,通常我們選用RAID 10。