linux軟raid如何實(shí)現(xiàn)

小編給大家分享一下linux軟raid如何實(shí)現(xiàn),相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比涿州網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式涿州網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋涿州地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴。

1 什么是RAID,RAID的級(jí)別和特點(diǎn) ;


什么是RAID呢?全稱是 “A Case for Redundant Arrays of Inexpensive Disks (RAID)”,在1987年,由加州大學(xué)伯克利大學(xué)發(fā)表的論文而來,其實(shí)就是這個(gè)標(biāo)題的縮寫就是RAID;中譯為“磁盤陣列”;


RAID就是把幾個(gè)物理磁盤組合在一起成為一個(gè)大的虛擬物理磁盤,主要目的和用途主要有:把若干小容量物理磁盤組成一個(gè)大容量虛擬存儲(chǔ)設(shè)備(以前的物理磁盤的容量都比較?。?;提高物理存儲(chǔ)效率(讀、寫),或提供冗余以提高數(shù)據(jù)存儲(chǔ)的安全性。


根據(jù)應(yīng)用方向的不同,RAID也分不不同級(jí)別 ,有LINEAR、RAID0、RAID1、RAID5、RAID10、RAID4、RAID6、MULTIPATH。常用的有RAID0、RAID1、RAID5、RAID10(其實(shí)就是0+1)、LINEAR




1.1 什么是硬件RAID和軟RAID;


RAID 還分為硬件RAID 和軟件RAID,硬件RAID是通過RAID 卡來實(shí)現(xiàn)的,而軟件RAID是通過軟件來實(shí)現(xiàn)的;在企業(yè)級(jí)應(yīng)用領(lǐng)域,大部份都是硬件RAID。而軟件RAID由于性價(jià)比高,大多被中小型企業(yè)所采用;


硬件RAID是通過RAID卡把若干同等容量大小的硬盤,根據(jù)使用方向的不同,聚合起來成為一個(gè)大的虛擬RAID設(shè)備(或RAID0,或RAID1,或者RAID5,或RAID10……),如果每個(gè)硬盤容量不一致,以最小容量的硬盤為基礎(chǔ);它的成員是整個(gè)硬盤;


軟RAID是軟把若干同等容量大小的硬盤或分區(qū),根據(jù)使用方向的不同,聚合起來成為一個(gè)大的虛擬RAID設(shè)備(或RAID0,或RAID1,或者RAID5,或RAID10……),如果每個(gè)硬盤或分區(qū)容量不一致,以最小容量的硬盤或分區(qū)為基礎(chǔ)。軟RAID的成員是整個(gè)硬盤或分區(qū);


RAID 總的來說還是應(yīng)用在生產(chǎn)型項(xiàng)目領(lǐng)域中,一般在商用辦公或個(gè)人娛樂應(yīng)用并未被大規(guī)模采用。應(yīng)有領(lǐng)域大多要求性價(jià)比級(jí)的低端服務(wù)器或PC-SERVER;




1.2 RAID 的級(jí)別及特點(diǎn);


RAID 有幾種級(jí)別,LINEAR,RAID0 (striping), RAID1 (mirroring), RAID4, RAID5, RAID6, RAID10, MULTIPATH, and FAULTY.其中我們常用有RAID0、RAID1、RAID5、RAID10。


下面我們說說常用的RAID0、RAID1、RAID5以及RAID10;




1.21 什么是軟RAID0及特點(diǎn);


RAID0 是把兩個(gè)或兩個(gè)以上的容量相同的硬盤或分區(qū),通過RAID控制器(硬RAID是通過RAID卡來實(shí)現(xiàn)的,軟RAID 是通過軟件來實(shí)現(xiàn)的),結(jié)合為一個(gè)在容量上是RAID0下成員的容量的總和,在寫入時(shí),要向每個(gè)硬盤或分區(qū)同時(shí)寫入數(shù)據(jù)。


在硬RAID中,RAID0的成員是以整個(gè)硬盤為單位的,把兩個(gè)硬盤或兩個(gè)以上的硬盤通過RAID卡綁定成為一個(gè)虛擬的磁盤設(shè)備,而每個(gè)硬盤就是RAID0的成員;


在軟RAID0中,RAID0的成員是整個(gè)硬盤或分區(qū),容量是加入RAID0的所有成員容量的總和。在RAID0中每個(gè)成員的容量都是相同一致的。比如我們把 /dev/sdb 、/dev/sdc、/dev/sdd 三個(gè)容量大小為80G的硬盤做成RAID0,這時(shí)RAID0設(shè)備的容量就是三個(gè)硬盤的總和 80x3=240G。當(dāng)然我們也可以,在寫入數(shù)據(jù)時(shí),系統(tǒng)要向每個(gè)硬盤同時(shí)寫入數(shù)據(jù),是以條塊的形式寫入。比如我們存一份數(shù)據(jù)linuxsir.tar.gz 到RAID0的設(shè)備中,這份數(shù)據(jù)是分拆成若干份被分散的寫入到RAID0中的每個(gè)成員中。只有RAID0中的每個(gè)成員正常運(yùn)行,并且RAID0也正常運(yùn)行的情況下,這份數(shù)據(jù)才是完整的。RAID0中任何一個(gè)成員(硬盤分區(qū))有有問題時(shí),RAID0便不能運(yùn)行,同時(shí)數(shù)據(jù)也不是完整的;


RAID0 在讀寫速度上是比較快的,是普通不做RAID的兩倍左右(注:實(shí)際速度和機(jī)器的硬件配置有關(guān)),所以RAID0常被用于對(duì)存儲(chǔ)效率要求較高,但對(duì)數(shù)據(jù)安全性要求不高的應(yīng)用解決方案中;


安全性:RAID0中有任何一個(gè)成員出現(xiàn)故障,整個(gè)RAID0就不能被激活。數(shù)據(jù)不能保障;




1.22 什么是軟RAID1及特點(diǎn);


RAID1就是把若干相同容量的硬盤或分區(qū),成員與成員之間是鏡像關(guān)系。在容量上,RAID1設(shè)備是單個(gè)成員的容量。比如兩個(gè)80G的硬盤做成RAID1,這個(gè)RAID1的設(shè)備容量仍是80G。比如我們寫入一個(gè)份數(shù)據(jù)linuxsir.tar.bz2 到RAID1設(shè)備時(shí),其實(shí)是向RAID的每個(gè)成員都寫了一份。比如RAID1設(shè)備下有兩個(gè)成員/dev/sdb和/dev/sdc ,我們寫入linuxsir.tar.bz2 到RAID1時(shí),/dev/sdb和/dev/sdc都有一份完整的linuxsir.tar.bz2。 所以RAID1是冗余的陣列,一般被用于安全性要求比較高的應(yīng)用中。


因?yàn)镽AID1在由于鏡像冗余,所以磁盤利用效率并不高,或者說是“浪費(fèi)”。這種方案相對(duì)來說性價(jià)比并不高,一般很少應(yīng)用。數(shù)據(jù)讀寫效率要比RAID0慢。


安全性:RAID1 中只要有一個(gè)成員是健康的,RAID1完全可以激活,而且數(shù)據(jù)絕對(duì)是完整安全的。如果所有的成員有故障,RAID1也就報(bào)廢了。哈哈,這不是廢話嗎?




1.23 什么是軟RAID5及特點(diǎn);


軟RAID5也是冗余安全的,RAID5是把至少三個(gè)硬盤或分區(qū)通過軟件虛擬成為一個(gè)大的存儲(chǔ)設(shè)備。在容量上是(n-1)x單個(gè)硬盤(分區(qū))容量 ,比如我們用三塊80G硬盤做成RAID5,容量就是兩塊容量的和160G。在寫入上,數(shù)據(jù)被分拆成若干份,分別向RAID5的每個(gè)成員下寫入。比如把linuxsir.tar.bz2寫入RAID5時(shí), 要先把linuxsir.tar.bz2分拆成若干份,分別寫入RAID5成員中。因?yàn)樯婕暗饺哂?,所以?shù)據(jù)在讀入速度上并不是很快,沒辦法和RAID0相比,但RAID5的寫入數(shù)據(jù)速度沒有RAID1和RAID0快,也沒有不做RAID的磁盤寫入速度要快;


因?yàn)镽AID5在容量損失比較小,有冗余安全保障,另外寫入速度比較快,從整體上來看,性價(jià)比比較高,所以被大范圍內(nèi)采用;


安全性:當(dāng)RAID5中的成員中有一個(gè)發(fā)生故障時(shí),RAID5一樣能啟動(dòng)和正常運(yùn)行,只要n-1(注n>3)塊硬盤或分區(qū)的不出故障,RAID5上的數(shù)據(jù)就是安全,對(duì)于一個(gè)文件存到RAID5設(shè)備中,只有成員是n-1(注n>3)無故障時(shí),這份文件才是完整的。 比如RAID5有四個(gè)硬盤(或分區(qū))做的,當(dāng)一個(gè)硬盤或分區(qū)掛掉了,并不影響整個(gè)RAID5上數(shù)據(jù)的完整性和安全性。




1.24 什么是軟RAID10及特點(diǎn);


軟RAID10也是冗余安全陣列,是RAID0+1的集成,RAID10是把至少四個(gè)硬盤或分區(qū)通過軟件虛擬成為一個(gè)大的存儲(chǔ)設(shè)備。在容量是:n/2x單個(gè)硬盤(分區(qū))容量 ,比如我們用四塊80G硬盤做成RAID5,容量就是兩塊容量的和4/2x80=160G。做RAID10所需要的硬盤或分區(qū)個(gè)數(shù)是偶數(shù)的。


RAID10,有RAID1的鏡像特點(diǎn),還有RAID0的速度??梢赃@么理解RAID10,比如有四個(gè)硬盤做成的RAID10,過程是先把每?jī)蓚€(gè)硬盤做成RAID1,然后再兩個(gè)RAID1的基礎(chǔ)上再做成RAID0。從理論上來說,RAID10應(yīng)該繼承RAID0的速度和RAID1的冗余安全。但經(jīng)過我在軟RAID0、RAID1、RAID5、RAID10的測(cè)試過程中發(fā)現(xiàn)RAID10的寫入速度是最慢的,測(cè)試方法是用超過1G的大文件幾盤復(fù)制。結(jié)果發(fā)現(xiàn)速度由高低的順序是:RAID0> 不做RAID>RAID1>RAID5>RAID10




2 在Linux中,軟RAID的創(chuàng)建和管理;


在Linux中,軟RAID是通mdadm來創(chuàng)建和管理的,mdadm 是一個(gè)專用創(chuàng)建和管理RAID的軟件,在Linux中,大多發(fā)行版本已經(jīng)默認(rèn)安裝,mdadm能創(chuàng)建任何級(jí)別的軟RAID;


在本節(jié)中,RAID創(chuàng)建并不是目的,我們還要查看學(xué)會(huì)RAID的狀態(tài),啟動(dòng)、停止RAID。還要學(xué)會(huì)使用RAID。所以RAID的使用應(yīng)該包括創(chuàng)建、管理和使用。 RAID的使用就是在RAID設(shè)備上創(chuàng)建文件系統(tǒng),然后供存儲(chǔ)應(yīng)用;


流程是:


[RAID創(chuàng)建]->[RAID管理]->[RAID的使用]
                            |
                  [RAID的維護(hù)]


2.1 RAID的創(chuàng)建方法;


創(chuàng)建RAID有兩個(gè)方法 ,


第一種方法 :用mdadm 通過-C或--create 參數(shù)來創(chuàng)建RAID。這種方法 ,是把RAID信息寫到每個(gè)RAID成員的 superblocks(超級(jí)塊)中,在每個(gè)RAID成員的超級(jí)塊中,都會(huì)記錄RAID的級(jí)別、成員、RAID的UUID等…… 這種方法把RAID的信息記錄在各個(gè)成員的 superblocks(超級(jí)塊)中。這種方法對(duì)于重裝系統(tǒng)或系統(tǒng)發(fā)生災(zāi)難來來說,有利于現(xiàn)有RAID的恢復(fù);這種方法是最常用的;


第二種方法:用mdadm 通過-B或--build 參數(shù)來創(chuàng)建RAID。這種方法并不把RAID的信息寫入RAID成員的 superblocks(超級(jí)塊中),所以我們無法通過查看RAID成員信息來獲得RAID的級(jí)別,以及RAID的成員等;這種方法對(duì)于重裝系統(tǒng)或系統(tǒng)發(fā)生災(zāi)難來來說,不利于現(xiàn)有RAID的恢復(fù);如果你想用第二種方法來創(chuàng)建RAID,可以在下面的語法中,把-C或--create 換成 -B或--build 。




語法:創(chuàng)建把RAID信息寫入RAID每個(gè)成員的superblocks(超級(jí)塊)中;


mdadm -C   -v  /dev/mdX   -lY   -nZ  RAID成員

mdadm  --create  --verbose  /dev/mdX   --level=Y    --RAID-devices=Z    RAID成員
注:


-C 是--create 的縮寫,表示創(chuàng)建的意思;這種方法是創(chuàng)建把RAID信息寫入每個(gè)RAID成員superblocks(超級(jí)塊)的方法。這是最常用的方法。
-v 和--verbose, 顯示創(chuàng)建過程中詳細(xì)的事件;


如果把-C或--create 換成-B或--build,就是創(chuàng)建RAID的另一種方法,不把RAID信息寫入RAID成員的superblocks(超級(jí)塊)中,如果您試用,請(qǐng)自己嘗試;


RAID設(shè)備: /dev/mdX,RAID設(shè)備在Linux中,大多是/dev/md0,/dev/md1…… 第一個(gè)設(shè)備從/dev/md0開始。 比如你已經(jīng)有RAID0設(shè)備是/dev/md0,你再想做一個(gè)RAID5,那就是/dev/md1,以此類推;


RAID級(jí)別 : 用-lY或--level=Y表示,Y是RAID的級(jí)別。RAID的級(jí)別有RAID0就用0表示,RAID1就用1表示,RAID5就用RAID5表示,RAID10就用10表示。RAID的級(jí)別是根據(jù)自己的使用方向和現(xiàn)有磁盤和分區(qū)個(gè)數(shù)來定位。如果你就想高速讀寫、大容量,對(duì)數(shù)據(jù)安全性要求不高,那就用RAID0,如果對(duì)數(shù)據(jù)要求較高,可以用RAID1或RAID5,再者就是RAID10。比如-l0或--level=0表示RAID0,-l5或--level=5表示RAID5, -l1或--level=1表示RAID1,-l10或--level=10表示RAID10;


-nZ或--RAID-devices=Z 表示RAID成員的個(gè)數(shù),比如我們把三個(gè)硬盤分分區(qū)做成一個(gè)RAID,那就是3個(gè)設(shè)備。就要寫成這樣 -n3或 --RAID-devices=3;值得注意的是RAID0和RAID1至少需要兩個(gè)設(shè)置,RAID5至少需要三個(gè)設(shè)備,RAID10至少四個(gè)設(shè)備;


RAID成員:也就是RAID的組成設(shè)備,要一個(gè)一個(gè)的列出來,每個(gè)設(shè)備后要用空格來隔開;比如我們把/dev/sdb、/dev/sdc、/dev/sdd三個(gè)硬盤做成RAID0,在RAID設(shè)備這塊,我們要寫成 /dev/sdb /dev/sdc /dev/sdd ; 軟件RAID的成員還可以是分區(qū),比如 /dev/sdb1、/dev/sdc1 ……


舉例一:我們要做一個(gè)RAID0,成員是 /dev/sdb、/dev/sdc 兩個(gè)硬盤設(shè)備。 我們要運(yùn)行如下命令;


mdadm  -C  --verbose  /dev/md0 -l0 -n2 /dev/sdb /dev/sdc

mdadm -C  --verbose   /dev/md0   --level=0  --RAID-devices=2  /dev/sdb /dev/sdc
如果我們想把/dev/sdb1 、/dev/sdc1和/dev/sdd1三個(gè)分區(qū)做成RAID0呢?


mdadm  -C  -v  /dev/md0 -l0 -n3 /dev/sd[bcd]1

mdadm -C  --verbose   /dev/md0   --level=0  --RAID-devices=3  /dev/sdb1 /dev/sdc1  /dev/sdd1
舉例二:我們要做一個(gè)RAID5 ,成員是/dev/sdb、/dev/sdc、/dev/sdd 三個(gè)設(shè)備,我們要運(yùn)行如下命令;


mdadm  -C  -v  /dev/md0 -l5 -n3 /dev/sd[bcd]

mdadm -C  --verbose   /dev/md0   --level=5  --RAID-devices=3  /dev/sdb /dev/sdc  /dev/sdd 
如果我們想把/dev/sdb1 、/dev/sdc1和/dev/sdd1三個(gè)分區(qū)做成RAID5呢?


mdadm  -C  -v  /dev/md0 -l5 -n3 /dev/sd[bcd]1 

mdadm -C  --verbose   /dev/md0   --level=5  --RAID-devices=3  /dev/sdb1 /dev/sdc1  /dev/sdd1
創(chuàng)建完成后,RAID也就立即啟動(dòng)了。我們會(huì)發(fā)現(xiàn)有類似如下一行的提示信息:


mdadm: array /dev/md0 started.
我們要可以通過下面的命令來查看RAID的信息;


mdadm -Ds /dev/md0
mdadm -D /dev/md0


2.2 RAID管理工具;


RAID的管理包括創(chuàng)建、啟動(dòng)、狀態(tài)查看等一系列工具;我們只說常用的使用方法;




2.21 RAID的啟動(dòng)方法;


RAID的啟動(dòng)有兩種方法,一種是指定RAID設(shè)備和RAID成員的辦法來啟動(dòng)RAID,另一種辦法是通過加載RAID默認(rèn)的配置文件來啟動(dòng)。




第一種方法:不通過讀取mdadm.conf來啟動(dòng)RAID;適用情況是你沒有配置 /etc/mdadm.conf 文件;


語法:


mdadm -A RAID設(shè)備   RAID成員
注:


-A 同 --assemble ,意思是激活一個(gè)已經(jīng)存在的RAID;
RAID設(shè)備 ,就是/dev/md0 或/dev/md1 …… 根據(jù)你所創(chuàng)建的RAID設(shè)備為準(zhǔn);
RAID成員,就是你要啟動(dòng)的RAID,其下屬設(shè)備有哪些,要一個(gè)一個(gè)的列出來,中間以空格分開;


舉例:比如我要啟動(dòng)一個(gè)RAID,設(shè)備是/dev/md0,其下有成員是 /dev/sdb和/dev/sdc;所以我要用下面的辦法;


[root@linuxsir:~] mdadm  -A /dev/md0  /dev/sdb /dev/sdc
注: 這種情況,是沒有配置RAID的配置文件/etc/mdadm.conf 時(shí),所使用的啟動(dòng)方法;如果您已經(jīng)配置好了/etc/mdadm.conf文件,就可以用 mdadm -As 來啟動(dòng);




第二種方法:利用配置好的/etc/mdadm.conf 來啟動(dòng)RAID;


mdadm -A RAID設(shè)備   

mdadm -As
注: 這種啟動(dòng)方法的前提是要配置 /etc/mdadm.conf文件,要把您系統(tǒng)中所有的RAID,都寫入這個(gè)文件,然后就可以簡(jiǎn)單的用這個(gè)命令來啟動(dòng)了;


-A 同 --assemble ,意思是激活一個(gè)已經(jīng)存在的RAID;
RAID設(shè)備 ,就是/dev/md0 或/dev/md1 …… 根據(jù)你所創(chuàng)建的RAID設(shè)備為準(zhǔn);




舉例:


[root@linuxsir:~] mdadm  -A /dev/md0
[root@linuxsir:~] mdadm -As
注: 比如我配置好/etc/mdadm.conf 后,啟動(dòng)RAID設(shè)備/dev/md0,就用上面的辦法。具體mdadm.conf的寫法,請(qǐng)參見 RAID的配置文件一節(jié);




2.22 RAID管理工具一些常用參數(shù)說明;


mdadm 參數(shù)  [RAID設(shè)備]  [RAID成員]


-A 或  --assemble  激活一個(gè)RAID;
-S 和--stop  停止正在運(yùn)行的設(shè)備;
-s 或 --scan  掃描RAID設(shè)備;
-D 或 --detail 查看RAID的詳細(xì)信息;
--examine  查看RAID成員的詳細(xì)信息;
注:其中[]中的選項(xiàng)是可選的。


舉例:


[root@linuxsir:~]# mdadm -As  
[root@linuxsir:~]# mdadm -Ss
[root@linuxsir:~]# mdadm -Ds
[root@linuxsir:~]# mdadm --examine /dev/sdb
注:上面的些標(biāo)例, 都是在配置好/etc/mdadm.conf 的情況下,運(yùn)行的,如果您沒配置好mdadm.conf文件,請(qǐng)指定RAID設(shè)備及其成員;其中,--As 是搜索/etc/mdadm.conf ,然后根據(jù) mdadm.conf 配置好的RAID信息來啟動(dòng)RAID。 -Ss 是搜索正在運(yùn)行的RAID,然后停止。-Ds 搜索RAID,查看RAID信息; --examine /dev/sdb 是查看其中一塊硬盤的RAID信息,這個(gè)很有用。比如你忘記了RAID的成員和UUID,想恢復(fù)現(xiàn)有的RAID,就要用這個(gè)來查看,然后重新讓RAID啟動(dòng)起來。


比如系統(tǒng)有一個(gè)RAID,但在/etc/mdadm.conf 中沒有相應(yīng)的記錄RAID信息。我不知道這個(gè)RAID是哪個(gè)類型的,是RAID0,還是RAID1,還是RAID5??到底機(jī)器中有幾個(gè)RAID?如果您是一個(gè)新接手的管理員,應(yīng)該想知道這些信息。那就一個(gè)一個(gè)硬盤,一個(gè)一個(gè)的分區(qū)查看過去。從中找出系統(tǒng)中所有的RAID。然后一個(gè)一個(gè)的恢復(fù)。這時(shí)就要用到 --examine這個(gè)參數(shù)了;


[root@linuxsir:~]# fdisk -l 


[root@linuxsir:~]# # mdadm   --examine   /dev/sdb
/dev/sdb:
          Magic : a92b4efc
        Version : 00.90.00
           UUID : 35e1a3e6:ed59c368:e5bc9166:5004fe52
  Creation Time : Wed Aug  1 07:11:43 2007
     RAID Level : RAID0
  Used Dev Size : 0
   RAID Devices : 2
  Total Devices : 2
Preferred Minor : 0


    Update Time : Thu Aug  2 07:43:30 2007
          State : active
Active Devices : 2
Working Devices : 2
Failed Devices : 0
  Spare Devices : 0
       Checksum : 8f8a235e - correct
         Events : 0.29


     Chunk Size : 64K


      Number   Major   Minor   RAIDDevice State
this     0       8       16        0      active sync   /dev/sdb


   0     0       8       16        0      active sync   /dev/sdb
   1     1       8       32        1      active sync   /dev/sdc
注:


首先:我們用fdisk -l 查看一下機(jī)器中所有硬盤和分區(qū),如果不能完全列出,請(qǐng)指定具體硬盤。
其次:我們查看一下某個(gè)硬盤或分區(qū)上是否有RAID信息,比如我查看的是/dev/sdb ,結(jié)果顯示出,/dev/sdb是RAID0設(shè)備的一個(gè)成員,/dev/sdb和/dev/sdc 共同組成的RAID0;


得到這些信息有何用呢?我們就可以激活RAID,或重寫/etc/mdadm.conf ,讓RAID重新運(yùn)行起來。在此過程中, 千萬不要用-C或--create 參數(shù)來重新創(chuàng)建RAID,否則你以前存在的RAID就被破壞,里面的數(shù)據(jù)當(dāng)然也會(huì)一無所有?。?!切記。在一個(gè)有數(shù)據(jù)的RAID中,不能隨便用-C 參數(shù)。如果用了-C或--create 就是創(chuàng)建一個(gè)新的RAID設(shè)備!




2.3 RAID的配置文件;


RAID并不是一定要配置文件,但有配置文件,會(huì)方便管理,比如RAID最精簡(jiǎn)的方法執(zhí)行、狀態(tài)查看………… 也需要RAID的配置文件。如果不沒有配置文件,還要指定RAID成員;


RAID的配置文件是mdadm.conf 位于/etc目錄,如果你沒有這個(gè)文件,可以自己創(chuàng)建一個(gè);當(dāng)我們做好RAID后,首先要配置這個(gè)文件;把你所有的RAID配置信息都寫入這個(gè)文件。 我們可以自己手工編寫。參照mdadm.conf 配置文件的示例就比較方便。


你也可以用下面的辦法,要先做好/etc/mdamd.conf的備份;


[root@linuxsir~] mv  /etc/mdadm.conf /etc/mdadm.conf.bak


第一步:搜索RAID;


搜索RAID是以激活RAID為前掉條件,否則下面的命令不會(huì)有什么作用;請(qǐng)參見激活RAID的辦法;


語法:


mdadm -Ds
注: 其中-D 表示 --detail ,-s 表示--scan ,兩者結(jié)合起來就-Ds;
提示:運(yùn)行查詢RAID的時(shí),要首先激活RAID;


舉例:


[root@linuxsir~] mdadm -Ds 
ARRAY /dev/md0 level=RAID0 num-devices=2 UUID=35e1a3e6:ed59c368:e5bc9166:5004fe52
第二步:查詢RAID的詳細(xì)信息;主要是查看RAID的成員有哪些;


語法:


mdadm -D RAID設(shè)備
舉例:


下面查詢已經(jīng)啟動(dòng)了的RAID設(shè)備/dev/md0的詳細(xì)信息;


[root@linuxsir~] mdadm -D  /dev/md0  


/dev/md0:
        Version : 00.90.03
  Creation Time : Wed Aug  1 07:11:43 2007
     RAID Level : RAID0
     Array Size : 156249856 (149.01 GiB 160.00 GB)
   RAID Devices : 2
  Total Devices : 2
Preferred Minor : 0
    Persistence : Superblock is persistent


    Update Time : Thu Aug  2 07:22:27 2007
          State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
  Spare Devices : 0


     Chunk Size : 64K


           UUID : 35e1a3e6:ed59c368:e5bc9166:5004fe52
         Events : 0.21


    Number   Major   Minor   RAIDDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
注:通過查詢?cè)敿?xì)信息,我們得到 /dev/md0是RAID0,下面兩個(gè)成員/dev/sdb和/dev/sdc ;UUID為 35e1a3e6:ed59c368:e5bc9166:5004fe52 ;這個(gè)RAID是有超級(jí)塊的;


第三步:書寫RAID的配置文件mdadm.conf;


[root@linuxsir~] mdadm -Ds  >> /etc/mdadm.conf   注:把查詢出來的RAID信息寫到mdadm.conf中;
[root@linuxsir~]more /etc/mdadm.conf  注:看看有沒有內(nèi)容寫進(jìn)來?
ARRAY /dev/md0 level=RAID0 num-devices=2 UUID=35e1a3e6:ed59c368:e5bc9166:5004fe52
因?yàn)槲覀冊(cè)谇懊嬉呀?jīng)通過mdadm -D /dev/md0 得知其下有成員/dev/sdb 和 /dev/sdc 兩塊硬盤。所以我們要修改一下mdamd.conf的內(nèi)容。要在加上/dev/md0的成員/dev/sdb和/dev/sdc;用編輯器打開/etc/mdadm.conf;


在下面類似的一行;


ARRAY /dev/md0 level=RAID0 num-devices=2 UUID=35e1a3e6:ed59c368:e5bc9166:5004fe52
修改成


ARRAY /dev/md0 level=RAID0 num-devices=2 UUID=35e1a3e6:ed59c368:e5bc9166:5004fe52 devices=/dev/sdb,/dev/sdc
其實(shí)也就是把/dev/md0這個(gè)RAID設(shè)備的成員指定出來,每個(gè)設(shè)備之間要用,號(hào)隔開?;蛘邔懗?devices=/dev/sd[bc]類似的寫法也行;


我們來看一下/dev/md0這行,其中/dev/md0這行是一個(gè)RAID0設(shè)備,由兩個(gè)成員組成,/dev/md0的UUID為 UUID=35e1a3e6:ed59c368:e5bc9166:5004fe52 ,兩個(gè)成員分別是/dev/sdb和/dev/sdc兩個(gè)硬盤;


其實(shí)我們無論添加多少RAID設(shè)備,都可以通過這種方法寫入RAID配置文件/etc/mdadm.conf中,每個(gè)RAID設(shè)備一行;寫好后,我們要重啟一下RAID;


[root@linuxsir~] mdadm -Ss

[root@linuxsir~] mdadm --stop --scan
mdadm: stopped /dev/md0




[root@linuxsir~] mdadm -As 

[root@linuxsir~] mdadm  --assemble --scan 


mdadm: /dev/md0 has been started with 2 drives.
注: -S 和--stop相同,表示停止RAID。而-s和 --scan相同,表示掃描RAID。-A和--assemble表示激活RAID;這些參數(shù)都比較簡(jiǎn)單,查查man和help就知道了;


激活RAID后,我們要通過查看RAID的狀態(tài)來判斷RAID是否正常和健康……




3 RAID設(shè)備的使用:RAID設(shè)備分區(qū)、文件系統(tǒng)初始化,掛載方法;


既然我們已經(jīng)把RAID設(shè)備做好了,我們就要使用這個(gè)設(shè)備。RAID做好后,類似一個(gè)沒有格式化的新硬盤。如果我們拿到新硬盤時(shí)第一步是做什么?對(duì),是分區(qū)和格式化,安裝操作系統(tǒng)。RAID做好后,沒有文件系統(tǒng),一樣是沒辦法用的,所以我們做好RAID后,要來創(chuàng)建文件系統(tǒng);RAID只不過是把幾個(gè)硬盤或分區(qū)綁定在一起成為一個(gè)大的虛擬物理存儲(chǔ)設(shè)備。如果我們要對(duì)這個(gè)大的虛擬設(shè)備進(jìn)行使用,就要在這個(gè)設(shè)備上創(chuàng)建文件系統(tǒng)才行。Linux 目前可用的文件系統(tǒng)有reiserfs、xfs、ext3,我推薦reiserfs和xfs,感覺這個(gè)比較安全點(diǎn)。雖然現(xiàn)在有超強(qiáng)的zfs,但我認(rèn)為還是處于小白鼠階段。對(duì)于重量級(jí)應(yīng)用來說,我們還是觀察一段時(shí)間再說。


RAID做好后,我們要為它進(jìn)行文件系統(tǒng)初始化,當(dāng)初始化完成后,我們就可以掛載使用了。在一般情況下,我們可以把做好的RAID掛載到/home,我們可以把所有的存儲(chǔ)性文件。


在Linux中,創(chuàng)建文件系統(tǒng)的工具有 mkfs.xfs(創(chuàng)建xfs文件系統(tǒng)), mkfs.jfs(創(chuàng)建JFS文件系統(tǒng)), mkfs.reiserfs (創(chuàng)建reiserfs文件系統(tǒng)), mkfs.ext3 (創(chuàng)建ext3文件系統(tǒng))…… 。我們推薦的是reiserfs和xfs,不推薦ext2或ext3,為什么不推薦?因?yàn)閷?shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),性能不如人、安全性不如人,怎么用?我不是ext文件系統(tǒng)的專家,我只用最方便,維護(hù)起來比較容易的文件系統(tǒng)。


RAID也可以分區(qū)來使用,但以我看來,大可不必,凡是能用到RAID的,大多是服務(wù)器領(lǐng)域。我們可以把RAID做成后,掛載到/home目錄上。有關(guān)數(shù)據(jù)存儲(chǔ)的都放在RAID上。操作系統(tǒng)并不安裝在RAID上,當(dāng)操作系統(tǒng)發(fā)生故障的時(shí)候,我們僅僅是修復(fù)或重裝操作系統(tǒng),對(duì)數(shù)據(jù)存儲(chǔ)的RAID沒有任何影響。就是重裝操作系統(tǒng),我們也能在幾分鐘之內(nèi)恢復(fù)RAID。


如果您想把RAID再進(jìn)進(jìn)行分區(qū)使用,可以用fdisk 、parted或cfdisk 來進(jìn)行分區(qū)工作,也可以嘗試LVM的來對(duì)分區(qū)進(jìn)行管理,LVM能自動(dòng)調(diào)整分區(qū)的大小。當(dāng)然,我不會(huì)推薦RAID+LVM,或?qū)AID進(jìn)行分區(qū)操作。


RAID做好后,我們就像使用物理硬盤一樣使用它,比如根據(jù)前面的例子,把/dev/sdb和/dev/sdc兩個(gè)硬盤做成RAID0,其設(shè)備為/dev/md0,我們就可以對(duì)/dev/md0進(jìn)行和物理硬盤一樣的操作。如果我們不分區(qū),只是進(jìn)行創(chuàng)建文件系統(tǒng),那就比較簡(jiǎn)單了。


比如我們?cè)?dev/md0上創(chuàng)建reiserfs文件系統(tǒng),我們可以用mkfs.reiserfs命令來完成。




第一步:查看/dev/md0設(shè)備是否存在,以及它的容量;


[root@linuxsir:~]# fdisk -l /dev/md0


Disk /dev/md0: 159.9 GB, 159999852544 bytes
2 heads, 4 sectors/track, 39062464 cylinders
Units = cylinders of 8 * 512 = 4096 bytes


Disk /dev/md0 doesn't contain a valid partition table
注:我們可以看到/dev/md0設(shè)備有 158.0GB的容量,不包含有效分區(qū)。如果您想要用分區(qū)操作,請(qǐng)用fdisk /dev/md0 、或cfdisk /dev/md0 或parted /dev/md0來操作;




第二步:創(chuàng)建文件系統(tǒng);


在這里我們是計(jì)劃用 reiserfs 文件系統(tǒng);


[root@linuxsir:~]# mkfs.reiserfs  /dev/md0 


mkfs.reiserfs 3.6.19 (2003 www.namesys.com)


A pair of credits:
Nikita Danilov  wrote  most of the core  balancing code, plugin infrastructure,
and directory code. He steadily worked long hours, and is the reason so much of
the Reiser4 plugin infrastructure is well abstracted in its details.  The carry 
function, and the use of non-recursive balancing, are his idea.


Oleg Drokin was the debugger for  V3 during most of the time that  V4 was under
development,  and was quite  skilled and fast at it.  He wrote  the large write
optimization of V3.




Guessing about desired format.. Kernel 2.6.21.5-smp is running.
Format 3.6 with standard journal
Count of blocks on the device: 39062464
Number of blocks consumed by mkreiserfs formatting process: 9404
Blocksize: 4096
Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 18)
Journal Max transaction length 1024
inode generation number: 0
UUID: 2b06b743-8a4e-4421-b857-68eb2176bc50
ATTENTION: YOU SHOULD REBOOT AFTER FDISK!
        ALL DATA WILL BE LOST ON '/dev/md0'!
Continue (y/n):y  注:在這里輸入y ,就進(jìn)行創(chuàng)建文件系統(tǒng)了;
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok


Tell your friends to use a kernel based on 2.4.18 or later, and especially not a
kernel based on 2.4.9, when you use reiserFS. Have fun.


ReiserFS is successfully created on /dev/md0.
這樣文件系統(tǒng) reiserfs 就創(chuàng)建成功了。如果您想創(chuàng)建xfs文件系統(tǒng),就用mkfs.xfs /dev/md0 ,其它文件系統(tǒng)也類似 ……




第三步:掛載文件系統(tǒng)并使用;


[root@linuxsir:~]# mkdir /mnt/data
[root@linuxsir:~]# mount /dev/md0 /mnt/data 
[root@linuxsir:~]# df -lh /dev/md0


文件系統(tǒng)              容量  已用 可用 已用% 掛載點(diǎn)
/dev/md0              150G   33M  149G   1% /mnt/RAID0
注: 這樣就就/dev/md0 設(shè)備掛載到/mnt/RAID0上了??梢钥吹皆O(shè)備大小為150G。已使用33M,掛載點(diǎn)為/mnt/RAID0。我們可以向設(shè)備里存儲(chǔ)文件;


其實(shí)根據(jù)Linux文件系統(tǒng)的結(jié)構(gòu),以及最新Linux軟件方便易用的特點(diǎn)。我們完全可以把/home獨(dú)立出來。把RAID設(shè)備掛載到/home目錄上。凡是涉及用戶或數(shù)據(jù)存儲(chǔ)的,都可以放在/home中,比如數(shù)據(jù)庫,網(wǎng)絡(luò)服務(wù)器有關(guān)數(shù)據(jù)存儲(chǔ)的,都指定到 /home中的文件夾中。所有的一切都是根據(jù)方便管理為前提。


如果您的RAID是在安裝系統(tǒng)后創(chuàng)建的,如果掛載到Linux現(xiàn)有目錄下,要先做好相應(yīng)目錄的數(shù)據(jù)遷移到RAID設(shè)備中,然后再把RAID掛載到Linux目錄中。比如你想把RAID掛載到/home目錄中,可以先創(chuàng)建一個(gè)臨時(shí)的目錄,把RAID掛到這個(gè)臨時(shí)的目錄上,接著再把/home目錄下的文件都移到 RAID上,然后再把RAID卸載,再重新掛載到/home中,這樣/home的數(shù)據(jù)就完遷移了。


至于如何把操作系統(tǒng)安裝或移到RAID上,不同的Linux發(fā)行版有不同的方法。Fedora或Redhat在安裝的過程中,就為我們提供了在RAID1上安裝系統(tǒng)。其它的發(fā)行版是否支持,不太知道,Slackware是不支持。如果您想把系統(tǒng)移植到RAID1中,可能需要安裝好系統(tǒng)后,再進(jìn)行移植。 感覺軟RAID1在一塊硬盤上做,沒太大的必要,如果要做RAID1,也要在兩個(gè)硬盤上(或兩個(gè)屬于不同硬盤的分區(qū)上來做)。


如何開機(jī)掛載RAID設(shè)備,不同的發(fā)行版也有自己的方法,流程是先激活RAID,然后才是掛載。




4 軟RAID的高級(jí)進(jìn)階及維護(hù);


RAID做好以后,并不是萬事大吉了,還要進(jìn)行日常維護(hù);比如某個(gè)硬盤(或分區(qū))壞掉,我們可以在不停機(jī)的情況下?lián)Q上?;蛘呶覀?yōu)镽AID做一個(gè)冗余的硬盤或分區(qū),當(dāng)RAID發(fā)生故障時(shí),冗余硬盤或分區(qū)自動(dòng)推上工作,能實(shí)現(xiàn)零停機(jī)任務(wù)。




4.1 如何向已存在的RAID中,添加一塊硬盤或分區(qū);


RAID有幾種模式,比如創(chuàng)建、管理。下面我們所說的就是RAID的管理模式Manage,也可以說是RAID的進(jìn)階應(yīng)用。管理模式的目的,僅僅是為了把有問題的RAID成員換掉,或者為了管理的需要把其中一個(gè)RAID成員由另一個(gè)來替換,也可能是為了安全需要,讓新增加的硬盤或分區(qū)當(dāng)做RAID的備用(spare)成員;在管理模式中, RAID的真正成員個(gè)數(shù)并不改變。比如我們做RAID5是,用的是三個(gè)硬盤或分區(qū)。在增加RAID成員時(shí),RAID5仍是三個(gè)成員,容量還是保持不變,如果三個(gè)RAID成員完全正常健康,新增加的成員,僅僅是備用(spare)成員。備用成員的用途就是當(dāng)RAID的真正成員發(fā)生問題時(shí),備用成員會(huì)馬上啟動(dòng),僅僅是起到安全的冗余的作用;


我們要向一個(gè)既已存在RAID中,添加或移除一個(gè)硬盤或分區(qū),我們要用到mdadm 工具的 -f 和-r 以及-a 參數(shù);


mdadm /dev/mdX -f RAID成員
mdadm /dev/mdX -r RAID成員
mdadm /dev/mdX -a RAID成員
注:


-f 同 --fail 表示把一個(gè)設(shè)備列為有問題的設(shè)備,以便用-r或--remove參數(shù)移除;
-r 同 --remove 表示把RAID中的一個(gè)成員移出RAID;
-a 同 --add 表示向一個(gè)RAID中添加一個(gè)成員;
--re-add 重新把最近移除的RAID成員重新添加到RAID中;


值得一提的是,這些參數(shù)的運(yùn)用,必須是在RAID正常運(yùn)行的情況下進(jìn)行。其中RAID設(shè)備是/dev/mdX,X是一個(gè)大于0的整數(shù),RAID成員是一個(gè)硬盤或分區(qū)。添加設(shè)備并不會(huì)把RAID的容量擴(kuò)大,僅僅是為了添加備用成員,比如在RAID1、RAID5和RAID10中特加有用。當(dāng)一個(gè)RAID成員發(fā)生故障的時(shí)候,要用這種辦法來讓新成員頂替工作;


舉例:


[root@linuxsir:~]# mdadm /dev/md0 -f /dev/sdb3 
[root@linuxsir:~]# mdadm /dev/md0 -r /dev/sdb3
[root@linuxsir:~]# mdadm /dev/md0 -a /dev/sdb5
注:當(dāng)我們想把一個(gè)RAID的成員/dev/sdb3移除 RAID設(shè)備/dev/md0時(shí),要首先標(biāo)注它為有問題的(也可能是完全正常的,為了管理需要)。然后 用-r參數(shù)移除,接著用-a 參數(shù)再添加一個(gè)設(shè)備/dev/sdb5到RAID設(shè)備/dev/md0中;


當(dāng)我們用mdadm -D /dev/md0查看RAID的狀態(tài)時(shí),我們會(huì)看到RAID的詳細(xì)信息。比如是否正常、RAID成員…… 下面是我們需要掌握的;




Raid Level : 注:陣列級(jí)別;比如Raid5
Array Size : 注:陣列容量大小;
Used Dev Size : 注:RAID單位成員容量大小,也就是構(gòu)成RAID的成員硬盤或分區(qū)的容量的大??;
Raid Devices : 注:RAID成員的個(gè)數(shù);
Total Devices : RAID中下屬成員的總計(jì)個(gè)數(shù),因?yàn)檫€有冗余硬盤或分區(qū),也就是spare,為了RAID的正常運(yùn)珩,隨時(shí)可以推上去加入RAID的;
State : clean, degraded, recovering 注:狀態(tài),包括三個(gè)狀態(tài),clean表示正常, degraded 表示有問題, recovering 表示正在恢復(fù)或構(gòu)建;
Active Devices : 被激活的RAID成員個(gè)數(shù);
Working Devices : 注:正常的工作的RAID成員個(gè)數(shù);
Failed Devices : 出問題的RAID成員;
Spare Devices : 備用RAID成員個(gè)數(shù),當(dāng)一個(gè)RAID的成員出問題時(shí),用其它硬盤或分區(qū)來頂替時(shí),RAID要進(jìn)行構(gòu)建,在沒構(gòu)建完成時(shí),這個(gè)成員也會(huì)被認(rèn)為是spare設(shè)備;
Rebuild Status : 注:RAID的構(gòu)建進(jìn)度,比如 38% complete ,表示構(gòu)建到 38%;
UUID : 注:RAID的UUID值,在系統(tǒng)中是唯一的;


Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1 注:表示這個(gè)成員是激活的;
1 8 18 1 active sync /dev/sdb2 注:表示這個(gè)成員是激活的;
4 8 19 2 spare rebuilding /dev/sdb3 注:未被激活,正在構(gòu)建中的成頁,正在傳輸數(shù)據(jù);


3 8 49 - spare /dev/sdd1


注:spare /dev/sdd1 表示/dev/sdd1是RAID的備用成員,當(dāng)RAID的正式成員/dev/sdb1、/dev/sdb2或/dev/sdb3中有一個(gè)出問題的時(shí)候,這個(gè)備用成員會(huì)自動(dòng)進(jìn)行工作的。這個(gè)并不是必須的,可以用添加RAID成員的辦法來添加,也可以在創(chuàng)建的RAID的時(shí)候添加;




4.2 如何為一個(gè)現(xiàn)有RAID擴(kuò)充容量;


在RAID的管理模式中,我們提到增加RAID成員的辦法,如果RAID所有真正成員都是健康的,這個(gè)成員就進(jìn)入備用(spare)狀態(tài)。只有當(dāng)真正成員有問題時(shí),這個(gè)備用成員才啟用頂替出問題的成員來工作。


但我們能不能向RAID添加一個(gè)新成員,并且讓他成為RAID的真正成員,并且達(dá)到為RAID擴(kuò)充容量呢?比如有一個(gè)RAID5,用的是3個(gè)20G 的分區(qū)做的,其總?cè)萘渴?3-1)x20=40G,我們能否為這個(gè)RAID5新增加一個(gè)20G的分區(qū),并且讓其成為這個(gè)RAID5真正的成員,并且達(dá)到擴(kuò)充容量的目的,也就是說讓這個(gè)RAID5有四個(gè)真正的成員,其容量為(4-1)x20=60G。


在硬RAID中,這個(gè)工作比較容易,但在軟RAID中,是否能實(shí)現(xiàn)呢?答案是肯定的,這種情況僅針對(duì)已經(jīng)做好的RAID,并且已經(jīng)在存儲(chǔ)過程中發(fā)現(xiàn)RAID容易不足的情況下使用。如果是一個(gè)新做的RAID,我們發(fā)現(xiàn)計(jì)劃錯(cuò)了,我們重新做一次就行了,沒必要用擴(kuò)容的辦法。


我們?yōu)楝F(xiàn)有的RAID擴(kuò)充容量,利用的就是RAID的Grow模式,中譯為RAID的增長(zhǎng)模式;應(yīng)用范圍是RAID1、RAID4、RAID5、RAID6。


RAID擴(kuò)容流程:


向一個(gè)已經(jīng)存在的RAID中添加一個(gè)成員->執(zhí)行擴(kuò)容指令
注: 在這里我們要用到RAID的管理模式中的添加成員的辦法。也就是用到mdadm 中的-a 參數(shù),請(qǐng)參考上一節(jié)的內(nèi)容。這時(shí)添加的成員是備用(spare)成員,我們要把備用成員“推”到位置上。這時(shí)我們要用到mdadm的Grow模式;


舉例說明:


比如我們做的RAID5,由三個(gè)硬盤分區(qū)/dev/sdb1、/dev/sdc1、/dev/sdd1構(gòu)成,這時(shí)的RAID5真正成員就是3個(gè)。當(dāng)我們添加一個(gè)分區(qū)/dev/sdb2到這個(gè)RAID5時(shí),新增加的這個(gè)sdb2就是這個(gè)RAID5R 的備用(spare)成員。比如已有的RAID5的設(shè)備是/dev/md0;


·  首先,查看RAID狀態(tài);
[root@linuxsir:~]# mdadm -D /dev/md0 
/dev/md0:
        Version : 00.90.03
  Creation Time : Tue Aug  7 01:55:23 2007
     Raid Level : raid5  注:RAID級(jí)別;
     Array Size : 39069824 (37.26 GiB 40.01 GB) 注:RAID容量是 39069824
  Used Dev Size : 19534912 (18.63 GiB 20.00 GB) 注:RAID中每個(gè)成員的容量是19534912 
   Raid Devices : 3 注:RAID真正成員是3個(gè)設(shè)備構(gòu)成;
  Total Devices : 3  注: 總共設(shè)備是3個(gè);
Preferred Minor : 0
    Persistence : Superblock is persistent


    Update Time : Tue Aug  7 02:02:33 2007
          State : clean  注:狀態(tài)正常;
Active Devices : 3   注:激活的設(shè)備是3個(gè);其實(shí)就是RAID真正成員正常激活的個(gè)數(shù);
Working Devices : 3   注:正常工作的設(shè)備是3個(gè);
Failed Devices : 0  注:有問題的設(shè)備是0個(gè);
  Spare Devices : 0 注:備用設(shè)備是0個(gè);


         Layout : left-symmetric
     Chunk Size : 64K


           UUID : faea1758:0e2cf8e0:800ae4b7:b26f181d  注:RAID的UUID;
         Events : 0.16


    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1  注:RAID真正成員/dev/sdb1
       1       8       33        1      active sync   /dev/sdc1  注:RAID真正成員/dev/sdc1
       2       8       49        2      active sync   /dev/sdd1  注:RAID真正成員/dev/sdd1
·  其次,我們?yōu)檫@個(gè)RAID5添加一個(gè)成員;
把/dev/sdb2添加到RAID設(shè)備/dev/md0,然后查看RAID的狀態(tài)及詳細(xì)信息;


[root@linuxsir:~]# mdadm /dev/md0 -a /dev/sdb2  注:添加分區(qū)/dev/sdb2到/dev/md0中;
mdadm: added /dev/sdb2  




[root@linuxsir:~]# mdadm -D /dev/md0   注:查看/dev/md0的詳細(xì)信息;
/dev/md0:
        Version : 00.90.03
  Creation Time : Tue Aug  7 01:55:23 2007
     Raid Level : raid5   注:RAID級(jí)別;raid5 
     Array Size : 39069824 (37.26 GiB 40.01 GB)   注:RAID容量是 39069824
  Used Dev Size : 19534912 (18.63 GiB 20.00 GB)  注:RAID中每個(gè)成員的容量是19534912 
   Raid Devices : 3  注:RAID真正成員是3個(gè)設(shè)備構(gòu)成;
  Total Devices : 4  注: 總共設(shè)備是4個(gè);
Preferred Minor : 0
    Persistence : Superblock is persistent


    Update Time : Tue Aug  7 02:14:13 2007
          State : clean  注:狀態(tài)正常;
Active Devices : 3 注:激活的設(shè)備是3個(gè);其實(shí)就是RAID真正成員正常激活的個(gè)數(shù);
Working Devices : 4   注:正常工作的設(shè)備是4個(gè);
Failed Devices : 0
  Spare Devices : 1


         Layout : left-symmetric
     Chunk Size : 64K


           UUID : faea1758:0e2cf8e0:800ae4b7:b26f181d
         Events : 0.18


    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1  注:RAID真正成員/dev/sdb1
       1       8       33        1      active sync   /dev/sdc1  注:RAID真正成員/dev/sdc1
       2       8       49        2      active sync   /dev/sdd1  注:RAID真正成員/dev/sdd1


       3       8       18        -      spare   /dev/sdb2  注:注:RAID備用成員/dev/sdb2
添加/dev/sdb2到/dev/md0后,我們發(fā)現(xiàn)RAID的組成設(shè)備總數(shù)由3個(gè)變成了4個(gè),但真正成員個(gè)數(shù)并沒有變化,多出了一個(gè)備用成員/dev/sdb2。但/dev/md0的容量并沒有變大。 所以這時(shí)我們要為RAID來擴(kuò)容,解決辦法就是讓/dev/sdb2成為RAID的真正成員,RAID的容易由 40G擴(kuò)展到 60G;


·  第三,為RAID進(jìn)行擴(kuò)充容量;
在這里我們要用到RAID的Grow模式,也就是增長(zhǎng)模式。擴(kuò)充模式,極為簡(jiǎn)單,有--size參數(shù),-n參數(shù) --size是指大定RAID的大小,這個(gè)可以省略,具體由你所做的RAID級(jí)別而定。 -n 代表RAID真正成員的個(gè)數(shù)。在這個(gè)例子中,RAID5真正成員是3個(gè),后來我們又添加了一個(gè)備用成員/dev/sdb2進(jìn)去。我們所做的就是把這個(gè)備用成員“推”到真正成員的位置上。也就是說RAID的真正成員由3個(gè)變成4個(gè)。只是這一簡(jiǎn)單的指令,就可以讓RAID5容量增加起來。


[root@linuxsir:~] # mdadm -G /dev/md0   -n4 


mdadm: Need to backup 384K of critical section..
mdadm: ... critical section passed.
然后我們查看RAID的詳細(xì)信息;


[root@linuxsir:~] # mdadm -D /dev/md0
/dev/md0:
        Version : 00.91.03
  Creation Time : Tue Aug  7 01:55:23 2007
     Raid Level : raid5
     Array Size : 39069824 (37.26 GiB 40.01 GB)  注:RAID的容量,我們發(fā)現(xiàn)RAID的容量并沒有增大,這是因?yàn)闃?gòu)建沒有完成;等構(gòu)建完成時(shí)就會(huì)改變過來;
  Used Dev Size : 19534912 (18.63 GiB 20.00 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 0
    Persistence : Superblock is persistent


    Update Time : Tue Aug  7 02:36:06 2007
          State : clean, recovering  注:正常,恢復(fù)中;
Active Devices : 4  注:RAID的正式成員已經(jīng)變到4個(gè);
Working Devices : 4
Failed Devices : 0
  Spare Devices : 0 注:備用成員由1個(gè),減少到0個(gè);說明已經(jīng)把RAID備用成員推到了RAID的正式成員中;


         Layout : left-symmetric
     Chunk Size : 64K


Reshape Status :  17% complete  注:RAID重新構(gòu)建狀態(tài),已經(jīng)完成17%;目前并未完成構(gòu)建;
  Delta Devices : 1, (3->4) 注:RAID的正式成員增加一個(gè),由3個(gè)到4個(gè);


           UUID : faea1758:0e2cf8e0:800ae4b7:b26f181d
         Events : 0.100


    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
       3       8       18        3      active sync   /dev/sdb2 注:/dev/sdb2已經(jīng)由spare改變到 active ,也就是說由備用
當(dāng)執(zhí)行完增容后,我們發(fā)現(xiàn)RAID的容量并沒有增大,這是因?yàn)闃?gòu)建沒有完成,等RAID完成構(gòu)建后,RAID的容量就會(huì)改變?yōu)?19534912x(4-1)=58604736K=60G;構(gòu)建進(jìn)度也可以cat /proc/mdstat 來查看。


新增加一個(gè)RAID正式成員的辦法,不會(huì)讓RAID原有的數(shù)據(jù)丟失,也不會(huì)破壞原有的數(shù)據(jù)。所以這種辦法對(duì)RAID已經(jīng)存儲(chǔ)大量數(shù)據(jù),當(dāng)容量發(fā)生危機(jī)時(shí)而不損失原有數(shù)據(jù)的前提下,所采用的一種安全可行的擴(kuò)容辦法; 當(dāng)然擴(kuò)容后,你要修改 /etc/mdadm.conf;




4.3 RAID正式成員個(gè)數(shù)達(dá)不到RAID啟動(dòng)要求時(shí),如何啟動(dòng)RAID;


可能存在這樣一種狀況,當(dāng)RAID的一個(gè)正式成員掛掉后,這時(shí)RAID按以前說的常規(guī)辦法是不能啟動(dòng)的。這時(shí)我們要強(qiáng)制啟動(dòng),要用到--run 參數(shù);比如當(dāng)做RAID5時(shí),我們用到了三個(gè)硬盤或分區(qū),當(dāng)其中有一個(gè)掛掉,按RAID5的特點(diǎn)來說,數(shù)據(jù)一樣是安全完整的,但RAID5啟動(dòng)按常規(guī)辦法是必須要達(dá)到做RAID時(shí)所指定的正式成員個(gè)數(shù),這時(shí)按常規(guī)啟動(dòng)辦法是不行的,我們要用到--run參數(shù);


我們舉個(gè)例子。比如RAID5正式成員有3個(gè)/dev/sdb1,/dev/sdb2,/dev/sdb3,我們只用/dev/sdb1和/dev/sdb2來啟動(dòng)RAID5;


[root@linuxsir:~] # mdadm -A --run /dev/md0  /dev/sdb1 /dev/sdb2


5 軟RAID設(shè)備使用方向的探討;


對(duì)于軟RAID是把幾個(gè)同容量的物理磁盤或分區(qū)組成一個(gè)大的虛擬設(shè)備來用,我們應(yīng)用方向是什么呢?通過RAID的定義,我們可以知道RAID是為了解決容量、讀寫效率以及磁盤冗余安全而提出來的。




5.1 僅僅是為了擴(kuò)充存儲(chǔ)可用空間,是否必需做RAID;


如果是僅僅解決容量問題,我看大可不必用RAID。因?yàn)長(zhǎng)VM比RAID更為靈活,無論怎么做,都不會(huì)帶來容易上的損失。而只有RAID0和 LINEAR 級(jí)別才不會(huì)帶來容量上的損失,RAID1、RAID5和RAID10由于要有安全冗余,所以RAID的容量必然減少;


LVM 技術(shù)能把所有空閑硬盤或分區(qū)結(jié)合在一起來使用,并不要求每個(gè)分區(qū)或硬盤大小容易是一致的,而RAID必須要求每個(gè)RAID成員容量大小相同,如果不相同,以最小的成員的容易計(jì)算,這個(gè)損失還不算,還要有安全冗余帶來的容量損失,比如把兩塊80G的硬盤做成RAID1,這時(shí)的RAID1是一塊硬盤的容量。LVM做好后,也相當(dāng)于一個(gè)空白的虛擬設(shè)備,可以在上面劃成一個(gè)分區(qū)來使用,也可以劃分幾個(gè),如果劃成幾個(gè),我們還可以自動(dòng)調(diào)整分區(qū)的大小。而RAID一但做好,如果再進(jìn)行分區(qū),分區(qū)的容量是沒辦法自由調(diào)整的;


有的弟兄會(huì)問,我是不是做好RAID,然后在RAID上再做LVM,也就是RAID+LVM模式。這種方案實(shí)現(xiàn)起來并不困難,但對(duì)于軟RAID來說,這種方案是否真的價(jià)值? 我們用RAID的目的無非是“容量+讀寫效率+安全”。我們有必要把做好的RAID再分割的四分五裂嗎? 我感覺沒必要,因?yàn)閷?duì)于存儲(chǔ)設(shè)備來說,每增強(qiáng)一項(xiàng)管理技術(shù),就意味著風(fēng)險(xiǎn),這種風(fēng)險(xiǎn)一是來自于管理員技術(shù)水平,二是來自于設(shè)備老化。另外集中于不分區(qū)的存儲(chǔ)設(shè)備,也能為數(shù)據(jù)遷移和系統(tǒng)管理帶來方便;




5.2 在同一個(gè)硬盤做RAID是否有必要;


在同一塊硬盤上做RAID是否有必要,如果您是想提高數(shù)據(jù)讀寫速度,還是有必要的。RAID0就能為你帶來這種高速存儲(chǔ)的快感。如果您想在同一塊硬盤上做軟RAID,想同時(shí)兼顧效率和安全,我看大可以免了。因?yàn)橛脖P一壞掉,什么重要的數(shù)據(jù)都會(huì)一鍋爛;




5.3 軟RAID的合理使用方向;


目前支持SATA主板的機(jī)器只能技術(shù)最多四塊硬盤。比如四個(gè)80G的SATA硬盤,IDE硬盤也同理;我們要根據(jù)自己的使用方向來做RAID。下面我根據(jù)一個(gè)示例來說明RAID的合理使用方向;


第一個(gè)硬盤分區(qū)情況:


/dev/sda1  20G大小     
/dev/sda2  20G大小     
/dev/sda3  20G大小    
-----/dev/sda5  swap 分區(qū)  -內(nèi)存兩倍大小
-----/dev/sda6   用于/tmp  2G大?。?br/>-----/dev/sda7 
注:我們首先把操作系統(tǒng)安裝到第一個(gè)分區(qū)/dev/sda1 ,交換分區(qū)是/dev/sda5,/dev/sda6為臨時(shí)/tmp的目錄;那/dev/sda1和 sda2、sda3、sda7是用做什么的呢?可以用來安裝系統(tǒng)。我們?cè)O(shè)計(jì)的是僅安裝系統(tǒng),涉及數(shù)據(jù)保存的,都放到RAID上。比如我把sda1和sda2安裝同樣的系統(tǒng),把由第二三四塊硬盤做好的RAID掛在/home上,所有應(yīng)用數(shù)據(jù)都存在RAID上。當(dāng)sda1系統(tǒng)被破壞時(shí),我們可以用最短的時(shí)間啟用sda2的系統(tǒng),并在sda2上裝載由第二三四塊硬盤上做的RAID。


第二三四個(gè)硬盤,我們可以用來整塊硬盤來做RAID, 不必為每塊硬盤分區(qū)。比如為了讀寫效率,我們可以做成RAID0,為了安全,你可以做RAID5。 如果做RAID0設(shè)備的容量是3x80G=240G,如果做RAID5,RAID5設(shè)備的容量是(3-1)x80=160G。有的弟兄可能會(huì)說,為什么我不能把磁盤進(jìn)行分區(qū),然后做RAID0呢?RAID10也就是RAID0+RAID1的組合,安全和效率都有。這種方案也是可以的,但您必須做到,當(dāng)有一個(gè)硬盤壞掉時(shí),不會(huì)影響數(shù)據(jù)的整體安全性。也就是說,當(dāng)一個(gè)硬盤壞掉時(shí),另外兩塊硬盤組合起來,仍能組成一份完整的數(shù)據(jù)。當(dāng)RAID中的一塊硬盤壞掉時(shí),我們能通過更換硬盤,簡(jiǎn)單的修復(fù),就能讓RAID正常運(yùn)行起來,而且數(shù)據(jù)是完整的。如果您對(duì)數(shù)據(jù)安全極為重視的,在做軟RAID的過程中,能做到這點(diǎn),這個(gè)RAID方案就屬于你。


所以在做軟RAID時(shí),首先要明白自己的目的是什么,然后再來根據(jù)目的判斷自己的所要達(dá)到的效果。如果是簡(jiǎn)單追求的是讀寫效率,我們就不必考慮數(shù)據(jù)的安全性。如果是數(shù)據(jù)的安全性對(duì)我們來說極為重要,我們就要判斷,當(dāng)一塊硬盤壞掉時(shí),是否影響數(shù)據(jù)的完整性!比如,我們用兩塊硬盤來做RAID5或RAID10,可以這樣說,沒有一點(diǎn)安全性的。無論您怎么分區(qū)和組合,也不會(huì)為您帶來一點(diǎn)安全感。




6 常見問題及處理;


涉及一些補(bǔ)充和增訂的內(nèi)容,我們?cè)谶@里一一列出;




6.1 如何清除一個(gè)RAID成員的超級(jí)塊存儲(chǔ)存的RAID信息;


RAID成員在 superblock中所存儲(chǔ)的RAID信息是極為重要的,我們可以根據(jù)這個(gè)信息輕松恢復(fù)RAID。


mdadm --zero-superblock RAID成員;
如果你確認(rèn)RAID成員這個(gè)成員對(duì)你沒任何用處,你已經(jīng)把這個(gè)成員移除RAID,并且您想把這個(gè)設(shè)備另作他用。這時(shí)你可以清除其 superblock的信息。比如;


[root@linuxsir:~] # mdadm --zero-superblock /dev/sdd3
這個(gè)示例就是清除/dev/sdd3中的超級(jí)塊中所存儲(chǔ)的RAID信息;




7 關(guān)于本文;


其實(shí)軟RAID使用起來比較簡(jiǎn)單,難點(diǎn)在于后期的管理和維護(hù)。軟RAID的使用教程,其實(shí)用幾個(gè)命令足以能說的清楚。但一想到初學(xué)Linux的弟兄也可能象我當(dāng)初學(xué)習(xí)Linux一樣,總想找一個(gè)Step By Step的教程看著實(shí)現(xiàn)自己想要做的東西,基于這個(gè)大多數(shù)初學(xué)者的想法,我就寫了這么一個(gè)看起來相對(duì)復(fù)雜的文章。


這篇文章看起來?xiàng)l理不夠清晰,另外mdadm的模式也沒有給大家說,而是把模式分拆開來放在具體的應(yīng)用中。


我僅僅是用自己從新手理解的角度來寫這篇文章,文中大量存在不規(guī)范的用語,這也是在情理之中的。最主要的是有些專業(yè)束語我不知道如何翻譯才好。

以上是“l(fā)inux軟raid如何實(shí)現(xiàn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享文章:linux軟raid如何實(shí)現(xiàn)
當(dāng)前鏈接:http://muchs.cn/article0/ipjiio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、面包屑導(dǎo)航、品牌網(wǎng)站制作、企業(yè)建站、標(biāo)簽優(yōu)化用戶體驗(yàn)

廣告

聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)