CentOS7下使用mdadm實(shí)現(xiàn)RAID

一、RAID簡(jiǎn)述

磁盤陣列(Redundant Arrays of Independent Disks,RAID),是把多個(gè)物理磁盤組成一個(gè)陣列,當(dāng)作一個(gè)邏輯磁盤使用,它將數(shù)據(jù)以分段或條帶的方式儲(chǔ)存在不同的磁盤中,這樣可以通過(guò)在多個(gè)磁盤上同時(shí)存儲(chǔ)和讀取數(shù)據(jù)來(lái)大幅提高存儲(chǔ)系統(tǒng)的數(shù)據(jù)吞吐量。

二、RAID分類

  1. 外接式磁盤陣列:常被使用在大型服務(wù)器上,專業(yè)的硬件磁盤陣列盤柜,價(jià)格昂貴,主要廠商:IBM、HP、EMC等。
  2. 內(nèi)接式磁盤陣列:需要技術(shù)人員來(lái)使用操作,同時(shí)需要配備硬件RAID卡或者陣列卡。
  3. 軟件仿真式磁盤陣列:通過(guò)操作系統(tǒng)自身提供的磁盤管理功能(軟件功能實(shí)現(xiàn))將多個(gè)硬盤配置成邏輯盤,價(jià)格相對(duì)較便宜。

三、RAID級(jí)別

  1. RAID 0

    raid0

    最早出現(xiàn)的RAID模式,屬于條帶模式,至少需要兩塊磁盤,成本低,可以提高整個(gè)磁盤的性能和吞吐量;但是沒(méi)有容錯(cuò)機(jī)制,磁盤損壞易丟失數(shù)據(jù)。

  2. RAID 1

    raid1

    磁盤鏡像模式,數(shù)據(jù)在寫入一塊磁盤的同時(shí),會(huì)在另一塊閑置的磁盤上生成鏡像文件,通過(guò)二次讀寫實(shí)現(xiàn)磁盤鏡像,磁盤控制器的負(fù)載也相當(dāng)大,所以多磁盤控制器使用可以緩解讀寫負(fù)載。

  3. RAID 1 + 0

    raid10

    高可靠性與高效磁盤結(jié)構(gòu),下層是兩個(gè)RAID 1,兩個(gè)RAID 1之上是RAID 0,至少四塊硬盤。

  4. RAID 0 + 1

    raid01

    高效率與高性能磁盤結(jié)構(gòu), 下層是兩個(gè)RAID 0,兩個(gè)RAID 1之上是RAID 1,至少四塊硬盤。

  5. RAID 2

    raid2

    帶海明碼校驗(yàn),這種編碼技術(shù)需要多個(gè)磁盤存放檢查及恢復(fù)信息,使得RAID 2技術(shù)實(shí)施更復(fù)雜,商業(yè)中用的比較少。

  6. RAID 3

    raid3

    帶奇偶校驗(yàn)碼的并行傳送,只能查錯(cuò)不能糾錯(cuò)。

  7. RAID 4

    raid4

    它對(duì)數(shù)據(jù)的訪問(wèn)是按數(shù)據(jù)塊進(jìn)行的,也就是按磁盤進(jìn)行的,每次是一個(gè)盤。在圖上可以這么看,RAID3是一次一橫條,而RAID4一次一豎條。

  8. RAID 5

    raid5

    分布式奇偶校驗(yàn)的獨(dú)立磁盤結(jié)構(gòu),可靠性強(qiáng),只損壞一塊硬盤時(shí),系統(tǒng)會(huì)根據(jù)存儲(chǔ)的奇偶校驗(yàn)位重建數(shù)據(jù),如果同時(shí)損壞兩塊硬盤時(shí)數(shù)據(jù)將完全損壞。

  9. RAID 6

    raid6

    帶有兩種分布存儲(chǔ)的奇偶校驗(yàn)碼的獨(dú)立磁盤結(jié)構(gòu),多一種校驗(yàn)主要是用于要求數(shù)據(jù)絕對(duì)不能出錯(cuò)的場(chǎng)合。

  10. RAID 7

    raid7

    所有的I/O傳送均是同步進(jìn)行的,可以分別控制,這樣提高了系統(tǒng)的并行性,提高系統(tǒng)訪問(wèn)數(shù)據(jù)的速度,帶有高速緩沖存儲(chǔ)器,由于采用并行結(jié)構(gòu)和高速緩沖存儲(chǔ)器,因此數(shù)據(jù)訪問(wèn)效率大大提高。

四、常見(jiàn)RAID級(jí)別總結(jié)

raidall

五、mdadm命令參數(shù)詳解

1、主要模式

  1. Assemble:裝配模式,將原來(lái)屬于一個(gè)陣列的每個(gè)塊設(shè)備組裝為陣列

    -A, --assemble: 開啟一個(gè)陣列
    -u, --uuid:可以根據(jù)組件設(shè)備的uuid開啟RAID
    -m, --super-minor:保存在每個(gè)組件設(shè)備中的超級(jí)塊中的minor號(hào),可以根據(jù)這個(gè)開啟RAID
    -N, -–name:根據(jù)RAID名開啟RAID。
    -R, –-run:即使RAID中的磁盤設(shè)備不完整(例如原來(lái)創(chuàng)建4塊盤的RAID5,現(xiàn)在只發(fā)現(xiàn)3塊成員盤),RAID也被開啟-–no-degraded:和–scan選項(xiàng)一起使用,禁止RAID中的磁盤設(shè)備不完整時(shí)啟動(dòng)RAID
    -a, -–auto:如-–create中的 –auto
    -b, -–bitmap:指定bitmap位圖文件-–backup-file:保存關(guān)鍵信息的文件,例如:如果中途斷電可以重啟繼續(xù)
    -U, –-update:更新每個(gè)磁盤設(shè)備的超級(jí)塊信息
    
  2. Build: 創(chuàng)建或組裝不需要元數(shù)據(jù)(沒(méi)有超級(jí)塊)的陣列,每個(gè)設(shè)備沒(méi)有元數(shù)據(jù)塊

  3. Create: 創(chuàng)建一個(gè)新的陣列,每個(gè)設(shè)備具有超級(jí)塊

    -C, --create:創(chuàng)建一個(gè)新的陣列 
    -l, --level: RAID級(jí)別 
    -n, --raid-devices: 活動(dòng)設(shè)備個(gè)數(shù) 
    -a, {yes|no}: 是否自動(dòng)為其創(chuàng)建設(shè)備文件 
    -c, --chunk: CHUNK大小, 默認(rèn)為64K,重要的參數(shù),決定了一次向陣列中每個(gè)磁盤寫入數(shù)據(jù)的大小 
    -x, --spare-devices: 備用盤個(gè)數(shù)
    
  4. Grow:改變陣列中每個(gè)設(shè)備被使用的容量或陣列中的設(shè)備的數(shù)目,改變陣列屬性

    -G, --grow: 改變陣列的大小或設(shè)備的數(shù)量
    -n, --raid-devices=: 活動(dòng)設(shè)備個(gè)數(shù)
    -x, --spare-devices=:備用盤個(gè)數(shù)
    -c, --chunk=: CHUNK大小, 默認(rèn)為64K,重要的參數(shù),決定了一次向陣列中每個(gè)磁盤寫入數(shù)據(jù)的大小
    -z, --size=:陣列中從每個(gè)磁盤獲取的空間總數(shù)
    -l, --level=: RAID級(jí)別
    -p, --layout=:設(shè)定raid5 和raid10的奇偶校驗(yàn)規(guī)則;并且控制故障的故障模式--parity: 類似于--layout--assume-clean:目前僅用于 --build 選項(xiàng)
    -R, --run: 強(qiáng)制激活RAID,使用這個(gè)選項(xiàng),設(shè)備上有舊的元數(shù)據(jù)信息的提示會(huì)被忽略
    -N, --name=: 設(shè)定陣列的名稱–-rounding:在linear array中的rounding factor,等于條帶大小
    
  5. Monitor:監(jiān)控RAID的狀態(tài),報(bào)指定的事件,可以實(shí)現(xiàn)全局熱備

    -F, --follow, 
        --monitor:選擇監(jiān)控(Monitor)模式
        --alert:當(dāng)檢測(cè)到一個(gè)事件時(shí)運(yùn)行指定的程序
    -m,--mail: 事件報(bào)警時(shí)給誰(shuí)發(fā)電子郵件-p,--program, 
    -y, --syslog: 事件記錄于syslog中
    -d, --delay:隔多少秒輪詢各個(gè)RAID,默認(rèn)是60秒
    -f, --daemonise:創(chuàng)建一個(gè)子進(jìn)行作為后臺(tái)監(jiān)控程序
    -i, --pid-file:與--daemonise一起使用,子進(jìn)程PID記錄文件
    -l, --oneshot:只會(huì)檢測(cè)RAID一次
    -t, --test,生成test報(bào)警信息,用來(lái)測(cè)試報(bào)警信息是否能正確收到
    
  6. Manage:管理存儲(chǔ)陣列中的設(shè)備,比如增加熱備磁盤或者設(shè)置某個(gè)磁盤失效、陣列中移除失效的磁盤

    -a,--add:在線添加磁盤設(shè)備,例如可以添加熱備盤
    --re-add:給RAID重新添加一個(gè)以前被移除的設(shè)備
    -r,--reomve:移除設(shè)備,只能移除failed(失效)磁盤和spare(熱備)磁盤設(shè)備
    -f,--fail:使RAID中某個(gè)磁盤設(shè)備失效
    
  7. Incremental Assembly:添加設(shè)備到陣列中

  8. Misc: 報(bào)告或者修改陣列中相關(guān)設(shè)備的信息,比如查詢陣列或者設(shè)備的狀態(tài)信息、對(duì)陣列中的某個(gè)設(shè)備進(jìn)行操作(例如抹去超級(jí)塊或停止陣列)

    -Q, --query: 查詢一個(gè)RAID或者一個(gè)RAID組件設(shè)備的信息
    -D, --detail: 查詢一個(gè)RAID的詳細(xì)信息
    -E, --examine:查詢組件設(shè)備上的超級(jí)塊信息
    -R, -–run:?jiǎn)?dòng)不完整的RAID(例如本來(lái)是有4塊盤的RAID5,現(xiàn)在3塊盤也可以啟動(dòng))
    -S, -–stop:停止RAID
    -o, -–readonly:使RAID只能只讀
    -w, -–readwrite:使RAID能讀寫
        -–zero-superblock:超級(jí)塊信息被寫0覆蓋。
    
  9. Auto-detect: 只是要求在Linux內(nèi)核啟動(dòng)時(shí)自動(dòng)檢測(cè)到陣列

2、無(wú)任何模式參數(shù)

```
-v, -–verbose:顯示更詳細(xì)的信息
-f, -–force:某些選項(xiàng)強(qiáng)制執(zhí)行
-c, -–config:指定配置文件,默認(rèn)是 /etc/mdadm.conf 或者是/etc/mdadm/mdadm.conf
-s, –-scan:從配置文件或者/proc/mdstat中掃描信息
-e, -–metadata:定義組件設(shè)備上超級(jí)塊的類型-–homehost:創(chuàng)建一個(gè)RAID時(shí),homehost名會(huì)記錄在超級(jí)塊中
-b, --brief:較少的細(xì)節(jié),用于 --detail 和 --examine選項(xiàng)
-q, --quit:安靜模式;加上該選項(xiàng)能使mdadm不顯示純消息性的信息,除非那是一個(gè)重要的報(bào)告;
-c, --config=: 指定配置文件,缺省為 /etc/mdadm.conf
```

六、創(chuàng)建RAID5舉例

如下有5個(gè)分區(qū):

/dev/sdb 10GB           
/dev/sdc 10GB           
/dev/sdd 10GB   
/dev/sde 10GB
/dev/sdf 10GB
  1. 建各個(gè)分區(qū),以/dev/sdb1分區(qū)為例,其他分區(qū)依次建立
    fdisk /dev/sdb
    fenqufdisk
  1. 創(chuàng)建RAID5,加入sdb,sdc,sdd

    mdadm -Cv /dev/md0 -a yes -l 5 -n 3 /dev/sd{b,c,d}
    或
    mdadm --creat /dev/md0 --level=5 --raid-device=3 /dev/sd{b,c,d}
    
  2. 添加一個(gè)熱備盤

    mdadm -a /dev/md0 /dev/sde1
    
  3. 移除一個(gè)熱備盤

    mdadm -r /dev/md0 /dev/sde1
    
  4. 模擬硬盤故障

    mdadm -f /dev/md0 /dev/sdb1
    
  5. 移除故障的硬盤,現(xiàn)在已經(jīng)沒(méi)有熱備盤了,再添加一個(gè)熱備盤

    mdadm -r /dev/md0 /dev/sdb1
    mdadm -a /dev/md0 /dev/sdf1
    
  6. 生成mdadm的配置文件

    echo DEVICE /dev/sd[c-f]1 > /etc/mdadm.conf
    mdadm -Ds >>/etc/mdadm.conf
    
  7. 格式化并掛載 /dev/md0 設(shè)備

    mkdir /mnt/raid5
    mkfs.ext4 /dev/md0
    mount /dev/md0 /mnt/raid5
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容