操作系統:廉價冗余磁盤陣列 RAID


廉價冗余磁盤陣列

廉價冗余磁盤陣列(Redundant Array of Inexpensive Disks, RAID) 技術使用多個磁盤一起構建更快、更大、更可靠的磁盤系統。從外部看 RAID 看起來像一個磁盤,一組可以讀取或寫入的塊。在內部 RAID 是一個復雜的龐然大物,由多個磁盤、內存(包括易失性和非易失性)以及一個或多個處理器來管理系統。硬件RAID非常像一個計算機系統,專門用於管理一組磁盤。

RAID 的優點

與單個磁盤相比,RAID 具有許多優點:

  1. 性能高:並行使用多個磁盤可以大大加快 I/O 時間;
  2. 容量大:大型數據集需要大型磁盤;
  3. 提高可靠性:通過某種形式的冗余,RAID 可以容許損失一個磁盤並保持運行;
  4. 可部署性:操作系統和客戶端程序無需修改就能使用,而不必擔心軟件兼容性問題。

RAID 的組成

當文件系統向 RAID 發出邏輯 I/O 請求時,RAID 內部必須計算要訪問的磁盤(或多磁盤)以完成請求。然后發出一個或多個物理 I/O 來執行此操作,這些物理 I/O 的確切性取決於 RAID 級別。RAID系統通常構建為單獨的硬件盒,並通過標准連接(例如,SCSI 或 SATA)接入主機,在內部 RAID 主要由以下組件構成:

組成部分 說明
微控制器 運行固件以指導 RAID 的操作
易失性存儲器 在讀取和寫入時緩沖數據塊
非易失性存儲器 安全地緩沖寫入
專用的邏輯電路 執行奇偶校計算

RAID 是一個非專業的計算機系統,它有一個處理器、內存和磁盤,運行專門用於操作 RAID 的軟件。

評估 RAID

構建 RAID 有多種不同的方法,每種方法都有不同的特點,通常從 3 個方面評估每種 RAID 設計。

評估方面 說明
容量(capacity) 在給定一組 N 個磁盤的情況下,RAID 的客戶端可用的容量有多少
可靠性(reliability) 給定設計允許有多少磁盤故障
性能(performance) 性能在很大程度上取決於磁盤陣列提供的工作負載

RAID 0

RAID 0 原理

RAID 0 級別實際上不是 RAID 級別,因為沒有冗余。但是 RAID 0 級(即條帶化,striping)可作為性能和容量的優秀上限,它的思想是以輪轉的方式將磁盤陣列的塊分布在磁盤上。這種方法的目的是在對數組的連續塊進行請求時,從陣列中獲取最大的並行性,例如順序讀取 0123 這四個塊。

大塊大小

此時也可以在每個磁盤上連續放置 2 個塊,然后再移動到下一個磁盤,此時的大塊大小就是原來的 2 倍。大塊大小主要影響陣列的性能,大小較小的大塊意味着許多文件將跨多個磁盤進行條帶化,從而增加了對單個文件的讀取和寫入的並行性。但是跨多個磁盤訪問塊的定位時間會增加,因為整個請求的定位時間由所有驅動器上請求的最大定位時間決定。

另一方面,較大的大塊大小減少了這種文件內的並行性,因此依靠多個並發請求來實現高吞吐量,但是較大的大塊大小減少了定位時間。例如,如果一個文件放在一個塊中並放置在單個磁盤上,則訪問它時發生的定位時間將只是單個磁盤的定位時間。因此確定“最佳”的大塊大小是很難做到的,因為它需要大量關於提供給磁盤系統的工作負載的知識。

RAID 0 分析

性能 分析
容量 給定 N 個磁盤,條件化提供 N 個磁盤的有用容量
可靠性 任何磁盤故障都會導致數據丟失
性能 很好,通常並行使用所有磁盤來為用戶 I/O 請求提供服務

對於順序訪問,磁盤以最高效的模式運行,花費很少時間尋道並等待旋轉,大部分時間都在傳輸數據。對於隨機訪問,則大部分時間花在尋道和等待旋轉上,花在傳輸數據上的時間相對較少。

RAID 1

RAID 1 原理

RAID 1 級別為即鏡像,對於鏡像系統中每個塊將存在一個或多個副本,每個副本應該放在一個單獨的磁盤上,通過這樣做可以容許磁盤故障。假設 RAID 保留兩個物理副本,則相鄰的磁盤具有相同的內容,數據在這些鏡像對之間條帶化。

從鏡像陣列讀取塊時,RAID 1 可以讀取任一副本,如果對 RAID 1 發出對邏輯塊 5 的讀取,則可以自由地從磁盤 2 或磁盤 3 讀取它。但是在寫入塊時,RAID 1 必須更新兩個副本的數據,以保持可靠性,這些寫入可以並行進行。

RAID 1 分析

性能 分析
容量 對於 N 個磁盤,鏡像的有用容量為 N/2
可靠性 可以容許任何一個磁盤的故障
性能 平均而言比寫入單個磁盤略高

從單個讀取請求的延遲角度來看,與單個磁盤上的延遲相同。寫入有點不同,RAID 1 需要完成兩次物理寫入。這兩個寫入並行發生,因此時間大致等於單次寫入的時間。然而因為邏輯寫入必須等待兩個物理寫入完成,所以它遭遇到兩個請求中最差的尋道和旋轉延遲。

RAID 10 和 RAID 01

可以使用多種不同的方法在磁盤上放置塊副本,上面的安排有時稱為 RAID 10(或 RAID 1+0),因為它使用鏡像對(RAID-1),然后在其上使用條帶化(RAID-0)。另一種常見安排是 RAID 01(或 RAID 0+1),它包含兩個大型條帶化(RAID-0)陣列,然后是鏡像(RAID-1)。

RAID 4

RAID 4 原理

RAID 4 使用奇偶校驗(parity)向磁盤陣列添加冗余,它試圖使用較少的容量,從而克服由鏡像系統付出的巨大空間損失,代價是性能有所降低。對於每一條數據都添加了一個奇偶校驗(parity)塊,用於存儲該條塊的冗余信息。例如對於奇偶校驗塊 P0,具有從塊 0、1、2、3 計算出的冗余信息。

奇偶校驗主要基於異或(XOR)運算,對於給定的一組比特,如果比特中有偶數個 1,則所有這些比特的 XOR 返回 0,如果有奇數個 1 則返回 1。效果是任何一行中的 1 的數量必須是偶數(而不是奇數),因此可以算出下面這個例子的 P = 0。

同理利用奇偶校驗信息從故障中恢復的方法是,讀取該行中的所有其他 n-1 個值,通過奇偶校驗的特性得到最后一個需要恢復的值。例如下面 X 是需要恢復的值,假設其他磁盤都沒有出錯,則根據上文的性質可以得出 X = 0。

RAID 4 分析

性能 分析
容量 使用 1 個磁盤作為所保護的每組磁盤的奇偶校驗信息,有用容量是 N-1
可靠性 容許1個磁盤故障,如果丟失多個磁盤則無法重建丟失的數據
性能 單次讀取同於單個磁盤請求的延遲,單次寫入的延遲需要兩次讀取,然后兩次寫入

RAID 4 的並行性還有待提高,例如上面的 RAID 4,如果需要寫入塊 1 和 10,則這個過程需要串行處理。首先寫入塊 1 需要訪問磁盤 2 和磁盤 5,接着寫入塊 10 需要訪問磁盤 3 和磁盤 5,由於都需要訪問磁盤 5 所以不能並行操作。

RAID 5

RAID 5 是旋轉奇偶校驗,相比 RAID 4 具有更好的並行性。RAID 5 的工作原理與 RAID4 幾乎完全相同,只是它將奇偶校驗塊跨驅動器旋轉。但是有時候 RAID5 的性能會比 RAID 4 要好,例如寫入塊 1 和寫入塊 10,寫入塊 1 需要對磁盤 1 和磁盤 4 的請求,寫入塊 10 需要對磁盤 0 和磁盤 2 請求。此時由於沒有交叉,它們可以並行進行。

RAID 5 的大部分分析與 RAID-4 相同,兩級的有效容量和容錯能力是相同的。在少數情況下 RAID 5 更好,所以它幾乎完全取代了市場上的 RAID 4。

其他 RAID 級別

RAID 2

RAID 2 是 RAID 0 的改良版,以漢明碼(Hamming Code)的方式將數據進行編碼后分割為獨立的位元,並將數據分別寫入硬盤中。因為在數據中加入了錯誤修正碼,所以數據整體的容量會比原始數據大一些。

RAID 3

RAID 3 是具有並行傳輸功能的磁盤陣列,它只利用一台奇偶校驗盤來完成數據的校驗功能。與 RAID 4 不同在於只能查錯不能糾錯,它訪問數據時一次處理一個帶區,這樣可以提高讀取和寫入速度。RAID 4 對數據的訪問是按數據塊進行的,也就是按磁盤進行的。

RAID 6 和 RAID 7

RAID 6 的陣列中,設置了一個專用的、可快速訪問的異步校驗盤,該盤具有獨立的數據訪問通路,具有比 RAID 3 級及 RAID 5 級更好的性能,但其性能改進得很有限,且價格昂貴。RAID 7 是對 RAID6 級的改進,在該陣列中的所有磁盤都具有較高的傳輸速率和優異的性能,是目前最高檔次的磁盤陣列,但其價格也較高。

RAID 的選擇

如果要求性能而不關心可靠性,那么 RAID 0 條帶顯然是最好的。但是如果你想要隨機 I/O 的性能和可靠性,RAID1 鏡像是最好的,代價是容量下降。如果容量和可靠性是你的主要目標,選擇 RAID 5,代價是小寫入的性能。最后如果在按順序執行 I/O 操作並希望最大化容量,也可以選擇 RAID-5。

參考資料

《操作系統導論》[美]Remzi H.Arpaci-Dusseau,Andrea C.Arpaci-Dusseau 著,王海鵬 譯,人民郵電出版社
《計算機操作系統(第四版)》,湯小丹 梁紅兵 哲鳳屏 湯子瀛 編著,西安電子科技大學出版社


免責聲明!

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



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