這篇文章將為大家詳細(xì)講解有關(guān)Linux陣列RAID的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
建甌ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書(shū)合作)期待與您的合作!
一、 RAID詳解 二、 mdadm工具介紹 三、 創(chuàng)建一個(gè)RAID的基本過(guò)程 四、 磁盤(pán)陣列的管理 五、 RAID優(yōu)化
RAID詳解:
描述:RAID:(Redundant Array of indenpensive Disk) 獨(dú)立磁盤(pán)冗余陣列: 磁盤(pán)陣列是把多個(gè)磁盤(pán)組成一個(gè)陣列,當(dāng)作單一磁盤(pán)使用,它將數(shù)據(jù)以分段(striping)的方式儲(chǔ)存在不同的磁盤(pán)中,存取數(shù)據(jù)時(shí),陣列中的相關(guān)磁盤(pán)一起動(dòng)作,大幅減低數(shù)據(jù)的存取時(shí)間,同時(shí)有更佳的空間利用率。磁盤(pán)陣列利用的不同的技術(shù),稱為RAID level,不同的level針對(duì)不同的系統(tǒng)及應(yīng)用,以解決數(shù)據(jù)安全的問(wèn)題。簡(jiǎn)單來(lái)說(shuō),RAID把多個(gè)硬盤(pán)組合成為一個(gè)邏輯扇區(qū),因此,操作系統(tǒng)只會(huì)把它當(dāng)作一個(gè)硬盤(pán)。 一般高性能的磁盤(pán)陣列都是以硬件的形式來(lái)達(dá)成,進(jìn)一步的把磁盤(pán)存取控制及磁盤(pán)陣列結(jié)合在一個(gè)控制器(RAID controler)或控制卡上,針對(duì)不同的用戶解決人們對(duì)磁盤(pán)輸輸入輸出系統(tǒng)的四大要求: (1)增加存取速度, (2)容錯(cuò)(fault tolerance),即安全性 (3)有效的利用磁盤(pán)利用率; (4)盡量的平衡CPU,內(nèi)存及磁盤(pán)的性能差異,提高主機(jī)的整體工作性能。可提供的功能:
1.冗余(容錯(cuò))
2.性能提升RAID分類:1. 硬件RAID:用RAId接口卡來(lái)實(shí)現(xiàn);需要內(nèi)核支持其驅(qū)動(dòng),并且該類設(shè)備設(shè)備顯示為SCSI設(shè)備,代號(hào)為/dev/sd*2. 軟件RAID:用內(nèi)核中的MD(multiple devices)模塊實(shí)現(xiàn),該類設(shè)備在/etc/下表示為:md*;在現(xiàn)在的RH 5版本中使用mdadm工具管理軟RAID;(雖然來(lái)說(shuō)可以用軟件模擬實(shí)現(xiàn)raid,但是相對(duì)對(duì)磁盤(pán)控制的功能及性能不如硬件實(shí)現(xiàn)的好,生產(chǎn)環(huán)境中最好使用硬件raid幾種常見(jiàn)RAID類型描述:
圖示:
1. RAID-0:striping(條帶模式),至少需要兩塊磁盤(pán),做RAID分區(qū)的大小最好是相同的(可以充分發(fā)揮并優(yōu)勢(shì));而數(shù)據(jù)分散存儲(chǔ)于不同的磁盤(pán)上,在讀寫(xiě)的時(shí)候可以實(shí)現(xiàn)并發(fā),所以相對(duì)其讀寫(xiě)性能最好;但是沒(méi)有容錯(cuò)功能,任何一個(gè)磁盤(pán)的損壞將損壞全部數(shù)據(jù);
2. RAID-1:mirroring(鏡像卷),至少需要兩塊硬盤(pán),raid大小等于兩個(gè)raid分區(qū)中最小的容量(最好將分區(qū)大小分為一樣),可增加熱備盤(pán)提供一定的備份能力;數(shù)據(jù)有冗余,在存儲(chǔ)時(shí)同時(shí)寫(xiě)入兩塊硬盤(pán),實(shí)現(xiàn)了數(shù)據(jù)備份;但相對(duì)降低了寫(xiě)入性能,但是讀取數(shù)據(jù)時(shí)可以并發(fā),幾乎類似于raid-0的讀取效率;
3. RAID-5:需要三塊或以上硬盤(pán),可以提供熱備盤(pán)實(shí)現(xiàn)故障的恢復(fù);采用奇偶效驗(yàn),可靠性強(qiáng),且只有同時(shí)損壞兩塊硬盤(pán)時(shí)數(shù)據(jù)才會(huì)完全損壞,只損壞一塊硬盤(pán)時(shí),系統(tǒng)會(huì)根據(jù)存儲(chǔ)的奇偶校驗(yàn)位重建數(shù)據(jù),臨時(shí)提供服務(wù);此時(shí)如果有熱備盤(pán),系統(tǒng)還會(huì)自動(dòng)在熱備盤(pán)上重建故障磁盤(pán)上的數(shù)據(jù);
存儲(chǔ)方式:簡(jiǎn)單來(lái)說(shuō)就是,磁盤(pán)陣列的第一個(gè)磁盤(pán)分段是校驗(yàn)值,第二個(gè)磁盤(pán)至后一個(gè)磁盤(pán)再折回第一個(gè)磁盤(pán)的分段是數(shù)據(jù),然后第二個(gè)磁盤(pán)的分段是校驗(yàn)值,從第三個(gè)磁盤(pán)再折回第二個(gè)磁盤(pán)的分段是數(shù)據(jù),以此類推,直到放完數(shù)據(jù)為止。這樣數(shù)據(jù)與校驗(yàn)值的循環(huán)分離存儲(chǔ)就可以達(dá)到一定的故障重建功能;但是raid-5的控制較為復(fù)雜,且計(jì)算大量的校驗(yàn)碼,可能給系統(tǒng)造成額外計(jì)算的負(fù)擔(dān)(軟raid來(lái)說(shuō),硬件有自己的數(shù)據(jù)處理能力)
注:RAID中的容錯(cuò)表示即使磁盤(pán)故障,數(shù)據(jù)仍能保持完整,可讓系統(tǒng)存取到正確的數(shù)據(jù),而SCSI的磁盤(pán)陣列更可在工作中抽換磁盤(pán),并可自動(dòng)重建故障磁盤(pán)的數(shù)據(jù)。
熱備份(hot spare or hot standby driver):為了加強(qiáng)容錯(cuò)的功能以及使系統(tǒng)在磁盤(pán)故障的情況下能迅速的重建數(shù)據(jù),以維持系統(tǒng)的性能,一般的磁盤(pán)陣列系統(tǒng)都可使用熱備份(hot spare or hot standby driver)的功能,所謂熱備份是在建立(configure) 磁盤(pán)陣列系統(tǒng)的時(shí)候,將其中一磁盤(pán)指定為后備磁盤(pán),該磁盤(pán)在平常并不操作,但若陣列中某一磁盤(pán)發(fā)生故障時(shí),磁盤(pán)陣列即以后備磁盤(pán)取代故障磁盤(pán),并自動(dòng)將故障磁盤(pán)的數(shù)據(jù)重建(rebuild)在后備磁盤(pán)之上,因?yàn)榉磻?yīng)快速,加上快取內(nèi)存減少了磁盤(pán)的存取, 所以數(shù)據(jù)重建很快即可完成,對(duì)系統(tǒng)的性能影響很小。
在任何時(shí)候都不要用同一個(gè)硬盤(pán)上的多個(gè)區(qū)來(lái)做RAID,那樣不僅不能提高系統(tǒng)的性能,反而會(huì)大大降低整體系統(tǒng)的系能;
對(duì)上面幾種常用的RAID類型分析后,可知,RAID-0主要可以提高磁盤(pán)性能,RAID-1主要可以實(shí)現(xiàn)備份容錯(cuò)(RAID-5由于控制機(jī)制復(fù)雜在此暫不使用),所以可以在實(shí)際生產(chǎn)環(huán)境下考慮結(jié)合RAID-0和RAID-1來(lái)實(shí)現(xiàn)磁盤(pán)存儲(chǔ)系統(tǒng)的高性能、高容錯(cuò)。
下面圖示的兩種raid結(jié)合方式解析:
對(duì)于一:底層分別用有兩塊硬盤(pán)的raid0實(shí)現(xiàn)高并發(fā),再集合兩個(gè)raid0組實(shí)現(xiàn)冗余;下層的任意一個(gè)raid0組中有任意一塊硬盤(pán)會(huì)使改組失效,但是兩外一個(gè)組仍能提供全部數(shù)據(jù);
對(duì)于二:底層用raid-1實(shí)現(xiàn)數(shù)冗余,上層用raid-2實(shí)現(xiàn)高并發(fā),該種結(jié)構(gòu)中任意一個(gè)硬盤(pán)的故障,不對(duì)本組整體數(shù)據(jù)工作構(gòu)成破壞性影響;所以感覺(jué)該種方案更優(yōu)異,在實(shí)際生產(chǎn)中有部分應(yīng)用(具體配置過(guò)程再文章最后附);
mdadm工具介紹:
描述: mdadm(multiple devices admin)是 linux下標(biāo)準(zhǔn)的的軟raid管理工具,是一個(gè)模式化工具(在不同的模式下);程序工作在內(nèi)存用戶程序區(qū),為用戶提供RAID接口來(lái)操作內(nèi)核的模塊,實(shí)現(xiàn)各種功能;RedHat已經(jīng)內(nèi)置了該工具;官方最新的版本應(yīng)該是3.2,需要最新版本可以到官方網(wǎng)站下載或http://www.kernel.org/pub/linux/utils/raid/mdadm/下載源碼包進(jìn)行編譯安裝(官網(wǎng)一直打不開(kāi)o(╯□╰)o).
實(shí)驗(yàn)環(huán)境:RedHhat5.4 ;mdadm版本為v2.6.9 ;
可能不同的版本選項(xiàng)等略有變動(dòng),使用時(shí)請(qǐng)注意對(duì)照自己版本的man文檔;
基本語(yǔ)法:
# mdadm [mode] <raid-device> [options] <component-devices>
目前支持的模式: LINEAR(線性模式)、RAID0(striping條帶模式)、RAID1(mirroring)、 RAID-4、RAID-5、 RAID-6、 RAID-10、 MULTIPATH和FAULTY
LINEAR:線性模式,該模式不是raid的標(biāo)準(zhǔn)模式,其主要作用是可以實(shí)現(xiàn)將幾塊小的硬盤(pán)組合為一塊大硬盤(pán)來(lái)使用;數(shù)組存儲(chǔ)時(shí)一次存滿一個(gè)硬盤(pán)在使用下一個(gè)硬盤(pán);對(duì)上層來(lái)說(shuō)操作的是一個(gè)大硬盤(pán)
模式(7種): Assemble:裝配模式:加入一個(gè)以前定義的陣列;可以使挺值得陣列或從其他主機(jī)移出的陣列
Build: 創(chuàng)建:創(chuàng)建一個(gè)沒(méi)有超級(jí)塊的陣列Create:創(chuàng)建一個(gè)新的陣列,每個(gè)設(shè)備具有超級(jí)塊
Follow or Monitor:監(jiān)控RAID的狀態(tài),一般只對(duì)RAID-1/4/5/6/10等有冗余功能的模式來(lái)使用
Grow:(Grow or shrink)改變RAID的容量或陣列中的設(shè)備數(shù)目;收縮一般指的是數(shù)據(jù)收縮或重建;
Manage:管理陣列(如添加spare盤(pán)和刪除故障盤(pán))
Incremental Assembly:添加一個(gè)設(shè)備到一個(gè)適當(dāng)?shù)年嚵小?/p>
Misc: 允許單獨(dú)對(duì)陣列中的某個(gè)設(shè)備進(jìn)行操作(如抹去superblocks 或停止陣列)
Auto-detect:此模式不作用于特定的設(shè)備或陣列,而是要求在Linux內(nèi)核啟動(dòng)任何自動(dòng)檢測(cè)到的陣列。
OPTIONS:
選擇一個(gè)模式的選項(xiàng):(Options for selecting a mode)
-A, --assemble:加入并開(kāi)啟一個(gè)以前定義的陣列
-B, --build: 創(chuàng)建一個(gè)沒(méi)有超級(jí)塊的陣列(Build a legacy array without superblocks.)
-C, --create: 創(chuàng)建一個(gè)新的陣列
-F, --follow, --monitor:選擇監(jiān)控(Monitor)模式-
G, --grow: 改變激活陣列的大小或形態(tài)-I,
--incremental:添加一個(gè)單獨(dú)的設(shè)備到合適的陣列,并可能啟動(dòng)陣列
--auto-detect: 請(qǐng)求內(nèi)核啟動(dòng)任何自動(dòng)檢測(cè)到的陣列
不特定于一個(gè)模式的選項(xiàng):(Options that are not mode-specific)
-c, --config=:指定配置文件,缺省為 /etc/mdadm.conf
-s, --scan: 掃描配置文件或 /proc/mdstat以搜尋丟失的信息。默認(rèn)配置文件:/etc/mdadm.conf
-h, --help: 幫助信息,用在以上選項(xiàng)后,則顯示該選項(xiàng)信息
-v, --verbose:顯示細(xì)節(jié),一般只能跟 --detile 或 --examine一起使用,顯示中級(jí)的信息;
-b, --brief: 較少的細(xì)節(jié)。用于 --detail 和 --examine 選項(xiàng)
--help-options: 顯示更詳細(xì)的幫助
-V, --version:版本信息
-q,--quit: 安靜模式;加上該選項(xiàng)能使mdadm不顯示純消息性的信息,除非那是一個(gè)重要的報(bào)告;
create build 或grow時(shí)使用的選項(xiàng):
-n, --raid-devices=:指定陣列中活動(dòng)的device數(shù)目,不包括spare磁盤(pán),這個(gè)數(shù)目只能由--grow修改
-x, --spare-devices=:指定初始陣列的冗余device 數(shù)目即spare device數(shù)目;
-c, --chunk=:Specify chunk size of kibibytes. 缺省為 64. chunk-size是一個(gè)重要的參數(shù),決定了一次向陣列中每個(gè)磁盤(pán)寫(xiě)入數(shù)據(jù)的量
(Chunk :,可以理解為raid分儲(chǔ)數(shù)據(jù)時(shí)每個(gè)數(shù)據(jù)段的大?。ㄍǔ?2/64/128等這類數(shù)字大?。?;合理的選擇chunk大小非常重要,若chunk過(guò)大可能一塊磁盤(pán)上的帶區(qū)空間就可以滿足大部分的I/O操作,使得數(shù)據(jù)的讀寫(xiě)只局限于一塊硬盤(pán)上,這便不能充分發(fā)揮RAID并發(fā)的優(yōu)勢(shì);如果chunk設(shè)置過(guò)小,任何很小的I/O指令都 可能引發(fā)大量的讀寫(xiě)操作,不能良好發(fā)揮并發(fā)性能,占用過(guò)多的控制器總線帶寬,也影響了陣列的整體性能。所以,在創(chuàng)建帶區(qū)時(shí),我們應(yīng)該根據(jù)實(shí)際應(yīng)用的需要,合理的選擇帶區(qū)大小。)
-z, --size=:組建RAID1/4/5/6后從每個(gè)device獲取的空間總數(shù);但是大小必須為chunk的倍數(shù),還需要在每個(gè)設(shè)備最后給RAID的superblock留至少128KB的大小。
--rounding=:Specify rounding factor for linear array (==chunk size)
-l, --level=:設(shè)定 raid level.raid的幾倍-
-create: 可用:linear, raid0, 0, stripe, raid1,1, mirror, raid4, 4, raid5, 5, raid6, 6, multipath, mp.
--build: 可用:linear, raid0, 0, stripe
.-p, --layout=:設(shè)定raid5 和raid10的奇偶校驗(yàn)規(guī)則;并且控制故障的故障模式;其中RAID-5的奇偶校驗(yàn)可以在設(shè)置為::eft-asymmetric, left-symmetric, right-asymmetric, right-symmetric, la, ra, ls, rs.缺省為left-symmetric
--parity: 類似于--layout=
--assume-clean:目前僅用于 --build 選項(xiàng)
-R, --run:陣列中的某一部分出現(xiàn)在其他陣列或文件系統(tǒng)中時(shí),mdadm會(huì)確認(rèn)該陣列。此選項(xiàng)將不作確認(rèn)。
-f, --force:通常mdadm不允許只用一個(gè)device 創(chuàng)建陣列,而且此時(shí)創(chuàng)建raid5時(shí)會(huì)使用一個(gè)device作為missing drive。此選項(xiàng)正相反
-N,--name=:設(shè)定陣列的名稱
管理模式選項(xiàng)(For Manage mode):
-a, --add:添加列出的設(shè)備到一個(gè)工作的陣列中;當(dāng)陣列處于降級(jí)狀態(tài)(故障狀態(tài)),你添加一個(gè)設(shè)備,該設(shè)備將作為備用設(shè)備并且在該備用設(shè)備上開(kāi)始數(shù)據(jù)重建。-r, --remove:從陣列中移除列出的設(shè)備,并且該設(shè)備不能處于活動(dòng)狀態(tài)(是冗余盤(pán)或故障盤(pán));
-f,--fail:將列出的設(shè)備標(biāo)記為faulty狀態(tài),標(biāo)記后就可以移除設(shè)備;(可以作為故障恢復(fù)的測(cè)試手段)--set-faulty:同上
監(jiān)控模式選項(xiàng)(For Monitor mode):
-m, --mail:設(shè)置一個(gè)mail地址,在報(bào)警時(shí)給該mail發(fā)信;該地址可寫(xiě)入conf文件,在啟動(dòng)陣列是生效
-p, --program, --alert:當(dāng)檢測(cè)到一個(gè)事件時(shí)運(yùn)行一個(gè)指定的程序
-y, --syslog:設(shè)置所有的事件記錄于syslog中
-t, --test: 給啟動(dòng)時(shí)發(fā)現(xiàn)的每個(gè)陣列生成test警告信息;該信息傳遞給mail或報(bào)警程序;(以此來(lái)測(cè)試報(bào)警信息是否能正確接收)
MISC模式選項(xiàng): Usage: mdadm options ... devices ...
-Q, --query:查看一個(gè)device,判斷它為一個(gè) md device 或是 一個(gè) md 陣列的一部分
-D, --detail:打印一個(gè)或多個(gè)md device 的詳細(xì)信息
-E, --examine:打印 device 上的 md superblock 的內(nèi)容創(chuàng)建一個(gè)軟RAID的基本過(guò)程:
(以三個(gè)分區(qū)模擬創(chuàng)建一個(gè)raid5為操作示例,對(duì)于level0/1的How-To不再寫(xiě)出,如果理解原理,配置真的很簡(jiǎn)單;)
1. 生成raid組成: linux中陣列組成單元是分區(qū),分區(qū)可以是整個(gè)設(shè)備也可以是設(shè)備多個(gè)分區(qū)中的一個(gè);在fdisk分區(qū)后需要將分區(qū)標(biāo)志改為L(zhǎng)inux raid auto類型;
# 分區(qū)后如下:
Device Boot Start End Blocks Id System
/dev/sdb1 1 609 4891761 fd Linux raid autodetect
/dev/sdc1 1 609 4891761 fd Linux raid autodetect
/dev/sdd1 1 609 4891761 fd Linux raid autodetect
2. 建立磁盤(pán)陣列
# mdadm -C /dev/md0 -a yes -l 5 -n 3 /dev/sd{b,c,d}1
mdadm: array /dev/md0 started.
-C :創(chuàng)建一個(gè)陣列,后跟陣列名稱
-l :指定陣列的級(jí)別;
-n :指定陣列中活動(dòng)devices的數(shù)目
3. 查看陣列狀態(tài)
[root@bogon ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[2] sdc1[1] sdb1[0]
9783296 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
通過(guò)cat /proc/mdstat信息查看所有運(yùn)行的RAID陣列的狀態(tài),在第一行中首先是MD的設(shè)備名md0,active和inactive選項(xiàng)表示陣列是否能讀/寫(xiě),接著是陣列的RAID級(jí)別raid5,后面是屬于陣列的塊設(shè)備,方括號(hào)[]里的數(shù)字表示設(shè)備在陣列中的序號(hào),(S)表示其是熱備盤(pán),(F)表示這個(gè)磁盤(pán)是 faulty狀態(tài)。下一行中首先是陣列的大小,用塊數(shù)來(lái)表示;后面有chunk-size的大小,然后是layout類型,不同RAID級(jí)別的 layout類型不同,[3/3] [UUU]表示陣列有3個(gè)磁盤(pán)并且3個(gè)磁盤(pán)都是正常運(yùn)行的,而[2/3]和[_UU] 表示陣列有3個(gè)磁盤(pán)中2個(gè)是正常運(yùn)行的,下劃線對(duì)應(yīng)的那個(gè)位置的磁盤(pán)是faulty狀態(tài)的。
查看陣列的詳細(xì)信息:
[root@bogon ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 0.90
Creation Time : Tue Mar 15 08:17:52 2011
Raid Level : raid5
Array Size : 9783296 (9.33 GiB 10.02 GB)
Used Dev Size : 4891648 (4.67 GiB 5.01 GB)
Raid Devices : 3
Total Devices : 3
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Tue Mar 15 08:20:25 2011
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric 校驗(yàn)規(guī)則
Chunk Size : 64K
UUID : e0d929d1:69d7aacd:5ffcdf9b:c1aaf02d
Events : 0.2
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
4. mdadm.conf配置:mdadm.conf是該軟件的默認(rèn)配置文件,主要作用是方便跟蹤軟RAID的配置,尤其是可以配置監(jiān)視和事件上報(bào)選項(xiàng)。其中寫(xiě)入每一個(gè)陣列組成的詳細(xì)情況,用于在下次開(kāi)啟陣列后依據(jù)此文件重新裝配(assemble)開(kāi)啟陣列,否則就需要在開(kāi)啟時(shí)手動(dòng)定義陣列中的成員;當(dāng)然是推薦創(chuàng)建該文件,防止出現(xiàn)意外情況,具體的詳細(xì)配置及示例可以參看man文檔# man mdadm.conf
[root@bogon ~]# echo "DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 " >> /etc/mdadm.conf
[root@bogon ~]# mdadm -Ds >> /etc/mdadm.conf
[root@bogon ~]# echo "MAILADDR mospiral@gmail.com" >> /etc/mdadm.conf
MAILADDR指定出問(wèn)題時(shí)監(jiān)控系統(tǒng)發(fā)郵件的地址
# 格式如下:
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1
ARRAY /dev/md0 level=raid5 num-devices=3 metadata=0.90 UUID=e0d929d1:69d7aacd:5ffcdf9b:c1aaf02d
MAILADDR mospiral@gmail.com
#DEVICE行指明:依據(jù)該配置文件開(kāi)啟陣列時(shí),去查找那些設(shè)備的超級(jí)快信息;若沒(méi)有該行,
就去搜索mtab中所有設(shè)備分區(qū)的超級(jí)快信息;所以改行可以不寫(xiě),但是只要寫(xiě)上,以后添加spare
設(shè)備時(shí)就需要同時(shí)修改改行信息;
#ARRAY 行指明raid的名稱,級(jí)別uuid等基本信息
#可以添加諸如MAILADDR及PROGRAM等指定monitor狀態(tài)下的監(jiān)控報(bào)警信息;
磁盤(pán)陣列的管理: 可以在manage模式下對(duì)磁盤(pán)進(jìn)行各種管理工作;
給raid-5新增一個(gè)spare盤(pán):
[root@bogon ~]# mdadm -a /dev/md0 /dev/sda5
mdadm: added /dev/sda5
此時(shí)查看狀態(tài):
[root@bogon ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sda5[3](S) sdd1[2] sdc1[1] sdb1[0]
9783296 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
模擬硬盤(pán)故障:
[root@bogon ~]# mdadm -f /dev/md0 /dev/sdd1
mdadm: set /dev/sdd1 faulty in /dev/md0
# 此時(shí)查看狀態(tài),發(fā)現(xiàn)概念剛才的熱備盤(pán)已經(jīng)頂替了故障盤(pán)的位置,
# 并且進(jìn)度條顯示數(shù)據(jù)重建過(guò)程:
[root@bogon ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sda5[3] sdd1[4](F) sdc1[1] sdb1[0]
9783296 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
[>....................] recovery = 1.3% (66912/4891648) finish=6.0min speed=13382K/sec
unused devices: <none>
熱移除故障的硬盤(pán):
[root@bogon ~]# mdadm -r /dev/md0 /dev/sdd1
mdadm: hot removed /dev/sdd1
[root@bogon ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sda5[3] sdc1[1] sdb1[0]
9783296 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
[===>.................] recovery = 16.1% (792136/4891648) finish=4.6min speed=14828K/sec
unused devices: <none>
對(duì)于有冗余的raid形式,在單一磁盤(pán)故障時(shí)一般能在一段時(shí)間內(nèi)重建數(shù)據(jù);但是數(shù)據(jù)量非常大時(shí),重建會(huì)非常緩慢,且重建過(guò)程系統(tǒng)壓力比較大,此時(shí)需要多關(guān)注系統(tǒng)負(fù)載,防止重建過(guò)程出現(xiàn)錯(cuò)誤;在熱移除故障盤(pán)一戶,也需要盡快的換上新硬盤(pán),并且添加spare盤(pán);在故障修復(fù),重建重建之后,需要重新生成配置文件,防止在下次開(kāi)啟時(shí),按照最初的定義模式開(kāi)啟;
停止RAID:
# 指定停止某個(gè)陣列
[root@bogon ~]# mdadm -S /dev/md0
# 停止配置文件中定義的所有陣列
[root@bogon ~]# mdadm -Ss
mdadm: stopped /dev/md0
# -s –scan去查詢配置文件或沒(méi)有配置文件時(shí)查詢mdstat中的所有陣列
開(kāi)啟RAID:
[root@bogon ~]# mdadm -As
mdadm: /dev/md0 has been started with 2 drives (out of 3).
# -s –scan:根據(jù)配置文件開(kāi)啟所有的陣列,此時(shí)由于故障恢復(fù)過(guò),
# 但是由于未重建配置文件,陣列我不能加載上新添加的硬盤(pán);(需要停掉,重新手動(dòng)指定)
[root@bogon ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdb1[0] sdc1[1]
9783296 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
unused devices: <none>
若此時(shí)沒(méi)有配置文件,就需要手動(dòng)指定設(shè)備名稱:
[root@bogon ~]# mdadm -A /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sda5
mdadm: /dev/md0 has been started with 3 drives.
# 注:將一個(gè)raid設(shè)備添加入md陣列后,md的信息會(huì)寫(xiě)入到該設(shè)備分區(qū)的superblock中;
# 在手動(dòng)裝配時(shí);mdadm工具會(huì)自動(dòng)驗(yàn)證陣列配置是否合法,并且做出相應(yīng)的動(dòng)作;
若新接手一個(gè)raid,沒(méi)有配置文件,或忘記設(shè)備的準(zhǔn)確組成,就需要按分區(qū)逐個(gè)檢查是否是raid設(shè)備及其他信息,然后根據(jù)信息裝配陣列:
[root@bogon ~]# mdadm -E /dev/sdb1
/dev/sdb1:
Magic : a92b4efc
Version : 0.90.00
UUID : e0d929d1:69d7aacd:5ffcdf9b:c1aaf02d
Creation Time : Tue Mar 15 08:17:52 2011
Raid Level : raid5
Used Dev Size : 4891648 (4.67 GiB 5.01 GB)
Array Size : 9783296 (9.33 GiB 10.02 GB)
Raid Devices : 3
Total Devices : 3
Preferred Minor : 0
Update Time : Tue Mar 15 09:25:10 2011
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Checksum : b0cd088f - correct
Events : 8
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 0 8 17 0 active sync /dev/sdb1
0 0 8 17 0 active sync /dev/sdb1
1 1 8 33 1 active sync /dev/sdc1
2 2 8 5 2 active sync /dev/sda5
# 該處顯示出的是該分區(qū)superblock中包含的md信息;沒(méi)有配置文件時(shí),可以依據(jù)該信息裝配md;
刪除陣列:
若需要徹底清除這個(gè)陣列:
[root@bogon ~]# umount /dev/md0
mdadm -Ss /dev/md0
[root@bogon ~]# mdadm --zero-superblock /dev/sd{b,c,d}1
# --zero-superblock 加上該選項(xiàng)時(shí),會(huì)判斷如果該陣列是否包
# 含一個(gè)有效的陣列超級(jí)快,若有則將該超級(jí)塊中陣列信息抹除。
[root@bogon ~]# rm /etc/mdadm.conf
RAID優(yōu)化:
(1) 設(shè)置stride值
The stride is the software RAID device's chunk-size in filesystem blocks.For example,with an ext3 filesystem that will have an 4KB block size on a RAID device with a chunk-size of 64KB, the stride should be set to 16:(翻譯的很糾結(jié),就貼上教材原文了。)
mk2fs -j -b 4096 -E stride=16 /dev/md0
# 設(shè)置時(shí),需要用-E選項(xiàng)進(jìn)行擴(kuò)展
設(shè)定良好的stride值,可以在后期使用時(shí),減少寫(xiě)入數(shù)據(jù)時(shí)對(duì)數(shù)據(jù)塊計(jì)算的負(fù)擔(dān),從而提高RAID性能;
附:RAID 1-0雙層架構(gòu)的方法:
首先創(chuàng)建兩個(gè)底層RAID-1
[root@bogon ~]# mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sd[bc]1
mdadm: array /dev/md0 started.
[root@bogon ~]# mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sd[bc]2
mdadm: array /dev/md1 started.
用兩個(gè)RAID-1實(shí)現(xiàn)上層RAID-0:
[root@bogon ~]# mdadm -C /dev/md2 -a yes -l 0 -n 2 /dev/md[01]
mdadm: array /dev/md2 started.
查看陣列狀態(tài):
[root@bogon ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [raid0] [raid1]
md2 : active raid0 md0[0] md1[1]
9783232 blocks 64k chunks
md1 : active raid1 sdb2[0] sdc2[1]
4891712 blocks [2/2] [UU]
md0 : active raid1 sdb1[0] sdc1[1]
4891648 blocks [2/2] [UU]
unused devices: <none>
創(chuàng)建配置文件:
[root@bogon ~]# mdadm -Ds > /etc/mdadm.conf
停止與開(kāi)啟陣列:
[root@bogon ~]# mdadm -Ss
mdadm: stopped /dev/md2
mdadm: stopped /dev/md1
mdadm: stopped /dev/md0
[root@bogon ~]# mdadm -As
mdadm: /dev/md0 has been started with 2 drives.
mdadm: /dev/md1 has been started with 2 drives.
mdadm: /dev/md2 has been started with 2 drives.
##上述關(guān)閉與開(kāi)啟過(guò)程,系統(tǒng)能只能識(shí)別層級(jí),關(guān)閉先關(guān)閉上層,
##后開(kāi)啟上層;防止了沖突;
關(guān)于“Linux陣列RAID的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
文章名稱:Linux陣列RAID的示例分析
網(wǎng)站鏈接:http://www.rwnh.cn/article2/gsphic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開(kāi)發(fā)、軟件開(kāi)發(fā)、關(guān)鍵詞優(yōu)化、品牌網(wǎng)站設(shè)計(jì)、手機(jī)網(wǎng)站建設(shè)、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)