Linux 下如何用mdadm實(shí)現(xiàn)軟件RAID

轉(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中文man文檔

參考資料:

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晌砾,一起剝皮案震驚了整個(gè)濱河市坎拐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌养匈,老刑警劉巖哼勇,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異呕乎,居然都是意外死亡积担,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門楣嘁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來磅轻,“玉大人,你說我怎么就攤上這事逐虚×铮” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵叭爱,是天一觀的道長撮躁。 經(jīng)常有香客問我,道長买雾,這世上最難降的妖魔是什么把曼? 我笑而不...
    開封第一講書人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮漓穿,結(jié)果婚禮上嗤军,老公的妹妹穿的比我還像新娘。我一直安慰自己晃危,他們只是感情好叙赚,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著僚饭,像睡著了一般震叮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鳍鸵,一...
    開封第一講書人閱讀 52,785評(píng)論 1 314
  • 那天苇瓣,我揣著相機(jī)與錄音,去河邊找鬼偿乖。 笑死击罪,一個(gè)胖子當(dāng)著我的面吹牛哲嘲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播外邓,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼撤蚊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了损话?” 一聲冷哼從身側(cè)響起侦啸,我...
    開封第一講書人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丧枪,沒想到半個(gè)月后光涂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拧烦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年忘闻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恋博。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡齐佳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出债沮,到底是詐尸還是另有隱情炼吴,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布疫衩,位于F島的核電站硅蹦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏闷煤。R本人自食惡果不足惜童芹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鲤拿。 院中可真熱鬧假褪,春花似錦、人聲如沸近顷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幕庐。三九已至久锥,卻和暖如春家淤,著一層夾襖步出監(jiān)牢的瞬間异剥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來泰國打工絮重, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留冤寿,地道東北人歹苦。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像督怜,于是被迫代替她去往敵國和親殴瘦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容