+++++++++++++++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++++++++++++++
1.什么是Raid;
RAID(Redundant Array of Inexpensive Disks)稱(chēng)為廉價(jià)磁盤(pán)冗余陣列。RAID 的基本想法是把多個(gè)便宜的小磁盤(pán)組合到一起,成為一個(gè)磁盤(pán)組,使性能達到或超過(guò)一個(gè)容量巨大、價(jià)格昂貴的磁盤(pán)。
目前 RAID技術(shù)大致分為兩種:基于硬件的RAID技術(shù)和基于軟件的RAID技術(shù)。其中在Linux下通過(guò)自帶的軟件就能實(shí)現RAID功能,這樣便可省去購買(mǎi)昂貴的硬件 RAID 控制器和附件就能極大地增強磁盤(pán)的 IO 性能和可靠性。由于是用軟件去實(shí)現的RAID功能,所以它配置靈活、管理方便。同時(shí)使用軟件RAID,還可以實(shí)現將幾個(gè)物理磁盤(pán)合并成一個(gè)更大的虛擬設備,從而達到性能改進(jìn)和數據冗余的目的。當然基于硬件的RAID解決方案比基于軟件RAID技術(shù)在使用性能和服務(wù)性能上稍勝一籌,具體表現在檢測和修復多位錯誤的能力、錯誤磁盤(pán)自動(dòng)檢測和陣列重建等方面。
2.RAID級別介紹;
一般常用的RAID階層,分別是RAID 0、RAID1、RAID 3、RAID 4以及RAID 5,再加上二合一型 RAID 0+1﹝或稱(chēng)RAID 10﹞。我們先把這些RAID級別的優(yōu)、缺點(diǎn)做個(gè)比較:
RAID級別 相對優(yōu)點(diǎn) 相對缺點(diǎn)
RAID 0 存取速度最快 沒(méi)有容錯
RAID 1 完全容錯 成本高
RAID 3 寫(xiě)入性能最好 沒(méi)有多任務(wù)功能
RAID 4 具備多任務(wù)及容錯功能 Parity 磁盤(pán)驅動(dòng)器造成性能瓶頸
RAID 5 具備多任務(wù)及容錯功能 寫(xiě)入時(shí)有overhead
RAID 0+1/RAID 10 速度快、完全容錯 成本高
2.1 RAID0的特點(diǎn)與應用;
也稱(chēng)為條帶模式(striped),即把連續的數據分散到多個(gè)磁盤(pán)上存取,如圖所示。當系統有數據請求就可以被多個(gè)磁盤(pán)并行的執行,每個(gè)磁盤(pán)執行屬于它自己的那部分數據請求。這種數據上的并行操作可以充分利用總線(xiàn)的帶寬,顯著(zhù)提高磁盤(pán)整體存取性能。因為讀取和寫(xiě)入是在設備上并行完成的,讀取和寫(xiě)入性能將會(huì )增加,這通常是運行 RAID 0 的主要原因。但RAID 0沒(méi)有數據冗余,如果驅動(dòng)器出現故障,那么將無(wú)法恢復任何數據。
2.2 RAID 1 的特點(diǎn)與應用;
RAID 1又稱(chēng)為鏡像(Mirroring),一個(gè)具有全冗余的模式,如圖所示。RAID 1可以用于兩個(gè)或2xN個(gè)磁盤(pán),并使用0塊或更多的備用磁盤(pán),每次寫(xiě)數據時(shí)會(huì )同時(shí)寫(xiě)入鏡像盤(pán)。這種陣列可靠性很高,但其有效容量減小到總容量的一半,同時(shí)這些磁盤(pán)的大小應該相等,否則總容量只具有最小磁盤(pán)的大小。
2.3 RAID 3特點(diǎn)與應用;
RAID 3 是將數據先做XOR 運算,產(chǎn)生Parity Data后,在將數據和Parity Data 以并行存取模式寫(xiě)入成員磁盤(pán)驅動(dòng)器中,因此具備并行存取模式的優(yōu)點(diǎn)和缺點(diǎn)。進(jìn)一步來(lái)說(shuō),RAID 3每一筆數據傳輸,都更新整個(gè)Stripe﹝即每一個(gè)成員磁盤(pán)驅動(dòng)器相對位置的數據都一起更新﹞,因此不會(huì )發(fā)生需要把部分磁盤(pán)驅動(dòng)器現有的數據讀出來(lái),與新數據作XOR運算,再寫(xiě)入的情況發(fā)生﹝這個(gè)情況在 RAID 4和RAID 5會(huì )發(fā)生,一般稱(chēng)之為Read、Modify、Write Process,我們姑且譯為為讀、改、寫(xiě)過(guò)程﹞。因此,在所有 RAID級別中,RAID 3的寫(xiě)入性能是最好的。
RAID 3的 Parity Data 一般都是存放在一個(gè)專(zhuān)屬的Parity Disk,但是由于每筆數據都更新整個(gè)Stripe,因此,RAID 3的 Parity Disk 并不會(huì )如RAID 4的 Parity Disk,會(huì )造成存取的瓶頸。
RAID 3的并行存取模式,需要RAID 控制器特別功能的支持,才能達到磁盤(pán)驅動(dòng)器同步控制,而且上述寫(xiě)入性能的優(yōu)點(diǎn),以目前的Caching 技術(shù),都可以將之取代,因此一般認為RAID 3的應用,將逐漸淡出市場(chǎng)。
RAID 3 以其優(yōu)越的寫(xiě)入性能,特別適合用在大型、連續性檔案寫(xiě)入為主的應用,例如繪圖、影像、視訊編輯、多媒體、數據倉儲、高速數據擷取等等。
2.4 RAID 4特點(diǎn)與應用;
創(chuàng )建RAID 4需要三塊或更多的磁盤(pán),它在一個(gè)驅動(dòng)器上保存校驗信息,并以RAID 0方式將數據寫(xiě)入其它磁盤(pán),如圖所示。因為一塊磁盤(pán)是為校驗信息保留的,所以陣列的大小是(N-l)*S,其中S是陣列中最小驅動(dòng)器的大小。就像在 RAID 1中那樣,磁盤(pán)的大小應該相等。
但是由于使用單一專(zhuān)屬的Parity Disk 來(lái)存放Parity Data,因此在寫(xiě)入時(shí),就會(huì )造成很大的瓶頸。因此,RAID 4并沒(méi)有被廣泛地應用。
2.5 RAID 5特點(diǎn)與應用;
在希望結合大量物理磁盤(pán)并且仍然保留一些冗余時(shí),RAID 5 可能是最有用的 RAID 模式。RAID 5可以用在三塊或更多的磁盤(pán)上,并使用0塊或更多的備用磁盤(pán)。就像 RAID 4一樣,得到的 RAID5 設備的大小是(N-1)*S。
由于RAID 5 可以執行Overlapped I/O 多任務(wù),因此當RAID 5的成員磁盤(pán)驅動(dòng)器數目越多,其性能也就越高,因為一個(gè)磁盤(pán)驅動(dòng)器再一個(gè)時(shí)間只能執行一個(gè) Thread,所以磁盤(pán)驅動(dòng)器越多,可以Overlapped 的Thread 就越多,當然性能就越高。但是反過(guò)來(lái)說(shuō),磁盤(pán)驅動(dòng)器越多,數組中可能有磁盤(pán)驅動(dòng)器故障的機率就越高,整個(gè)數組的可靠度,或MTDL (Mean Time to Data Loss) 就會(huì )降低。
由于RAID 5將Parity Data 分散存在各個(gè)磁盤(pán)驅動(dòng)器,因此很符合XOR技術(shù)的特性。例如,當同時(shí)有好幾個(gè)寫(xiě)入要求發(fā)生時(shí),這些要寫(xiě)入的數據以及Parity Data 可能都分散在不同的成員磁盤(pán)驅動(dòng)器,因此RAID 控制器可以充分利用Overlapped I/O,同時(shí)讓好幾個(gè)磁盤(pán)驅動(dòng)器分別作存取工作,如此,數組的整體性能就會(huì )提高很多。
基本上來(lái)說(shuō),多人多任務(wù)的環(huán)境,存取頻繁,數據量不是很大的應用,都適合選用RAID 5 架構,例如企業(yè)檔案服務(wù)器、WEB 服務(wù)器、在線(xiàn)交易系統、電子商務(wù)等應用,都是數據量小,存取頻繁的應用。
2.6 RAID 0+1﹝RAID 10﹞的特點(diǎn)與應用;
RAID 0+1/RAID 10,綜合了RAID 0 和 RAID 1的優(yōu)點(diǎn),適合用在速度需求高,又要完全容錯,當然經(jīng)費也很多的應用。 RAID 0和RAID 1的原理很簡(jiǎn)單,合起來(lái)之后還是很簡(jiǎn)單,我們不打算詳細介紹,倒是要談?wù)?,RAID 0+1到底應該是 RAID 0 over RAID 1,還是RAID 1 over RAID 0,也就是說(shuō),是把多個(gè)RAID 1 做成RAID 0,還是把多個(gè) RAID 0 做成RAID 1?
RAID 0 over RAID 1
假設我們有四臺磁盤(pán)驅動(dòng)器,每?jì)膳_磁盤(pán)驅動(dòng)器先做成RAID 1,再把兩個(gè)RAID 1做成RAID 0,這就是RAID 0 over RAID 1:
(RAID 1) A = Drive A1 + Drive A2 (Mirrored)
(RAID 1) B = Drive B1 + Drive B2 (Mirrored)
RAID 0 = (RAID 1) A + (RAID 1) B (Striped)
RAID 1 over RAID 0
假設我們有四臺磁盤(pán)驅動(dòng)器,每?jì)膳_磁盤(pán)驅動(dòng)器先做成RAID 0,再把兩個(gè)RAID 0做成RAID 1,這就是RAID 1 over RAID 0:
(RAID 0) A = Drive A1 + Drive A2 (Striped)
(RAID 0) B = Drive B1 + Drive B2 (Striped)
RAID 1 = (RAID 1) A + (RAID 1) B (Mirrored)
在這種架構之下,如果 (RAID 0) A有一臺磁盤(pán)驅動(dòng)器故障,(RAID 0) A就算毀了,當然RAID 1仍然可以正常工作;如果這時(shí) (RAID 0) B也有一臺磁盤(pán)驅動(dòng)器故障,(RAID 0) B也就算毀了,此時(shí)RAID 1的兩磁盤(pán)驅動(dòng)器都算故障,整個(gè)RAID 1資料就毀了。
因此,RAID 0 OVER RAID 1應該比RAID 1 OVER RAID 0具備比較高的可靠度。所以我們建議,當采用RAID 0+1/RAID 10架構時(shí),要先作RAID 1,再把數個(gè)RAID 1做成RAID 0。
3. 怎樣選擇Raid級別;
RAID 012345 到底哪一種適合你,不只是成本問(wèn)題,容錯功能和傳輸性能的考慮以及未來(lái)之可擴充性都應該符合應用的需求。
RAID 在市場(chǎng)上的的應用,已經(jīng)不是新鮮的事兒了,很多人都大略了解RAID的基本觀(guān)念,以及各個(gè)不同RAID LEVEL 的區分。但是在實(shí)際應用 面,我們發(fā)現,有很多使用者對于選擇一個(gè)合適的RAID LEVEL,仍然無(wú)法很確切的掌握,尤其是對于RAID 0+1 (10),RAID 3, RAID 5之間的選擇取舍,更是舉棋不定。
3.1 RAID條切“striped”的存取模式;
在使用數據條切﹝Data Stripping﹞ 的RAID 系統之中,對成員磁盤(pán)驅動(dòng)器的存取方式,可分為兩種:
并行存取﹝Paralleled Access﹞
獨立存取﹝Independent Access﹞
RAID 2和RAID 3 是采取并行存取模式。
RAID 0、RAID 4、RAID 5及RAID 6則是采用獨立存取模式。
3.2 平行存取模式;
并行存取模式支持里,是把所有磁盤(pán)驅動(dòng)器的主軸馬達作精密的控制,使每個(gè)磁盤(pán)的位置都彼此同步,然后對每一個(gè)磁盤(pán)驅動(dòng)器作一個(gè)很短的I/O數據傳送,如此一來(lái),從主機來(lái)的每一個(gè)I/O 指令,都平均分布到每一個(gè)磁盤(pán)驅動(dòng)器。
為了達到并行存取的功能,RAID 中的每一個(gè)磁盤(pán)驅動(dòng)器,都必須具備幾乎完全相同的規格:轉速必須一樣;磁頭搜尋速度﹝Access Time﹞必須相同;Buffer 或Cache的容量和存取速度要一致;CPU處理指令的速度要相同;I/O Channel 的速度也要一樣??偠灾?,要利用并行存取模式,RAID 中所有的成員磁盤(pán)驅動(dòng)器,應該使用同一廠(chǎng)牌,相同型號的磁盤(pán)驅動(dòng)器。
3.2.1 并行存取的基本工作原理;
假設RAID中共有四部相同規格的磁盤(pán)驅動(dòng)器,分別為磁盤(pán)驅動(dòng)器A、B、C和D,我們在把時(shí)間軸略分為T(mén)0、T1、T2、T3和T4:
T0: RAID控制器將第一筆數據傳送到A的Buffer,磁盤(pán)驅動(dòng)器B、C和D的Buffer都是空的,在等待中
T1: RAID控制器將第二筆數據傳送到B的Buffer,A開(kāi)始把Buffer中的數據寫(xiě)入扇區,磁盤(pán)驅動(dòng)器C和D的Buffer都是空的,在等待中
T2: RAID控制器將第三筆數據傳送到C的Buffer,B開(kāi)始把Buffer中的數據寫(xiě)入扇區,A已經(jīng)完成寫(xiě)入動(dòng)作,磁盤(pán)驅動(dòng)器D和A的Buffer都是空的,在等待中
T3: RAID控制器將第四筆數據傳送到D的Buffer,C開(kāi)始把Buffer中的數據寫(xiě)入扇區,B已經(jīng)完成寫(xiě)入動(dòng)作,磁盤(pán)驅動(dòng)器A和B的Buffer都是空的,在等待中
T4: RAID控制器將第五筆數據傳送到A的Buffer,D開(kāi)始把Buffer中的數據寫(xiě)入扇區,C已經(jīng)完成寫(xiě)入動(dòng)作,磁盤(pán)驅動(dòng)器B和C的Buffer都是空的,在等待中
如此一直循環(huán),一直到把從主機來(lái)的這個(gè)I/O 指令處理完畢,RAID控制器才會(huì )受處理下一個(gè)I/O 指令。重點(diǎn)是在任何一個(gè)磁盤(pán)驅動(dòng)器準備好把數據寫(xiě)入扇區時(shí),該目的扇區必須剛剛好轉到磁頭下。同時(shí)RAID控制器每依次傳給一個(gè)磁盤(pán)驅動(dòng)器的數據長(cháng)度,也必須剛剛好,配合磁盤(pán)驅動(dòng)器的轉速,否則一旦發(fā)生 miss,RAID 性能就大打折扣。
3.2.2 并行存取RAID的最佳應用;
并行存取RAID之架構,以其精細的馬達控制和分布之數據傳輸,將數組中每一個(gè)磁盤(pán)驅動(dòng)器的性能發(fā)揮到最大,同時(shí)充分利用Storage Bus的頻寬,因此特別適合應用在大型、數據連續的檔案存取應用,例如:
影像、視訊檔案服務(wù)器
數據倉儲系統
多媒體數據庫
電子圖書(shū)館
印前或底片輸出檔案服務(wù)器
其它大型且連續性檔案服務(wù)器
由于并行存取RAID架構之特性,RAID 控制器一次只能處理一個(gè)I/O要求,無(wú)法執行Overlapping 的多任務(wù),因此非常不適合應用在 I/O次數頻繁、數據隨機存取、每筆數據傳輸量小的環(huán)境。同時(shí),因為并行存取無(wú)法執行Overlapping 的多任務(wù),因此沒(méi)有辦法"隱藏"磁盤(pán)驅動(dòng)器搜尋﹝seek﹞的時(shí)間,而且在每一個(gè)I/O的第一筆數據傳輸,都要等待第一個(gè)磁盤(pán)驅動(dòng)器旋轉延遲﹝rotational latency﹞,平均為旋轉半圈的時(shí)間,如果使用一萬(wàn)轉的磁盤(pán)驅動(dòng)器,平均就需要等待50 usec。所以機械延遲時(shí)間,是并行存取架構的最大問(wèn)題。
3.3 獨立存取模式;
相對于并行存取模式,獨立存取模式并不對成員磁盤(pán)驅動(dòng)器作同步轉動(dòng)控制,其對每個(gè)磁盤(pán)驅動(dòng)器的存取,都是獨立且沒(méi)有順序和時(shí)間間格的限制,同時(shí)每筆傳輸的數據量都比較大。因此,獨立存取模式可以盡量地利用overlapping 多任務(wù)、Tagged Command Queuing等等高階功能,來(lái)" 隱藏"上述磁盤(pán)驅動(dòng)器的機械時(shí)間延遲﹝Seek 和Rotational Latency﹞。
由于獨立存取模式可以做overlapping 多任務(wù),而且可以同時(shí)處理來(lái)自多個(gè)主機不同的I/O Requests,在多主機環(huán)境﹝如Clustering﹞,更可發(fā)揮最大的性能。
3.3.1 獨立存取RAID的最佳應用;
由于獨立存取模式可以同時(shí)接受多個(gè)I/O Requests,因此特別適合應用在數據存取頻繁、每筆數據量較小的系統。例如:
在線(xiàn)交易系統或電子商務(wù)應用
多使用者數據庫
ERM及MRP 系統
小文件之文件服務(wù)器
4. 創(chuàng )建和維護Raid;
4.1 mdadm;
在Linux服務(wù)器中是通過(guò)mdadm工具來(lái)創(chuàng )建和維護軟RAID的,mdadm在創(chuàng )建和管理軟RAID時(shí)非常方便,而且很靈活。mdadm常用的參數有如下:
* --create或-C:創(chuàng )建一個(gè)新的軟RAID,后面接raid設備的名稱(chēng)。例如,/dev/md0,/dev/md1等。
*--assemble或-A:加載一個(gè)已存在的陣列,后面跟陣列以及設備的名稱(chēng)。
*--detail或-D:輸出指定RAID設備的詳細信息。
*--stop或-S:停止指定的RAID設備。
*--level或-l:設置RAID的級別,例如,設置“--level=5”則表示創(chuàng )建陣列的級別是RAID 5。
*--raid-devices或-n:指定陣列中活動(dòng)磁盤(pán)的數目。
*--scan或-s:掃描配置文件或/proc/mdstat文件來(lái)搜索軟RAID的配置信息,該參數不能單獨使用,只能配置其它參數才能使用。下面將通過(guò)一個(gè)實(shí)例來(lái)講述通過(guò)mdadm如何實(shí)現軟RAID的功能。
4.1.1 創(chuàng )建分區;
【實(shí)例1】
某臺機器上有4塊空閑的硬盤(pán),分別是/dev/sdb、/dev/sdc、/dev/sdd和/dev/sde,并用這四塊硬盤(pán)來(lái)創(chuàng )建來(lái)創(chuàng )建一個(gè)RAID 5,具體操作步驟如下:
首先使用“fdisk”命令在每塊硬盤(pán)上創(chuàng )建一個(gè)分區,操作如下:
root@xiaop-laptop:/# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): n #按n創(chuàng )建新分區
Command action
e extended
p primary partition (1-4) #輸入p 選擇創(chuàng )建主分區
p
Partition number (1-4): 1 #輸入 1 創(chuàng )建第一個(gè)主分區
First cylinder (1-102, default 1): #直接回車(chē),選擇分區開(kāi)始柱面這里就從 1 開(kāi)始
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-102, default 102):
Using default value 102
Command (m for help): w #然后輸入w寫(xiě)盤(pán)
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.針對其余幾塊硬盤(pán)也做相同操作,按照此步驟在另外的兩塊磁盤(pán)上做同樣的操作;
全部做完后,運行 fdisk -l 應該可以看到如下信息:
Disk /dev/sdb: 214 MB, 214748160 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 204 208880 fd Linux raid autodetect
Disk /dev/sdc: 214 MB, 214748160 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 204 208880 fd Linux raid autodetect
Disk /dev/sdd: 214 MB, 214748160 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 1 204 208880 fd Linux raid autodetect看到上面三個(gè)磁盤(pán)上分別建了一個(gè)分區,分區大小都一樣;
4.1.2 創(chuàng )建RAID 5;
創(chuàng )建完/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sde1四個(gè)分區后,下面就可以來(lái)創(chuàng )建RAID 5了,其中設定/dev/sde1作為備用設備,其余為活動(dòng)設備,備用設備的作用是一旦某一設備損壞可以立即使用備用設備替換。操作命令如下:
root@xiaop-laptop:/# mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sd[b-e]1
mdadm: array /dev/md0 started.root@xiaop-laptop:/# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.01
Creation Time : Mon Jan 22 10:55:49 2007
Raid Level : raid5
Array Size : 208640 (203.75 MiB 213.65 MB)
Device Size : 104320 (101.88 MiB 106.82 MB)
Raid Devices : 3
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Mon Jan 22 10:55:52 2007
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 64K
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 65 -1 spare /dev/sde1
UUID : b372436a:6ba09b3d:2c80612c:efe19d75
Events : 0.6
4.1.3 創(chuàng )建RAID的配置文件;
RAID的配置文件名為“mdadm.conf”,默認是不存在的,所以需要手工創(chuàng )建,該配置文件存在的主要作用是系統啟動(dòng)的時(shí)候能夠自動(dòng)加載軟RAID,同時(shí)也方便日后管理。“mdadm.conf”文件內容包括:由DEVICE選項指定用于軟RAID的所有設備,和ARRAY選項所指定陣列的設備名、RAID級別、陣列中活動(dòng)設備的數目以及設備的UUID號。生成RAID配置文件操做如下:
root@xiaop-laptop:/# mdadm --detail --scan > /etc/mdadm.confroot@xiaop-laptop:/# vi /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=b372436a:6ba09b3d:2c80612c:efe19d75root@xiaop-laptop:/# mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
mdadm: /dev/md0 has been started with 3 drives and 1 spare.
4.1.4 創(chuàng )建文件系統;
接下來(lái)就只需要在RAID設備上創(chuàng )建文件系統就可使用了,在RAID設備上創(chuàng )建文件系統和在分區或磁盤(pán)上創(chuàng )建文件系統的方法一樣。在設備“/dev/md0”上創(chuàng )建ext3的文件系統命令如下:
root@xiaop-laptop:/# mkfs.ext3 /dev/md0
4.2 維護軟RAID;
軟RAID雖然很大程度上能保證數據的可靠性,但是在日常的工作中,有時(shí)可能需要對RAID進(jìn)行調整以及不排除RAID設備物理介質(zhì)損壞的可能等相關(guān)問(wèn)題
,當遇到這些情況時(shí),那么同樣可以通過(guò)“mdadm”命令來(lái)完成這些操作。下面也將通過(guò)一個(gè)實(shí)例來(lái)介紹更換RAID故障磁盤(pán)的完整過(guò)程。
4.2.1 模擬故障磁盤(pán);
【實(shí)例2】
以前面的【實(shí)例1】為基礎,假定其中的“/dev/sdc1”設備出現故障時(shí),更換一個(gè)新的磁盤(pán),整個(gè)過(guò)程的詳細說(shuō)明如下:
在實(shí)際中,當軟RAID檢測到某個(gè)磁盤(pán)有故障時(shí),會(huì )自動(dòng)標記該磁盤(pán)為故障磁盤(pán),并停止對故障磁盤(pán)的讀寫(xiě)操作,所以這里需要將/dev/sdc1標記為出現故障的磁盤(pán),命令如下:
root@xiaop-laptop:/# mdadm /dev/md0 --fail /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0由于【實(shí)例1】中的RAID 5設置了一個(gè)備用設備,所以當有標記為故障磁盤(pán)的時(shí)候,備用磁盤(pán)會(huì )自動(dòng)頂替故障磁盤(pán)工作,陣列也能夠在短時(shí)間內實(shí)現重建。通過(guò)“/proc/mdstat”文件可查看到當前陣列的狀態(tài),如下:
root@xiaop-laptop:/# cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sde1[3] sdb1[0] sdd1[2] sdc1[4](F)
208640 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]
[=====>...............] recovery = 26.4% (28416/104320) finish=0.0min speed=28416K/sec
unused devices: <none>重建完數據后,再次查看陣列狀態(tài)時(shí),就會(huì )發(fā)現當前的RAID設備又恢復了正常,如下:
root@xiaop-laptop:/# cat /proc/mdstat
Personalities : [raid5]
md0 : active raid5 sde1[1] sdb1[0] sdd1[2] sdc1[3](F)
208640 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
4.2.2 移除故障磁盤(pán);
既然“/dev/sdc1”出現了故障,當然要移除該設備,移除故障磁盤(pán)的操作如下:
root@xiaop-laptop:/# mdadm /dev/md0 --remove /dev/sdc1
mdadm: hot removed /dev/sdc1
4.2.3 添加新硬盤(pán);
在添加新的硬盤(pán)前,同樣需要對新硬盤(pán)進(jìn)行創(chuàng )建分區的操作,例如,添加新硬盤(pán)的設備名為“/dev/sdc1”,則具體操作如下:
root@xiaop-laptop:/# mdadm /dev/md0 --add /dev/sdc1
mdadm: hot added /dev/sdc1由于【實(shí)例1】中的RAID 5設置了一個(gè)備用設備,所以不需要做任何操作RAID 5也能正常運行,但是如果這時(shí)某塊磁盤(pán)再出現故障的話(huà),會(huì )導致RAID 5沒(méi)有數據冗余功能,這對于存放重要的數據的設備來(lái)說(shuō)顯得太不安全了。那么這時(shí)增加到RAID 5中的“/dev/sdc1”則作為備用設備出現在陣列中,如下:
root@xiaop-laptop:/# mdadm --detail /dev/md0
/dev/md0:
……
……
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 65 1 active sync /dev/sde1
2 8 49 2 active sync /dev/sdd1
3 8 33 -1 spare /dev/sdc1
UUID : b372436a:6ba09b3d:2c80612c:efe19d75
Events : 0.133
5. 關(guān)于本文;
本文僅僅簡(jiǎn)單介紹了Raid,屬于最基本的入門(mén)介紹,沒(méi)有涉及到高級應用,如果想深入了解請參考其它相關(guān)文檔;
6. 更新日志;
07.7.25 v0.1b
7. 參考文檔;
8. 相關(guān)文檔;
聯(lián)系客服