一、RAID簡述
磁碟陣列(Redundant Arrays of Independent Disks, RAID), 是把多個物理磁片組成一個陣列,當作一個邏輯磁片使用,它將資料以分段或條帶的方式儲存在不同的磁片中,
1、外接式磁碟陣列:常被使用在大型伺服器上, 專業的硬體磁碟陣列盤櫃, 價格昂貴, 主要廠商:IBM、HP、EMC等
2、內接式磁碟陣列:需要技術人員來使用操作, 同時需要配備硬體RAID卡或者陣列卡
3、軟體模擬式磁碟陣列:通過作業系統自身提供的磁片管理功能(軟體功能實現)將多個硬碟配置成邏輯盤, 價格相對較便宜
三、RAID級別1、RAID 0
最早出現的RAID模式, 屬於條帶模式, 至少需要兩塊磁片, 成本低, 可以提高整個磁片的性能和輸送量;但是沒有容錯機制, 磁片損壞易丟失資料
2、RAID 1
磁片鏡像模式, 資料在寫入一塊磁片的同時, 會在另一塊閒置的磁片上生成鏡像檔, 通過二次讀寫實現磁片鏡像, 磁碟控制卡的負載也相當大, 所以多磁碟控制卡使用可以緩解讀寫負載
3、RAID 1 + 0
高可靠性與高效磁片結構, 下層是兩個RAID 1, 兩個RAID 1之上是RAID 0, 至少四塊硬碟
4、RAID 0 + 1
高效率與高性能磁片結構, 下層是兩個RAID 0, 兩個RAID 1之上是RAID 1, 至少四塊硬碟
5、RAID 2
帶海明碼校驗, 這種編碼技術需要多個磁片存放檢查及恢復資訊, 使得RAID 2技術實施更複雜, 商業中用的比較少
6、RAID 3
帶同位碼的並行傳送, 只能查錯不能糾錯
7、RAID 4
它對資料的訪問是按資料塊進行的,也就是按磁片進行的,每次是一個盤。在圖上可以這麼看,RAID3是一次一橫條,而RAID4一次一豎條
8、RAID 5
分散式同位的獨立磁片結構,可靠性強,只損壞一塊硬碟時,系統會根據存儲的同位檢查位元重建資料,如果同時損壞兩塊硬碟時資料將完全損壞
9、RAID 6
帶有兩種分佈存儲的同位碼的獨立磁片結構,多一種校驗主要是用於要求資料絕對不能出錯的場合
10、RAID 7
所有的I/O傳送均是同步進行的,可以分別控制,這樣提高了系統的並行性,提高系統訪問資料的速度,帶有高速緩衝記憶體,由於採用並行結構和高速緩衝記憶體,因此資料訪問效率大大提高
四、常見RAID級別總結五、mdadm命令參數詳解1、主要模式
1>、Assemble:裝配模式,將原來屬於一個陣列的每個塊設備組裝為陣列
-A, --assemble: 開啟一個陣列
-u, --uuid:可以根據元件設備的uuid開啟RAID
-m, --super-minor:保存在每個元件設備中的超級塊中的minor號,可以根據這個開啟RAID
-N, -–name:根據RAID名開啟RAID。
-R, –-run:即使RAID中的磁片設備不完整(例如原來創建4塊盤的RAID5,現在只發現3塊成員盤),RAID也被開啟
-–no-degraded:和–scan選項一起使用,禁止RAID中的磁片設備不完整時啟動RAID
-a,-–auto:如-–create中的 –auto
-b,-–bitmap:指定bitmap點陣圖檔
-–backup-file:保存關鍵資訊的檔,例如:如果中途斷電可以重啟繼續
-U,–-update:更新每個磁片設備的超級塊資訊
2>、Build: 創建或組裝不需要中繼資料(沒有超級塊)的陣列,每個設備沒有中繼資料塊
3>、Create: 創建一個新的陣列,每個設備具有超級塊
-C,--create:創建一個新的陣列
-l,--level: RAID級別
-n,--raid-devices: 活動設備個數
-a {yes|no}: 是否自動為其創建設備檔
-c,--chunk: CHUNK大小, 默認為64K,重要的參數,決定了一次向陣列中每個磁片寫入資料的大小
-x,--spare-devices: 備用盤個數
4>、Grow:改變陣列中每個設備被使用的容量或陣列中的設備的數目,改變陣列屬性
-G,--grow: 改變陣列的大小或設備的數量
-n,--raid-devices=: 活動設備個數
-x,--spare-devices=:備用盤個數
-c,--chunk=: CHUNK大小, 默認為64K,重要的參數,決定了一次向陣列中每個磁片寫入資料的大小
-z,--size=:陣列中從每個磁片獲取的空間總數
-l,--level=: RAID級別
-p,--layout=:設定raid5 和raid10的同位規則;並且控制故障的故障模式
--parity: 類似於--layout
--assume-clean:目前僅用於 --build 選項
-R --run: 強制啟動RAID,使用這個選項,設備上有舊的中繼資料資訊的提示會被忽略
-N --name=: 設定陣列的名稱
–-rounding:在linear array中的rounding factor,等於條帶大小
5>、Monitor: 監控RAID的狀態,報指定的事件,可以實現全域熱備
-F,--follow, --monitor:選擇監控(Monitor)模式
-m,--mail: 事件報警時給誰發電子郵件
-p,--program, --alert:當檢測到一個事件時運行指定的程式
-y,--syslog: 事件記錄於syslog中
-d,–-delay:隔多少秒輪詢各個RAID,默認是60秒
-f,--daemonise:創建一個子進行作為後臺監控程序
-i,–-pid-file:與--daemonise一起使用,子進程PID記錄檔
-l,–-oneshot:只會檢測RAID一次
-t,--test: 生成test報警資訊,用來測試報警資訊是否能正確收到
6>、Manage: 管理存儲陣列中的設備,比如增加熱備磁片或者設置某個磁片失效、陣列中移除失效的磁片
-a,-–add:線上添加磁片設備,例如可以添加熱備盤
–-re-add:給RAID重新添加一個以前被移除的設備
-r,-–reomve:移除設備,只能移除failed(失效)磁片和spare(熱備)磁片設備
-f,–-fail:使RAID中某個磁片設備失效
7>、Incremental Assembly:添加設備到陣列中
8>、Misc: 報告或者修改陣列中相關設備的資訊,比如查詢陣列或者設備的狀態資訊、對陣列中的某個設備進行操作(例如抹去超級塊或停止陣列)
-Q,--query: 查詢一個RAID或者一個RAID元件設備的資訊
-D,--detail: 查詢一個RAID的詳細資訊
-E,--examine:查詢元件設備上的超級塊資訊
-R,-–run:啟動不完整的RAID(例如本來是有4塊盤的RAID5,現在3塊盤也可以啟動)
-S,-–stop:停止RAID
-o,-–readonly:使RAID只能唯讀
-w,-–readwrite:使RAID能讀寫
-–zero-superblock:超級塊資訊被寫0覆蓋
9>、Auto-detect: 只是要求在Linux內核啟動時自動檢測到陣列
10>.無任何模式參數
-v,-–verbose:顯示更詳細的資訊
-f,-–force:某些選項強制執行
-c,-–config:指定設定檔,默認是 /etc/mdadm.conf 或者是 /etc/mdadm/mdadm.conf
-s,–-scan:從設定檔或者/proc/mdstat中掃描資訊
-e,-–metadata:定義元件設備上超級塊的類型
-–homehost:創建一個RAID時,homehost名會記錄在超級塊中
-b, --brief:較少的細節,用於 --detail 和 --examine 選項
-q,--quit:安靜模式;加上該選項能使mdadm不顯示純消息性的資訊,除非那是一個重要的報告;
-c, --config=: 指定設定檔,缺省為 /etc/mdadm.conf
六、創建RAID5舉例5個分區
/dev/sdb1 50MB
/dev/sdc1 50MB
/dev/sdd1 50MB
/dev/sde1 50MB
/dev/sdf1 50MB
1、建各個分區,以/dev/sdb1分區為例,其他分區依次建立
2、創建RAID5,mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 --spare-devices=1 /dev/sde1
3、添加一個熱備盤,mdadm -a /dev/md0 /dev/sdf1
4、移除一個熱備盤,mdadm -r /dev/md0 /dev/sdf1
5、類比硬碟故障,mdadm -f /dev/md0 /dev/sdb1
6、移除故障的硬碟,現在已經沒有熱備盤了,再添加一個熱備盤,mdadm -r /dev/md0 /dev/sdb1;mdadm -a /dev/md0 /dev/sdf1
7、生成mdadm的設定檔,echo DEVICE /dev/sd[c-f]1 > /etc/mdadm.conf;mdadm -Ds >>/etc/mdadm.conf
8、格式化並掛載 /dev/md0 設備,mkdir /raid5;mkfs.ext4 /dev/md0;mount /dev/md0 /raid5
作者簡介:AnyTopOne 是一個開源軟體(Free and Open-Source Software) 愛好者,先後從事Linux系統管理、程式開發、大規模平臺架構設計、團隊管理等工作,從業經驗13年有餘,具有豐富的IT行業從業經驗,喜歡與其大家乾貨經驗分享與交流。
作者:AnyTopOne本文由 AnyTopOne 原創編輯7、RAID 4
它對資料的訪問是按資料塊進行的,也就是按磁片進行的,每次是一個盤。在圖上可以這麼看,RAID3是一次一橫條,而RAID4一次一豎條
8、RAID 5
分散式同位的獨立磁片結構,可靠性強,只損壞一塊硬碟時,系統會根據存儲的同位檢查位元重建資料,如果同時損壞兩塊硬碟時資料將完全損壞
9、RAID 6
帶有兩種分佈存儲的同位碼的獨立磁片結構,多一種校驗主要是用於要求資料絕對不能出錯的場合
10、RAID 7
所有的I/O傳送均是同步進行的,可以分別控制,這樣提高了系統的並行性,提高系統訪問資料的速度,帶有高速緩衝記憶體,由於採用並行結構和高速緩衝記憶體,因此資料訪問效率大大提高
四、常見RAID級別總結五、mdadm命令參數詳解1、主要模式
1>、Assemble:裝配模式,將原來屬於一個陣列的每個塊設備組裝為陣列
-A, --assemble: 開啟一個陣列
-u, --uuid:可以根據元件設備的uuid開啟RAID
-m, --super-minor:保存在每個元件設備中的超級塊中的minor號,可以根據這個開啟RAID
-N, -–name:根據RAID名開啟RAID。
-R, –-run:即使RAID中的磁片設備不完整(例如原來創建4塊盤的RAID5,現在只發現3塊成員盤),RAID也被開啟
-–no-degraded:和–scan選項一起使用,禁止RAID中的磁片設備不完整時啟動RAID
-a,-–auto:如-–create中的 –auto
-b,-–bitmap:指定bitmap點陣圖檔
-–backup-file:保存關鍵資訊的檔,例如:如果中途斷電可以重啟繼續
-U,–-update:更新每個磁片設備的超級塊資訊
2>、Build: 創建或組裝不需要中繼資料(沒有超級塊)的陣列,每個設備沒有中繼資料塊
3>、Create: 創建一個新的陣列,每個設備具有超級塊
-C,--create:創建一個新的陣列
-l,--level: RAID級別
-n,--raid-devices: 活動設備個數
-a {yes|no}: 是否自動為其創建設備檔
-c,--chunk: CHUNK大小, 默認為64K,重要的參數,決定了一次向陣列中每個磁片寫入資料的大小
-x,--spare-devices: 備用盤個數
4>、Grow:改變陣列中每個設備被使用的容量或陣列中的設備的數目,改變陣列屬性
-G,--grow: 改變陣列的大小或設備的數量
-n,--raid-devices=: 活動設備個數
-x,--spare-devices=:備用盤個數
-c,--chunk=: CHUNK大小, 默認為64K,重要的參數,決定了一次向陣列中每個磁片寫入資料的大小
-z,--size=:陣列中從每個磁片獲取的空間總數
-l,--level=: RAID級別
-p,--layout=:設定raid5 和raid10的同位規則;並且控制故障的故障模式
--parity: 類似於--layout
--assume-clean:目前僅用於 --build 選項
-R --run: 強制啟動RAID,使用這個選項,設備上有舊的中繼資料資訊的提示會被忽略
-N --name=: 設定陣列的名稱
–-rounding:在linear array中的rounding factor,等於條帶大小
5>、Monitor: 監控RAID的狀態,報指定的事件,可以實現全域熱備
-F,--follow, --monitor:選擇監控(Monitor)模式
-m,--mail: 事件報警時給誰發電子郵件
-p,--program, --alert:當檢測到一個事件時運行指定的程式
-y,--syslog: 事件記錄於syslog中
-d,–-delay:隔多少秒輪詢各個RAID,默認是60秒
-f,--daemonise:創建一個子進行作為後臺監控程序
-i,–-pid-file:與--daemonise一起使用,子進程PID記錄檔
-l,–-oneshot:只會檢測RAID一次
-t,--test: 生成test報警資訊,用來測試報警資訊是否能正確收到
6>、Manage: 管理存儲陣列中的設備,比如增加熱備磁片或者設置某個磁片失效、陣列中移除失效的磁片
-a,-–add:線上添加磁片設備,例如可以添加熱備盤
–-re-add:給RAID重新添加一個以前被移除的設備
-r,-–reomve:移除設備,只能移除failed(失效)磁片和spare(熱備)磁片設備
-f,–-fail:使RAID中某個磁片設備失效
7>、Incremental Assembly:添加設備到陣列中
8>、Misc: 報告或者修改陣列中相關設備的資訊,比如查詢陣列或者設備的狀態資訊、對陣列中的某個設備進行操作(例如抹去超級塊或停止陣列)
-Q,--query: 查詢一個RAID或者一個RAID元件設備的資訊
-D,--detail: 查詢一個RAID的詳細資訊
-E,--examine:查詢元件設備上的超級塊資訊
-R,-–run:啟動不完整的RAID(例如本來是有4塊盤的RAID5,現在3塊盤也可以啟動)
-S,-–stop:停止RAID
-o,-–readonly:使RAID只能唯讀
-w,-–readwrite:使RAID能讀寫
-–zero-superblock:超級塊資訊被寫0覆蓋
9>、Auto-detect: 只是要求在Linux內核啟動時自動檢測到陣列
10>.無任何模式參數
-v,-–verbose:顯示更詳細的資訊
-f,-–force:某些選項強制執行
-c,-–config:指定設定檔,默認是 /etc/mdadm.conf 或者是 /etc/mdadm/mdadm.conf
-s,–-scan:從設定檔或者/proc/mdstat中掃描資訊
-e,-–metadata:定義元件設備上超級塊的類型
-–homehost:創建一個RAID時,homehost名會記錄在超級塊中
-b, --brief:較少的細節,用於 --detail 和 --examine 選項
-q,--quit:安靜模式;加上該選項能使mdadm不顯示純消息性的資訊,除非那是一個重要的報告;
-c, --config=: 指定設定檔,缺省為 /etc/mdadm.conf
六、創建RAID5舉例5個分區
/dev/sdb1 50MB
/dev/sdc1 50MB
/dev/sdd1 50MB
/dev/sde1 50MB
/dev/sdf1 50MB
1、建各個分區,以/dev/sdb1分區為例,其他分區依次建立
2、創建RAID5,mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 --spare-devices=1 /dev/sde1
3、添加一個熱備盤,mdadm -a /dev/md0 /dev/sdf1
4、移除一個熱備盤,mdadm -r /dev/md0 /dev/sdf1
5、類比硬碟故障,mdadm -f /dev/md0 /dev/sdb1
6、移除故障的硬碟,現在已經沒有熱備盤了,再添加一個熱備盤,mdadm -r /dev/md0 /dev/sdb1;mdadm -a /dev/md0 /dev/sdf1
7、生成mdadm的設定檔,echo DEVICE /dev/sd[c-f]1 > /etc/mdadm.conf;mdadm -Ds >>/etc/mdadm.conf
8、格式化並掛載 /dev/md0 設備,mkdir /raid5;mkfs.ext4 /dev/md0;mount /dev/md0 /raid5
作者簡介:AnyTopOne 是一個開源軟體(Free and Open-Source Software) 愛好者,先後從事Linux系統管理、程式開發、大規模平臺架構設計、團隊管理等工作,從業經驗13年有餘,具有豐富的IT行業從業經驗,喜歡與其大家乾貨經驗分享與交流。
作者:AnyTopOne本文由 AnyTopOne 原創編輯