一、RAID簡史
1.RAID由來
Berkeley:伯克利提出:A case for Redundent Arrays of Inexpensive Disks 為RAID(廉價冗余陣列)
如今:Redundant Arrays of Independent Disks 獨立冗余陣列
2.優點和表現方式
1)通過磁盤並行讀寫,提高IO能力:
2)通過磁盤冗余(容錯)機制來實現提高耐用性:
3.級別:多塊磁盤組織在一起的工作方式有所不同
RAID0、RAID1、RAID2、RAID3、RAID4、RAID5、RAID6、RAID7、RAID10、RAID01、RAID50、JBOD
4.實現方式
(1)軟件模擬實現:Software RAID,結合內核中的md(multi devices)工具
生產環境中一般沒有人使用
(2)硬件實現:硬件級別的RAID配置多塊硬盤在bios中實現
外接式磁盤陣列:通過擴展卡提供適配能力
內接式RAID:主板集成RAID控制器
1)可以通過SAS接口的適配器接口擴展出串行端口附加存儲,以logical unit number邏輯單元號表現
窄帶:8個接口,7target
寬帶:16個接口,15個target
2)RAID控制器需要系統驅動使用,在BIOS中可以設置,通過適配器連接到RAID磁盤陣列
3)RAID控制器本身有CPU,還可以有內存來加速,另外設置電源方式斷電時候的應急寫入
二、RAID級別和工作模式
常用級別:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD
1.RAID-0:0, 條帶卷,strip;
性能:讀、寫性能提升;無容錯能力
空間使用:N*min(S1,S2,...),
最少需要磁盤數量:至少兩塊
條帶:會以磁盤容量最小的磁盤為主分塊制作條帶
2.RAID-1: 1, 鏡像卷,mirror;
性能:讀性能提升、寫性能略有下降;有冗余能力
空間使用:1*min(S1,S2,...),每塊存儲內容都一樣
空間利用率:1/2
最少需要硬盤數量:至少兩塊
3.RAID-4:單塊硬盤作為集中校驗盤
采用獨立存取方式,將條帶由RAID3的小數據塊改為更大的數據塊
校驗較為迅速,但寫入速度極差,控制器的設計更加復雜
通過異或運算將其中一塊硬盤,集中存放校驗碼
允許有一塊硬盤損壞,但因為集中校驗會導致性能瓶頸
4.RAID-5:循環校驗存儲機制
性能:讀、寫性能提升,有容錯能力:1塊磁盤
空間使用:(N-1)*min(S1,S2,...) 短板效應
空間利用率:(n-1)/n
最少磁盤數:至少三塊,可降級使用
5.RAID-6:循環校驗存儲機制,一塊硬盤專門做校驗盤,校驗碼存儲兩次
性能:讀、寫性能提升;有容錯能力:2塊磁盤
空間使用:(N-2)*min(S1,S2,...)
最少磁盤數:最少四塊
6.RAID-7:商業版
新的RAID標准,一個獨立的“存儲計算機”,自身帶有智能化實時操作系統和用於存儲管理的軟件工具,可以完全獨立與主機運行,不占用主機CPU資源
7.RAID-10:先做鏡像,再做條帶
性能:讀、寫提升,有冗余能力
空間利用率:1/2
最少磁盤數:至少需要4塊
8.RAID-01:先做條帶,再做鏡像
性能:讀、寫提升,有冗余能力
空間利用率:1/2
最少磁盤數:至少需要4塊
9.RAID-50:
性能:讀、寫提升;有冗余能力
空間利用率:(n-2)/n
最少磁盤數:至少需要6塊
10.JBOD:Just a Bunch Of Disks 將多塊磁盤的空間合並一個大的連續空間使用
性能表現:無提升;無冗余能力
空間使用:磁盤大小之和sum(S1,S2,...)
空間利用率:100%
最少磁盤數:至少需要2塊
三、RAID內核實現觀測相關命令
CentOS 6上的軟件RAID的實現
1.md(multi devices)工具,mdadm:模式化的工具
命令的語法格式:mdadm [mode] <raiddevice> [options] <component-devices>
支持的RAID級別:LINEAR線性方式, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10;
模式:創建:-C;裝配: -A;監控: -F;管理:-f, -r, -a
<raiddevice>: /dev/md#
<component-devices>: 任意塊設備
(1)-C: 創建模式
-n #: 使用#個塊設備來創建此RAID;
-l #:指明要創建的RAID的級別;
-a {yes|no}:自動創建目標RAID設備的設備文件;
-c CHUNK_SIZE: 指明塊大小; 默認512k
-x #: 指明空閒盤的個數;
(2) 管理模式:
-f: 標記指定磁盤為損壞;
-a: 添加磁盤
-r: 移除磁盤
(3)-D:顯示raid的詳細信息; mdadm -D /dev/md#
(4)觀察md的狀態: cat /proc/mdstat
(5)停止md設備:mdadm -S /dev/md#
2.watch:動態觀測命令運行過程
格式:watch -n# 'COMMAND'
-n #: 刷新間隔,單位是秒;
如何在Linux上構建 RAID 10陣列 http://www.linuxidc.com/Linux/2014-12/110318.htm
Debian軟RAID安裝筆記 - 使用mdadm安裝RAID1 http://www.linuxidc.com/Linux/2013-06/86487.htm
常用RAID技術介紹以及示例演示(多圖) http://www.linuxidc.com/Linux/2013-03/81481.htm
Linux實現最常用的磁盤陣列-- RAID5 http://www.linuxidc.com/Linux/2013-01/77880.htm
RAID0+1和RAID5的性能測試結果 http://www.linuxidc.com/Linux/2012-07/65567.htm
Linux入門教程:磁盤陣列(RAID) http://www.linuxidc.com/Linux/2014-07/104444.htm