程序員需要知道的 RAID 基本原理

qw0325 7年前發布 | 93K 次閱讀 磁盤陣列 程序員 磁盤/光驅工具

RAID,全稱為redundant array of independent disks,是目前商用服務器常見的磁盤管理技術。作為軟件開發人員,需要了解各級RAID的特性,以便根據需求做出做合適的選擇。本文總結了常見的RAID級別的特性,包括如下內容:

  • RAID的基本作用
  • 各級RAID的基本原理

RAID的基本作用

RAID的一般有如下作用

  • 數據冗余
  • 性能提升

數據冗余是指把數據的校驗信息存放在冗余的磁盤中,在某些磁盤數據損壞時,能從其他未損壞的磁盤中,重新構建數據。

性能提升是指RAID能把多塊獨立的磁盤組成磁盤陣列,通過把數據切成分片的方式,使得讀/寫數據能走多塊磁盤,從而提升性能。

各級RAID的基本原理

根據RAID的冗余信息程度,切分數據的方式等不同,可以把RAID分成不同的級別,分別是

  • RAID0
  • RAID1
  • RAID2
  • RAID3
  • RAID4
  • RAID5
  • RAID6

接下來就討論這些RAID級別的基本原理。

RAID0的基本原理

RAID0設計的目標是為了提升讀寫性能,但并不帶數據冗余信息。

如上圖,RAID0會把數據切成塊,分別存儲在N個磁盤上。當讀數據時,如果要讀的數據塊比較大,分布在多次磁盤上,那么能同時從多塊盤讀數據;當寫數據時,如果要寫的數據塊比較大,分布式在多塊磁盤上,那么同時能從多塊盤寫數據。

因為數據分布在多塊盤上,當某塊磁盤損壞時,整個RAID系統就不可用了。因此,N塊盤的RAID0的特性如下:

  • 讀性能最好情況下是單塊盤的N倍
  • 寫性能最好情況下是單塊盤的N倍
  • 空間利用率為100%
  • 不具有冗余信息,任何一塊磁盤損壞,整個RAID不可用

RAID1的基本原理

RAID1的設計目標是為每份數據都提供冗余數據,其結構如下:

如上圖,RAID1中每個磁盤都有一個冗余的鏡像盤,兩個磁盤的數據是一模一樣的。RAID1讀數據時,如果數據分布在多塊磁盤上,那么可以利用所有數據盤的帶寬;寫數據時,要同時寫入數據盤和鏡像盤,因此,需要等待最慢的磁盤寫完成,寫操作才完成,因此,寫性能可能會略微下降。N塊盤的RAID1的特性如下:

  • 讀性能最好情況下是原來的N倍
  • 寫性能略微小于RAID0
  • 空間利用率50%
  • N塊盤,壞掉N/2塊,RAID還能正常使用

RAID2的基本原理

RAID2的設計目標是在RAID0級別的基礎上,加了海明糾錯碼。

如上圖,前面四個盤是數據盤,后面三個盤是糾錯碼。RAID2讀數據時,能同時使用多個數據盤的帶寬;RAID2寫數據時,除了寫數據盤,還需要寫校驗盤,寫性能會有下降。因此,N塊盤的RAID2的特性如下:

  • 讀性能不到原來的N倍,因為還有一部分是校驗盤
  • 寫性能會有下降,因為每次都要寫校驗盤,受限于校驗盤的數量
  • 空間利用率小于100%,因為海明糾錯碼需要的冗余盤一般比數據盤的數量少
  • 根據海明糾錯碼位數的不同,能容忍的壞盤數不同,具體信息可以參考 海明碼

RAID3的基本原理

RAID3是把數據按照字節分別存在不同的磁盤中,并且最后一個磁盤提供糾錯冗余,其結構如下:

如上圖,由于按照字節切分數據,讀數據時,一定會同時從多個盤讀數據,可以利用所有數據盤的帶寬;寫數據時,也會利用所有磁盤的帶寬,但所有的寫校驗數據都會在一個盤,因此,寫性能主要受限于校驗盤。N快盤的RAID3的特性如下:

  • 讀性能是N-1倍,其中一塊盤是校驗盤
  • 寫性能受限于校驗盤的寫性能
  • 空間利用率為(N-1)/N
  • 壞掉一塊盤,RAID還能正常工作

RAID4

RAID4是把數據按照分塊分別存在不同的磁盤中,并且最后一個磁盤提供糾錯冗余,其結構如下:

如上圖,讀數據時,當數據分布在多塊盤時,能夠利用多塊數據盤的帶寬;寫數據時,如果數據分布在多快盤時,能利用所有磁盤帶寬,但寫校驗數據只能在一塊盤上,因此,寫性能主要受限于校驗盤。N塊盤的RAID4的特性如下:

  • 讀性能是N-1倍,其中一塊盤是校驗盤
  • 寫性能受限于校驗盤的寫性能
  • 空間利用率為(N-1)/N
  • 壞掉一塊盤,RAID還能正常工作

RAID5

RAID5是把數據塊按照分塊分別存在不同的磁盤中,并且冗余信息也會分塊分布在多塊磁盤中,其結構如下:

如上圖,讀數據時,當數據分布在多塊盤時,能夠利用多塊數據盤的帶寬;寫數據時,如果數據分布在多塊盤時,能利用所有數據盤帶寬,同時寫校驗數據也分散在多塊盤上,但因為要額外寫入校驗數據,因此,寫數據的性能略微有所下降。N塊盤的RAID5的特性如下:

  • 讀性能是N倍
  • 寫性能略微弱于RAID0
  • 空間利用率為(N-1)/N
  • 壞掉一塊盤,RAID還能正常工作

RAID6

RAID6是把數據塊按照分塊分別存在不同的磁盤中,并且冗余信息為兩份奇偶校驗碼,分布在多塊磁盤中,其結構如下:

如上圖,讀數據時,當數據分布在多塊盤時,能夠利用多塊數據盤的帶寬;寫數據時,如果數據分布在多塊盤時,能利用多塊數據盤帶寬,同時寫校驗數據也分散在多塊盤中,但因為要額外寫入兩份校驗數據,因此,寫數據的性能要略微下降。N塊盤的RAID6的特性如下:

  • 讀性能是N倍
  • 寫性能略微弱于RAID0
  • 空間利用率為(N-2)/N
  • 壞掉兩塊盤,RAID還能正常工作

各級RAID的對比

RAID級別 讀性能 寫性能 空間利用率 最大能容忍的壞盤數
RAID0 單塊盤的N倍 單塊盤的N倍 100% 0
RAID1 單塊盤的N倍 略微弱于單塊盤的N倍 50% N/2
RAID2 不到單塊盤的N倍 單盤的寫入速度 * 校驗盤的數量 不到100% 取決于海明糾錯碼位數
RAID3 單塊盤的N-1倍 校驗盤的寫入速度 (N-1)/N 1
RAID4 單塊盤的N-1倍 校驗盤的寫入速度 (N-1)/N 1
RAID5 單塊盤的N倍 略微弱于單塊盤的N倍 (N-1)/N 1
RAID6 單塊盤的N倍 略微弱于單塊盤的N倍,差于RAID5 (N-2)/N 2

一般地,RAID0容忍的壞盤數為0,風險太大,一般不常用;RAID1的信息冗余量很多,適合于對信息安全要求很高并且預算充足的場景;RAID2的控制器比較復雜,一般不常用;RAID3和RAID4由于其寫入性能差,也不常用;RAID5由于讀寫性能、能容忍的壞盤數都比較均衡,因此,一般工業界經常使用的是RAID5;RAID6對于壞盤數容忍度較高,適合于對信息安全比較高的場景。

 

 

來自:http://oserror.com/backend/raid-principle/

 

 本文由用戶 qw0325 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!