轉(zhuǎn)載:http://blog.sina.com.cn/s/blog_6a717d640101a89u.html
數(shù)據(jù)在現(xiàn)今企業(yè)中占有重要的地位,數(shù)據(jù)存儲(chǔ)的安全性有而是人們使用計(jì)算機(jī)要注意的重要問題之一.通常情況下人們?cè)诜?wù)器端采用各種冗余磁盤陣列RAID技術(shù)
來保護(hù)數(shù)據(jù),中高檔的服務(wù)器一般都提供了昂貴的硬件RAID控制器,但是很多中小企業(yè)沒有足夠的經(jīng)費(fèi)承受這筆開銷.我們有沒有方法可以通過軟件來實(shí)現(xiàn)RAID呢减江?
實(shí)際上在Linux下可以通過軟件來實(shí)現(xiàn)硬件的RAID功能,這樣既節(jié)省了投資,又能達(dá)到很好的效果.今天就由我為大家介紹如何在網(wǎng)絡(luò)環(huán)境中實(shí)現(xiàn)帶有一塊Spare-disk的軟RAID1(數(shù)據(jù)鏡像)陣列.
小提示:什么是RAID1(數(shù)據(jù)鏡像)陪白?RAID1是比較可靠的數(shù)據(jù)存儲(chǔ)方式,每一個(gè)磁盤都具有一個(gè)對(duì)應(yīng)的鏡像盤.對(duì)任何磁盤的數(shù)據(jù)寫入都會(huì)被復(fù)制鏡像盤 中;系統(tǒng)可以從一組鏡像盤中的任何一個(gè)磁盤讀取數(shù)據(jù),也就是說同一個(gè)數(shù)據(jù)會(huì)被重復(fù)寫入兩次,這樣的磁盤鏡像肯定會(huì)提高系統(tǒng)成本.因?yàn)槲覀兯苁褂玫目臻g只 是所有磁盤容量總和的一半.
由于本文中會(huì)使用mdadm軟件,而該軟件一般情況下都會(huì)集成在Redhat linux中,所以可以直接使用.如果系統(tǒng)中沒有安裝可以到http://www.cse.unsw.edu.au/~neilb/source /mdadm來下載mdadm-xxx.tgz進(jìn)行編譯安裝,也可以到http://www.cse.unsw.edu.au/~neilb /source/mdadm/rpm下載mdadm-xxx.i386.rpm直接安裝.
作為一個(gè)面向服務(wù)器的網(wǎng)絡(luò)型操作系統(tǒng),Linux對(duì)數(shù)據(jù)的安全和存取速度給予了高度重視,從2.4版內(nèi)核開始Linux就實(shí)現(xiàn)了對(duì)軟件RAID的支 持,這讓我們可以不必購買昂貴的硬件RAID設(shè)備,就能享受到增強(qiáng)的磁盤I/O性能和可靠性,進(jìn)一步降低了系統(tǒng)的總體擁有成本.下面就讓我們看一個(gè)
Redhat Linux AS 4下的軟件RAID配置實(shí)例吧.
● 操作系統(tǒng)為RedHat Linux AS 4松申;
● 內(nèi)核版本為2.6.9-5.EL;
● 支持RAID0狐树、RAID1掘而、RAID4、RAID5茶袒、RAID6;
● 五塊36GB SCSI接口的磁盤,其中RedHat AS 4安裝在第一塊磁盤,其它四塊組成RAID 5用來存放Oracle數(shù)據(jù)庫.
在RedHatAS4下實(shí)現(xiàn)軟件RAID是通過mdadm工具實(shí)現(xiàn)的,其版本為1.6.0,它是一個(gè)單一的程序,創(chuàng)建凉馆、管理RAID都非常方便,而且也很 穩(wěn)定.而在早期Linux下使用的raidtools,由于維護(hù)起來很困難,而且其性能有限,在RedHat AS 4下已經(jīng)不支持了.
實(shí)現(xiàn)過程
一.幾種常用RAID的簡介
RAID是冗余磁盤陣列(Redundant Array of InexpensiveDisk)的簡稱.它是把多個(gè)磁盤組成一個(gè)陣列,當(dāng)作單一磁盤使用.它將數(shù)據(jù)以分段(striping)的方式分散存儲(chǔ)在不同的磁 盤中,通過多個(gè)磁盤的同時(shí)讀寫,來減少數(shù)據(jù)的存取時(shí)間,并且可以利用不同的技術(shù)實(shí)現(xiàn)數(shù)據(jù)的冗余,即使有一個(gè)磁盤損壞,也可以從其他的磁盤中恢復(fù)所有的數(shù) 據(jù).簡單地說,其好處就是:安全性高薪寓、速度快亡资、數(shù)據(jù)容量大.
磁盤陣列根據(jù)其使用的技術(shù)不同而劃分了等級(jí),稱為RAID level,目前公認(rèn)的標(biāo)準(zhǔn)是RAID0~RAID 5.其中的level并不代表技術(shù)的高低,RAID 5并不高于RAID 4 ,RAID 0并不低于RAID 2,至于選擇哪一種RAID需視用戶的需求而定.下面分別對(duì)常用的RAID 0、RAID 1向叉、RAID 5進(jìn)行簡單的介紹.
1.RAID 0
特點(diǎn):它是將多個(gè)磁盤并列起來,成為一個(gè)大硬盤.在存取數(shù)據(jù)時(shí),將數(shù)據(jù)按磁盤的個(gè)數(shù)來進(jìn)行分段,然后同時(shí)將這些數(shù)據(jù)寫進(jìn)這些盤中.在所有的級(jí)別中,RAID 0的速度是最快的.但沒有數(shù)據(jù)冗余,陣列中任何一個(gè)磁盤壞掉,意味著所有數(shù)據(jù)丟失.
磁盤利用數(shù):n(假設(shè)有n個(gè)磁盤).
配置條件:最低兩塊磁盤,且分區(qū)大小盡量相同.
應(yīng)用領(lǐng)域:對(duì)高磁盤容量及高速磁盤存取有特殊需求,而又不計(jì)較其高故障率的工作.當(dāng)然,如果你正在使用集群,RAID 0 無疑是提高磁盤I/O性能的最好方法,因?yàn)樵谶@種情況下,你就不用擔(dān)心冗余的問題了.
2.RAID 1
特點(diǎn):使用磁盤鏡像(disk mirroring)的技術(shù),在一個(gè)磁盤上存放數(shù)據(jù)的同時(shí)也在另一個(gè)磁盤上寫一樣的數(shù)據(jù).因?yàn)橛辛藗浞荽疟P,所以RAID1的數(shù)據(jù)安全性在所有的RAID 級(jí)別上來說是最好的.盡管其寫入數(shù)據(jù)的速度比較慢,但因其數(shù)據(jù)是以分段的方式作儲(chǔ)存,因而在讀取時(shí),它幾乎和RAID0有同樣的性能.
磁盤利用數(shù):n/2.
配置條件:最低兩塊磁盤,且分區(qū)大小盡量相同.
應(yīng)用領(lǐng)域:數(shù)據(jù)庫锥腻、金融系統(tǒng)等一些對(duì)數(shù)據(jù)有著高可靠性要求的領(lǐng)域.再者就是系統(tǒng)中寫數(shù)據(jù)量比較少,而讀數(shù)據(jù)量又比較多的情況下可以采用這一模式.
3.RAID 5
特點(diǎn):以數(shù)據(jù)的校驗(yàn)位來保證數(shù)據(jù)的安全,但它不是以單獨(dú)硬盤來存放數(shù)據(jù)的校驗(yàn)位,而是將數(shù)據(jù)段的校驗(yàn)位交互存放于各個(gè)磁盤上.這樣,任何一個(gè)磁盤損壞,都可以根據(jù)其他磁盤上的校驗(yàn)位來重建損壞的數(shù)據(jù).并行讀寫數(shù)據(jù),性能也很高.
磁盤利用數(shù):n-1.
配置條件:最低三塊硬盤,且分區(qū)大小盡量相同.
應(yīng)用領(lǐng)域:適合于事務(wù)處理環(huán)境,如售票處、銷售系統(tǒng)等.
二母谎、模式
mdadm有6種模式,前兩種模式:Create瘦黑、Assemble用于配置和激活陣列;Manage模式用于操作在活動(dòng)陣列中的設(shè)備奇唤;Follow或 Monitor模式允許管理員對(duì)活動(dòng)陣列配置事件提醒和動(dòng)作幸斥;Build模式用于對(duì)舊陣列使用舊版本的md驅(qū)動(dòng);還有Grow模式可以擴(kuò)展陣列咬扇;剩下的是 Misc模式,它包括對(duì)多種內(nèi)部的任務(wù)和沒有指定特殊模式的一些操作.
三甲葬、部署
1、準(zhǔn)備磁盤
只能使用Sofware RAID格式的磁盤才能組成陣列,所以,首先我們要把做好磁盤格式.正如上面提到的,除了系統(tǒng)盤sda外,我們需要對(duì)sdb懈贺、sdc经窖、sdd進(jìn)行操作
a)對(duì)sdb進(jìn)行分區(qū)
fdisk /dev/sdb
分區(qū)前狀態(tài):
n,劃分區(qū):
t,修改分區(qū)格式為fd:
w,保存:
b)同樣的方法,對(duì)sdc、sdd進(jìn)行分區(qū)和保存
最后狀態(tài)如下:
2梭灿、創(chuàng)建陣列
mdadm可以支持LINEAR画侣、RAID0(striping)、 RAID1(mirroring)堡妒、 RAID4配乱、RAID5、RAID6和MULTIPATH的陣列模式.
創(chuàng)建命令格式如下:
mdadm [mode] [options]
例如:創(chuàng)建一個(gè)RAID 0設(shè)備:
mdadm –create –verbose /dev/md0 –level=0 –raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
–level表示創(chuàng)建的陣列模式,–raid-devices表示參與陣列的磁盤數(shù)量.
也可以這樣表達(dá),意思是一樣的:
mdadm -Cv /dev/md0 -l0 -n3 /dev/sd[bcd]1
還可以增加-c128參數(shù),指定chunk size為128K(默認(rèn)64K) –spare-devices是加入熱備.
3皮迟、配置文件
mdadm不采用/etc/mdadm.conf作為主要配置文件,它可以完全不依賴該文件而不會(huì)影響陣列的正常工作.
該配置文件的主要作用是方便跟蹤軟RAID的配置.對(duì)該配置文件進(jìn)行配置是有好處的,但不是必須的.推薦對(duì)該文件進(jìn)行配置.
通嘲崮啵可以這樣來建立:
echo DEVICE /dev/sd[bcd]1 > /etc/mdadm.conf
mdadm -Ds>> /etc/mdadm.conf
mdadm –detail –scan >> /etc/mdadm.conf
4、格式化陣列
后續(xù),只要你把/dev/md0作為一個(gè)單獨(dú)的設(shè)備來進(jìn)行操作即可:
mkfs.ext3 /dev/md0
mkdir /mnt/test
mount /dev/md0 /mnt/test
5万栅、若要開機(jī)自動(dòng)掛載,請(qǐng)加入/etc/fstab中:
/dev/md0???????/mnt/tes???????auto?defaults???0 0
四、監(jiān)控和管理
mdadm可以非常方便的對(duì)陣列進(jìn)行監(jiān)控和管理的操作,也包括了停止和啟動(dòng)陣列等常用維護(hù).
1西疤、查看
cat?/proc/mdstat
可以查看所有使用md驅(qū)動(dòng)的陣列的狀態(tài):
mdadm –detail /dev/md0
查看指定陣列的詳細(xì)信息(-D):
2烦粒、停止
mdadm -S /dev/md0
停止指定陣列,并釋放磁盤(–stop):
※注意:停止后,原組成陣列的磁盤將處于空閑狀態(tài),一旦吾操作這些磁盤,將不能再重啟激活原陣列.
3、啟動(dòng)
mdadm -A /dev/md0 /dev/sd[bcd]1
啟動(dòng)指定的陣列,也可理解為講一個(gè)新陣列裝配到系統(tǒng)中(–assemble):
若你已經(jīng)在上面配置了/etc/mdadm.conf文件,也可用-s查找:
mdadm -As /dev/md0
4代赁、測試
如果你沒有配置/etc/mdadm.conf文件,而且又忘了某磁盤屬于那個(gè)陣列,則你可以使用檢測:(–examine)
mdadm -E /dev/sdb1
獲得UUID后,也可以這樣激活陣列:
mdadm -Av /dev/md0 –uuid=8ba81579:e20fb0e8:e040da0e:f0b3fec8 /dev/sd*
可以看到,只要磁盤沒有損壞,這樣裝配是非常方便的:
5扰她、添加及刪除磁盤
mdadm可以在Manage模式下,對(duì)運(yùn)行中的陣列進(jìn)行添加及刪除磁盤.常用于標(biāo)識(shí)failed磁盤,增加spare(冗余)磁盤,以及替換磁盤等.
例如:原來狀態(tài)是:
則可以使用–fail指定壞磁盤,并–remove走:
mdadm /dev/md0 –fail /dev/sdc1 –remove /dev/sdc1
等待同步完成后,結(jié)果:
※需要注意的是,對(duì)于某些陣列模式,如RAID0等,是不能用–fail和–remove的.
增加一個(gè)新的陣列用磁盤
mdadm /dev/md0 –add /dev/sdc1
※需要注意的是,對(duì)于某些陣列模式,如RAID0等,是不能用–add的.
6、監(jiān)控
在Follow或Monitor狀態(tài)下,可以使用mdadm對(duì)陣列進(jìn)行監(jiān)控,例如當(dāng)陣列出現(xiàn)問題的時(shí)候,發(fā)送郵件給管理員芭碍;或者當(dāng)磁盤出現(xiàn)問題的時(shí)候進(jìn)行自動(dòng)的磁盤替換.
nohup mdadm –monitor –mail=sysadmin –delay=300 /dev/md0 &
上述定義:沒300秒監(jiān)控一次,當(dāng)陣列出現(xiàn)錯(cuò)誤,會(huì)發(fā)送郵件給sysadmin用戶.由于monitor啟動(dòng)后是不會(huì)自動(dòng)退出的,所以需要加上nohup和&,使之持續(xù)在后臺(tái)運(yùn)行.
在Follow模式下,是允許共享冗余磁盤的.
例如,我們有兩個(gè)陣列:/dev/md0徒役、/dev/md1,而/dev/md0里面有一個(gè)spare磁盤.當(dāng)我們?cè)?etc/mdadm.conf中定義類似:
DEVICE/dev/sd*
ARRAY?/dev/md0 level=raid1 num-devices=3 spare-group=database
?UUID=410a299e:4cdd535e:169d3df4:48b7144a
ARRAY/dev/md1 level=raid1 num-device=2 spare-group=database
?UUID=59b6e564:739d4d28:ae0aa308:71147fe7
也就是定義一個(gè)spare-group組.并運(yùn)行上面的monitor模式命令.這樣,當(dāng)組成/dev/md1的其中一個(gè)磁盤出現(xiàn)問題的時(shí)候,mdadm會(huì)自動(dòng)從/dev/md0上移走spare磁盤,并加入/dev/md1中,而不需要人工干預(yù).(請(qǐng)注意,能實(shí)現(xiàn)這樣工作的,只有在該陣列支持冗余的情況下才能實(shí)現(xiàn),如raid1、raid5等.而對(duì)于raid0等陣列模式,是無效的)
五窖壕、其他
1忧勿、增加spare磁盤
可以通過在創(chuàng)建的時(shí)候指定冗余磁盤:
mdadm -Cv /dev/md0 -l1 -n2 -x1 /dev/sd[bcd]1
-x(–spare-devices)參數(shù)用于指定冗余磁盤的數(shù)量,結(jié)果:
另外,對(duì)于full的陣列(例如已經(jīng)有2個(gè)磁盤的RAID1),則直接使用-add參數(shù),mdadm會(huì)自動(dòng)把冗余的磁盤作為spare disk.
2杉女、刪除陣列
mdadm -S /dev/md0
或
rm /dev/md0
修改/etc/mdadm.conf、/etc/fstab等配置文件,把相關(guān)的地方去掉鸳吸;
最后,用fdisk對(duì)磁盤進(jìn)行重新分區(qū)即可.
3熏挎、重建陣列
我們也可以在沒有fdisk的情況下把使用過,但目前沒有屬于任何陣列的磁盤劃分到新陣列中:
確認(rèn)后即可.
六、附錄
參考資料:
mdadm: A New Tool For Linux Software RAID Management
1.啟用陣列 #mdadm -As /dev/md0 -A 啟用已存在的陣列 -s 以/etc/mdadm.conf為依據(jù) 沒有創(chuàng)建mdadm.conf文件,則采用如下方法啟用
#mdadm -A /dev/md0 /dev/sd[bc]1
2.停止陣列 #mdadm -S /dev/md0
3.顯示陣列詳細(xì)信息 #mdadm -D /dev/md0
刪除RAID中的硬盤
mdadm –stop /dev/md0?
mdadm –remove /dev/md0
mdadm –zero-superblock /dev/sda