Linux下使用mdadm實現RAID詳解

Linux 軟件 科技 AnyTopOne 2017-05-07

Linux下使用mdadm實現RAID詳解

一、RAID簡述

磁盤陣列(Redundant Arrays of Independent Disks,RAID),是把多個物理磁盤組成一個陣列,當作一個邏輯磁盤使用,它將數據以分段或條帶的方式儲存在不同的磁盤中,這樣可以通過在多個磁盤上同時存儲和讀取數據來大幅提高存儲系統的數據吞吐量

二、RAID分類

1、外接式磁盤陣列:常被使用在大型服務器上,專業的硬件磁盤陣列盤櫃,價格昂貴,主要廠商:IBM、HP、EMC等

2、內接式磁盤陣列:需要技術人員來使用操作,同時需要配備硬件RAID卡或者陣列卡

3、軟件仿真式磁盤陣列:通過操作系統自身提供的磁盤管理功能(軟件功能實現)將多個硬盤配置成邏輯盤,價格相對較便宜

三、RAID級別

1、RAID 0

最早出現的RAID模式,屬於條帶模式,至少需要兩塊磁盤,成本低,可以提高整個磁盤的性能和吞吐量;但是沒有容錯機制,磁盤損壞易丟失數據

Linux下使用mdadm實現RAID詳解

2、RAID 1

磁盤鏡像模式,數據在寫入一塊磁盤的同時,會在另一塊閒置的磁盤上生成鏡像文件,通過二次讀寫實現磁盤鏡像,磁盤控制器的負載也相當大,所以多磁盤控制器使用可以緩解讀寫負載

Linux下使用mdadm實現RAID詳解

3、RAID 1 + 0

高可靠性與高效磁盤結構,下層是兩個RAID 1,兩個RAID 1之上是RAID 0,至少四塊硬盤

Linux下使用mdadm實現RAID詳解

4、RAID 0 + 1

高效率與高性能磁盤結構, 下層是兩個RAID 0,兩個RAID 1之上是RAID 1,至少四塊硬盤

Linux下使用mdadm實現RAID詳解

5、RAID 2

帶海明碼校驗,這種編碼技術需要多個磁盤存放檢查及恢復信息,使得RAID 2技術實施更復雜,商業中用的比較少

Linux下使用mdadm實現RAID詳解

6、RAID 3

帶奇偶校驗碼的並行傳送,只能查錯不能糾錯

Linux下使用mdadm實現RAID詳解

7、RAID 4

它對數據的訪問是按數據塊進行的,也就是按磁盤進行的,每次是一個盤。在圖上可以這麼看,RAID3是一次一橫條,而RAID4一次一豎條

Linux下使用mdadm實現RAID詳解

8、RAID 5

分佈式奇偶校驗的獨立磁盤結構,可靠性強,只損壞一塊硬盤時,系統會根據存儲的奇偶校驗位重建數據,如果同時損壞兩塊硬盤時數據將完全損壞

Linux下使用mdadm實現RAID詳解

9、RAID 6

帶有兩種分佈存儲的奇偶校驗碼的獨立磁盤結構,多一種校驗主要是用於要求數據絕對不能出錯的場合

Linux下使用mdadm實現RAID詳解

10、RAID 7

所有的I/O傳送均是同步進行的,可以分別控制,這樣提高了系統的並行性,提高系統訪問數據的速度,帶有高速緩衝存儲器,由於採用並行結構和高速緩衝存儲器,因此數據訪問效率大大提高

Linux下使用mdadm實現RAID詳解

四、常見RAID級別總結

Linux下使用mdadm實現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分區為例,其他分區依次建立

Linux下使用mdadm實現RAID詳解

2、創建RAID5,mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 --spare-devices=1 /dev/sde1

Linux下使用mdadm實現RAID詳解

3、添加一個熱備盤,mdadm -a /dev/md0 /dev/sdf1

Linux下使用mdadm實現RAID詳解

4、移除一個熱備盤,mdadm -r /dev/md0 /dev/sdf1

Linux下使用mdadm實現RAID詳解

5、模擬硬盤故障,mdadm -f /dev/md0 /dev/sdb1

Linux下使用mdadm實現RAID詳解

6、移除故障的硬盤,現在已經沒有熱備盤了,再添加一個熱備盤,mdadm -r /dev/md0 /dev/sdb1;mdadm -a /dev/md0 /dev/sdf1

Linux下使用mdadm實現RAID詳解

Linux下使用mdadm實現RAID詳解

7、生成mdadm的配置文件,echo DEVICE /dev/sd[c-f]1 > /etc/mdadm.conf;mdadm -Ds >>/etc/mdadm.conf

Linux下使用mdadm實現RAID詳解

8、格式化並掛載 /dev/md0 設備,mkdir /raid5;mkfs.ext4 /dev/md0;mount /dev/md0 /raid5

Linux下使用mdadm實現RAID詳解


作者簡介:

AnyTopOne 是一個開源軟件(Free and Open-Source Software) 愛好者,先後從事Linux系統管理、程序開發、大規模平臺架構設計、團隊管理等工作,從業經驗13年有餘,具有豐富的IT行業從業經驗,喜歡與其大家乾貨經驗分享與交流。

作者:AnyTopOne

本文由 AnyTopOne 原創編輯

相關推薦

推薦中...