目錄
-
1.什麼是Raid;
2.RAID級別介紹;
-
2.1 RAID0的特色與應用;
2.2 RAID1的特色與應用;
2.3 RAID 3的特色與應用;
2.4 RAID 4的特色與應用;
2.5 RAID 5的特色與應用;
2.6 RAID 0+1﹝RAID 10﹞的特色與應用;
+++++++++++++++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++++++++++++++
1.什麼是Raid;
RAID(Redundant Array of Inexpensive Disks)稱爲廉價磁盤冗餘陣列。RAID 的基本想法是把多個便宜的小磁盤組合到一塊兒,成爲一個磁盤組,使性能達到或超過一個容量巨大、價格昂貴的磁盤。
目前 RAID技術大體分爲兩種:基於硬件的RAID技術和基於軟件的RAID技術。其中在Linux下經過自帶的軟件就能實現RAID功能,這樣即可省去購買昂貴的硬件 RAID 控制器和附件就能極大地加強磁盤的 IO 性能和可靠性。因爲是用軟件去實現的RAID功能,因此它配置靈活、管理方便。同時使用軟件RAID,還能夠實現將幾個物理磁盤合併成一個更大的虛擬設備,從而達到性能改進和數據冗餘的目的。固然基於硬件的RAID解決方案比基於軟件RAID技術在使用性能和服務性能上稍勝一籌,具體表如今檢測和修復多位錯誤的能力、錯誤磁盤自動檢測和陣列重建等方面。
2.RAID級別介紹;
通常經常使用的RAID階層,分別是RAID 0、RAID一、RAID 三、RAID 4以及RAID 5,再加上二合一型 RAID 0+1﹝或稱RAID 10﹞。咱們先把這些RAID級別的優、缺點作個比較:
RAID級別 相對優勢 相對缺點
RAID 0 存取速度最快 沒有容錯
RAID 1 徹底容錯 成本高
RAID 3 寫入性能最好 沒有多任務功能
RAID 4 具有多任務及容錯功能 Parity 磁盤驅動器形成性能瓶頸
RAID 5 具有多任務及容錯功能 寫入時有overhead
RAID 0+1/RAID 10 速度快、徹底容錯 成本高
RAID 0 存取速度最快 沒有容錯
RAID 1 徹底容錯 成本高
RAID 3 寫入性能最好 沒有多任務功能
RAID 4 具有多任務及容錯功能 Parity 磁盤驅動器形成性能瓶頸
RAID 5 具有多任務及容錯功能 寫入時有overhead
RAID 0+1/RAID 10 速度快、徹底容錯 成本高
2.1 RAID0的特色與應用;
也稱爲條帶模式(striped),即把連續的數據分散到多個磁盤上存取,如圖所示。當系統有數據請求就能夠被多個磁盤並行的執行,每一個磁盤執行屬於它本身的那部分數據請求。這種數據上的並行操做能夠充分利用總線的帶寬,顯著提升磁盤總體存取性能。由於讀取和寫入是在設備上並行完成的,讀取和寫入性能將會增長,這一般是運行 RAID 0 的主要緣由。但RAID 0沒有數據冗餘,若是驅動器出現故障,那麼將沒法恢復任何數據。
2.2 RAID 1 的特色與應用;
RAID 1又稱爲鏡像(Mirroring),一個具備全冗餘的模式,如圖所示。RAID 1能夠用於兩個或2xN個磁盤,並使用0塊或更多的備用磁盤,每次寫數據時會同時寫入鏡像盤。這種陣列可靠性很高,但其有效容量減少到總容量的一半,同時這些磁盤的大小應該相等,不然總容量只具備最小磁盤的大小。
2.3 RAID 3特色與應用;
RAID 3 是將數據先作XOR 運算,產生Parity Data後,在將數據和Parity Data 以並行存取模式寫入成員磁盤驅動器中,所以具有並行存取模式的優勢和缺點。進一步來講,RAID 3每一筆數據傳輸,都更新整個Stripe﹝即每個成員磁盤驅動器相對位置的數據都一塊兒更新﹞,所以不會發生須要把部分磁盤驅動器現有的數據讀出來,與新數據做XOR運算,再寫入的狀況發生﹝這個狀況在 RAID 4和RAID 5會發生,通常稱之爲Read、Modify、Write Process,咱們姑且譯爲爲讀、改、寫過程﹞。所以,在全部 RAID級別中,RAID 3的寫入性能是最好的。
RAID 3的 Parity Data 通常都是存放在一個專屬的Parity Disk,可是因爲每筆數據都更新整個Stripe,所以,RAID 3的 Parity Disk 並不會如RAID 4的 Parity Disk,會形成存取的瓶頸。
RAID 3的並行存取模式,須要RAID 控制器特別功能的支持,才能達到磁盤驅動器同步控制,並且上述寫入性能的優勢,以目前的Caching 技術,均可以將之取代,所以通常認爲RAID 3的應用,將逐漸淡出市場。
RAID 3 以其優越的寫入性能,特別適合用在大型、連續性檔案寫入爲主的應用,例如繪圖、影像、視訊編輯、多媒體、數據倉儲、高速數據擷取等等。
2.4 RAID 4特色與應用;
建立RAID 4須要三塊或更多的磁盤,它在一個驅動器上保存校驗信息,並以RAID 0方式將數據寫入其它磁盤,如圖所示。由於一塊磁盤是爲校驗信息保留的,因此陣列的大小是(N-l)*S,其中S是陣列中最小驅動器的大小。就像在 RAID 1中那樣,磁盤的大小應該相等。
若是一個驅動器出現故障,那麼可使用校驗信息來重建全部數據。若是兩個驅動器出現故障,那麼全部數據都將丟失。不常用這個級別的緣由是校驗信息存儲在一個驅動器上。每次寫入其它磁盤時,都必須更新這些信息。所以,在大量寫入數據時很容易形成校驗磁盤的瓶頸,因此目前這個級別的RAID不多使用了。
RAID 4 是採起獨立存取模式,同時以單一專屬的Parity Disk 來存放Parity Data。RAID 4的每一筆傳輸﹝Strip﹞資料較長,並且能夠執行Overlapped I/O,所以其讀取的性能很好。
可是因爲使用單一專屬的Parity Disk 來存放Parity Data,所以在寫入時,就會形成很大的瓶頸。所以,RAID 4並無被普遍地應用。
2.5 RAID 5特色與應用;
在但願結合大量物理磁盤而且仍然保留一些冗餘時,RAID 5 多是最有用的 RAID 模式。RAID 5能夠用在三塊或更多的磁盤上,並使用0塊或更多的備用磁盤。就像 RAID 4同樣,獲得的 RAID5 設備的大小是(N-1)*S。
RAID5 與 RAID4 之間最大的區別就是校驗信息均勻分佈在各個驅動器上,如圖4所示,這樣就避免了RAID 4中出現的瓶頸問題。若是其中一塊磁盤出現故障,那麼因爲有校驗信息,因此全部數據仍然能夠保持不變。若是可使用備用磁盤,那麼在設備出現故障以後,將當即開始同步數據。若是兩塊磁盤同時出現故障,那麼全部數據都會丟失。RAID5 能夠經受一塊磁盤故障,但不能經受兩塊或多塊磁盤故障。
RAID 5也是採起獨立存取模式,可是其Parity Data 則是分散寫入到各個成員磁盤驅動器,所以,除了具有Overlapped I/O 多任務性能以外,同時也脫離如RAID 4單一專屬Parity Disk的寫入瓶頸。可是,RAI?D 5在座資料寫入時,仍然稍微受到"讀、改、寫過程"的拖累。
因爲RAID 5 能夠執行Overlapped I/O 多任務,所以當RAID 5的成員磁盤驅動器數目越多,其性能也就越高,由於一個磁盤驅動器再一個時間只能執行一個 Thread,因此磁盤驅動器越多,能夠Overlapped 的Thread 就越多,固然性能就越高。可是反過來講,磁盤驅動器越多,數組中可能有磁盤驅動器故障的機率就越高,整個數組的可靠度,或MTDL (Mean Time to Data Loss) 就會下降。
因爲RAID 5將Parity Data 分散存在各個磁盤驅動器,所以很符合XOR技術的特性。例如,當同時有好幾個寫入要求發生時,這些要寫入的數據以及Parity Data 可能都分散在不一樣的成員磁盤驅動器,所以RAID 控制器能夠充分利用Overlapped I/O,同時讓好幾個磁盤驅動器分別做存取工做,如此,數組的總體性能就會提升不少。
基本上來講,多人多任務的環境,存取頻繁,數據量不是很大的應用,都適合選用RAID 5 架構,例如企業檔案服務器、WEB 服務器、在線交易系統、電子商務等應用,都是數據量小,存取頻繁的應用。
2.6 RAID 0+1﹝RAID 10﹞的特色與應用;
RAID 0+1/RAID 10,綜合了RAID 0 和 RAID 1的優勢,適合用在速度需求高,又要徹底容錯,固然經費也不少的應用。 RAID 0和RAID 1的原理很簡單,合起來以後仍是很簡單,咱們不打算詳細介紹,卻是要談談,RAID 0+1到底應該是 RAID 0 over RAID 1,仍是RAID 1 over RAID 0,也就是說,是把多個RAID 1 作成RAID 0,仍是把多個 RAID 0 作成RAID 1?
RAID 0 over RAID 1
假設咱們有四臺磁盤驅動器,每兩臺磁盤驅動器先作成RAID 1,再把兩個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) B = Drive B1 + Drive B2 (Mirrored)
RAID 0 = (RAID 1) A + (RAID 1) B (Striped)
RAID 1 over RAID 0
假設咱們有四臺磁盤驅動器,每兩臺磁盤驅動器先作成RAID 0,再把兩個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) B = Drive B1 + Drive B2 (Striped)
RAID 1 = (RAID 1) A + (RAID 1) B (Mirrored)
在這種架構之下,若是 (RAID 0) A有一臺磁盤驅動器故障,(RAID 0) A就算毀了,固然RAID 1仍然能夠正常工做;若是這時 (RAID 0) B也有一臺磁盤驅動器故障,(RAID 0) B也就算毀了,此時RAID 1的兩磁盤驅動器都算故障,整個RAID 1資料就毀了。
所以,RAID 0 OVER RAID 1應該比RAID 1 OVER RAID 0具有比較高的可靠度。因此咱們建議,當採用RAID 0+1/RAID 10架構時,要先做RAID 1,再把數個RAID 1作成RAID 0。
3. 怎樣選擇Raid級別;
RAID 012345 到底哪種適合你,不僅是成本問題,容錯功能和傳輸性能的考慮以及將來之可擴充性都應該符合應用的需求。
RAID 在市場上的的應用,已經不是新鮮的事兒了,不少人都大略瞭解RAID的基本觀念,以及各個不一樣RAID LEVEL 的區分。可是在實際應用 面,咱們發現,有不少使用者對於選擇一個合適的RAID LEVEL,仍然沒法很確切的掌握,尤爲是對於RAID 0+1 (10),RAID 3, RAID 5之間的選擇取捨,更是猶豫不定。
3.1 RAID條切「striped」的存取模式;
在使用數據條切﹝Data Stripping﹞ 的RAID 系統之中,對成員磁盤驅動器的存取方式,可分爲兩種:
並行存取﹝Paralleled Access﹞
獨立存取﹝Independent Access﹞
獨立存取﹝Independent Access﹞
RAID 2和RAID 3 是採起並行存取模式。
RAID 0、RAID 四、RAID 5及RAID 6則是採用獨立存取模式。
3.2 平行存取模式;
並行存取模式支持裏,是把全部磁盤驅動器的主軸馬達做精密的控制,使每一個磁盤的位置都彼此同步,而後對每個磁盤驅動器做一個很短的I/O數據傳送,如此一來,從主機來的每個I/O 指令,都平均分佈到每個磁盤驅動器。
爲了達到並行存取的功能,RAID 中的每個磁盤驅動器,都必須具有幾乎徹底相同的規格:轉速必須同樣;磁頭搜尋速度﹝Access Time﹞必須相同;Buffer 或Cache的容量和存取速度要一致;CPU處理指令的速度要相同;I/O Channel 的速度也要同樣。總而言之,要利用並行存取模式,RAID 中全部的成員磁盤驅動器,應該使用同一廠牌,相同型號的磁盤驅動器。
3.2.1 並行存取的基本工做原理;
假設RAID中共有四部相同規格的磁盤驅動器,分別爲磁盤驅動器A、B、C和D,咱們在把時間軸略分爲T0、T一、T二、T3和T4:
T0: RAID控制器將第一筆數據傳送到A的Buffer,磁盤驅動器B、C和D的Buffer都是空的,在等待中
T1: RAID控制器將第二筆數據傳送到B的Buffer,A開始把Buffer中的數據寫入扇區,磁盤驅動器C和D的Buffer都是空的,在等待中
T2: RAID控制器將第三筆數據傳送到C的Buffer,B開始把Buffer中的數據寫入扇區,A已經完成寫入動做,磁盤驅動器D和A的Buffer都是空的,在等待中
T3: RAID控制器將第四筆數據傳送到D的Buffer,C開始把Buffer中的數據寫入扇區,B已經完成寫入動做,磁盤驅動器A和B的Buffer都是空的,在等待中
T4: RAID控制器將第五筆數據傳送到A的Buffer,D開始把Buffer中的數據寫入扇區,C已經完成寫入動做,磁盤驅動器B和C的Buffer都是空的,在等待中
T1: RAID控制器將第二筆數據傳送到B的Buffer,A開始把Buffer中的數據寫入扇區,磁盤驅動器C和D的Buffer都是空的,在等待中
T2: RAID控制器將第三筆數據傳送到C的Buffer,B開始把Buffer中的數據寫入扇區,A已經完成寫入動做,磁盤驅動器D和A的Buffer都是空的,在等待中
T3: RAID控制器將第四筆數據傳送到D的Buffer,C開始把Buffer中的數據寫入扇區,B已經完成寫入動做,磁盤驅動器A和B的Buffer都是空的,在等待中
T4: RAID控制器將第五筆數據傳送到A的Buffer,D開始把Buffer中的數據寫入扇區,C已經完成寫入動做,磁盤驅動器B和C的Buffer都是空的,在等待中
如此一直循環,一直到把從主機來的這個I/O 指令處理完畢,RAID控制器纔會受處理下一個I/O 指令。重點是在任何一個磁盤驅動器準備好把數據寫入扇區時,該目的扇區必須剛恰好轉到磁頭下。同時RAID控制器每依次傳給一個磁盤驅動器的數據長度,也必須剛恰好,配合磁盤驅動器的轉速,不然一旦發生 miss,RAID 性能就大打折扣。
3.2.2 並行存取RAID的最佳應用;
並行存取RAID之架構,以其精細的馬達控制和分佈之數據傳輸,將數組中每個磁盤驅動器的性能發揮到最大,同時充分利用Storage Bus的頻寬,所以特別適合應用在大型、數據連續的檔案存取應用,例如:
3.2.2 並行存取RAID的最佳應用;
並行存取RAID之架構,以其精細的馬達控制和分佈之數據傳輸,將數組中每個磁盤驅動器的性能發揮到最大,同時充分利用Storage Bus的頻寬,所以特別適合應用在大型、數據連續的檔案存取應用,例如:
影像、視訊檔案服務器
數據倉儲系統
多媒體數據庫
電子圖書館
印前或底片輸出檔案服務器
其它大型且連續性檔案服務器
數據倉儲系統
多媒體數據庫
電子圖書館
印前或底片輸出檔案服務器
其它大型且連續性檔案服務器
因爲並行存取RAID架構之特性,RAID 控制器一次只能處理一個I/O要求,沒法執行Overlapping 的多任務,所以很是不適合應用在 I/O次數頻繁、數據隨機存取、每筆數據傳輸量小的環境。同時,由於並行存取沒法執行Overlapping 的多任務,所以沒有辦法"隱藏"磁盤驅動器搜尋﹝seek﹞的時間,並且在每個I/O的第一筆數據傳輸,都要等待第一個磁盤驅動器旋轉延遲﹝rotational latency﹞,平均爲旋轉半圈的時間,若是使用一萬轉的磁盤驅動器,平均就須要等待50 usec。因此機械延遲時間,是並行存取架構的最大問題。
3.3 獨立存取模式;
相對於並行存取模式,獨立存取模式並不對成員磁盤驅動器做同步轉動控制,其對每一個磁盤驅動器的存取,都是獨立且沒有順序和時間間格的限制,同時每筆傳輸的數據量都比較大。所以,獨立存取模式能夠儘可能地利用overlapping 多任務、Tagged Command Queuing等等高階功能,來" 隱藏"上述磁盤驅動器的機械時間延遲﹝Seek 和Rotational Latency﹞。
因爲獨立存取模式能夠作overlapping 多任務,並且能夠同時處理來自多個主機不一樣的I/O Requests,在多主機環境﹝如Clustering﹞,更可發揮最大的性能。
3.3.1 獨立存取RAID的最佳應用;
因爲獨立存取模式能夠同時接受多個I/O Requests,所以特別適合應用在數據存取頻繁、每筆數據量較小的系統。例如:
在線交易系統或電子商務應用
多使用者數據庫
ERM及MRP 系統
小文件之文件服務器
多使用者數據庫
ERM及MRP 系統
小文件之文件服務器
4. 建立和維護Raid;
4.1 mdadm;
在Linux服務器中是經過mdadm工具來建立和維護軟RAID的,mdadm在建立和管理軟RAID時很是方便,並且很靈活。mdadm經常使用的參數有以下:
4.1.1 建立分區;
【實例1】
4.1.2 建立RAID 5;
建立完/dev/sdb一、/dev/sdc一、/dev/sdd一、/dev/sde1四個分區後,下面就能夠來建立RAID 5了,其中設定/dev/sde1做爲備用設備,其他爲活動設備,備用設備的做用是一旦某一設備損壞能夠當即使用備用設備替換。操做命令以下:
其中「--spare-devices=1」表示當前陣列中備用設備只有一塊,即做爲備用設備的「/dev/sde1」,如有多塊備用設備,則將「--spare-devices」的值設置爲相應的數目。成功建立完成RAID設備後,經過以下命令能夠查看到RAID的詳細信息:
4.1.3 建立RAID的配置文件;
RAID的配置文件名爲「mdadm.conf」,默認是不存在的,因此須要手工建立,該配置文件存在的主要做用是系統啓動的時候可以自動加載軟RAID,同時也方便往後管理。「mdadm.conf」文件內容包括:由DEVICE選項指定用於軟RAID的全部設備,和ARRAY選項所指定陣列的設備名、RAID級別、陣列中活動設備的數目以及設備的UUID號。生成RAID配置文件操作以下:
可是當前生成「mdadm.conf」文件的內容並不符合所規定的格式,因此也是不生效的,這時須要手工修改該文件內容爲以下格式:
若是沒有建立RAID的配置文件,那麼在每次系統啓動後,須要手工加載軟RAID才能使用,手工加載軟RAID的命令是:
4.1.4 建立文件系統;
接下來就只須要在RAID設備上建立文件系統就可以使用了,在RAID設備上建立文件系統和在分區或磁盤上建立文件系統的方法同樣。在設備「/dev/md0」上建立ext3的文件系統命令以下:
建立完文件系統後,將該設備掛載上就可正常的使用了。若是要建立其它級別的RAID,其步驟和建立RAID 5基本都同樣,區別在於指定「--level」值的時候,須要將該值設置爲相應的級別。
4.2 維護軟RAID;
軟RAID雖然很大程度上能保證數據的可靠性,可是在平常的工做中,有時可能須要對RAID進行調整以及不排除RAID設備物理介質損壞的可能等相關問題
4.2.1 模擬故障磁盤;
* --create或-C:建立一個新的軟RAID,後面接raid設備的名稱。例如,/dev/md0,/dev/md1等。
*--assemble或-A:加載一個已存在的陣列,後面跟陣列以及設備的名稱。
*--detail或-D:輸出指定RAID設備的詳細信息。
*--stop或-S:中止指定的RAID設備。
*--level或-l:設置RAID的級別,例如,設置「--level=5」則表示建立陣列的級別是RAID 5。
*--raid-devices或-n:指定陣列中活動磁盤的數目。
*--scan或-s:掃描配置文件或/proc/mdstat文件來搜索軟RAID的配置信息,該參數不能單獨使用,只能配置其它參數才能使用。
下面將經過一個實例來說述經過mdadm如何實現軟RAID的功能。
4.1.1 建立分區;
【實例1】
某臺機器上有4塊空閒的硬盤,分別是/dev/sdb、/dev/sdc、/dev/sdd和/dev/sde,並用這四塊硬盤來建立來建立一個RAID 5,具體操做步驟以下:
首先使用「fdisk」命令在每塊硬盤上建立一個分區,操做以下:
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建立新分區
Command action
e extended
p primary partition (1-4) #輸入p 選擇建立主分區
p
Partition number (1-4): 1 #輸入 1 建立第一個主分區
First cylinder (1-102, default 1): #直接回車,選擇分區開始柱面這裏就從 1 開始
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寫盤
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
針對其他幾塊硬盤也作相同操做,按照此步驟在另外的兩塊磁盤上作一樣的操做;
所有作完後,運行 fdisk -l 應該能夠看到以下信息:
所有作完後,運行 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
看到上面三個磁盤上分別建了一個分區,分區大小都同樣;
4.1.2 建立RAID 5;
建立完/dev/sdb一、/dev/sdc一、/dev/sdd一、/dev/sde1四個分區後,下面就能夠來建立RAID 5了,其中設定/dev/sde1做爲備用設備,其他爲活動設備,備用設備的做用是一旦某一設備損壞能夠當即使用備用設備替換。操做命令以下:
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.
其中「--spare-devices=1」表示當前陣列中備用設備只有一塊,即做爲備用設備的「/dev/sde1」,如有多塊備用設備,則將「--spare-devices」的值設置爲相應的數目。成功建立完成RAID設備後,經過以下命令能夠查看到RAID的詳細信息:
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 建立RAID的配置文件;
RAID的配置文件名爲「mdadm.conf」,默認是不存在的,因此須要手工建立,該配置文件存在的主要做用是系統啓動的時候可以自動加載軟RAID,同時也方便往後管理。「mdadm.conf」文件內容包括:由DEVICE選項指定用於軟RAID的全部設備,和ARRAY選項所指定陣列的設備名、RAID級別、陣列中活動設備的數目以及設備的UUID號。生成RAID配置文件操作以下:
root@xiaop-laptop:/# mdadm --detail --scan > /etc/mdadm.conf
可是當前生成「mdadm.conf」文件的內容並不符合所規定的格式,因此也是不生效的,這時須要手工修改該文件內容爲以下格式:
root@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:efe19d75
若是沒有建立RAID的配置文件,那麼在每次系統啓動後,須要手工加載軟RAID才能使用,手工加載軟RAID的命令是:
root@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 建立文件系統;
接下來就只須要在RAID設備上建立文件系統就可以使用了,在RAID設備上建立文件系統和在分區或磁盤上建立文件系統的方法同樣。在設備「/dev/md0」上建立ext3的文件系統命令以下:
root@xiaop-laptop:/# mkfs.ext3 /dev/md0
建立完文件系統後,將該設備掛載上就可正常的使用了。若是要建立其它級別的RAID,其步驟和建立RAID 5基本都同樣,區別在於指定「--level」值的時候,須要將該值設置爲相應的級別。
4.2 維護軟RAID;
軟RAID雖然很大程度上能保證數據的可靠性,可是在平常的工做中,有時可能須要對RAID進行調整以及不排除RAID設備物理介質損壞的可能等相關問題
,當遇到這些狀況時,那麼一樣能夠經過「mdadm」命令來完成這些操做。下面也將經過一個實例來介紹更換RAID故障磁盤的完整過程。
4.2.1 模擬故障磁盤;
【實例2】
之前面的【實例1】爲基礎,假定其中的「/dev/sdc1」設備出現故障時,更換一個新的磁盤,整個過程的詳細說明以下:
在實際中,當軟RAID檢測到某個磁盤有故障時,會自動標記該磁盤爲故障磁盤,並中止對故障磁盤的讀寫操做,因此這裏須要將/dev/sdc1標記爲出現故障的磁盤,命令以下:
在實際中,當軟RAID檢測到某個磁盤有故障時,會自動標記該磁盤爲故障磁盤,並中止對故障磁盤的讀寫操做,因此這裏須要將/dev/sdc1標記爲出現故障的磁盤,命令以下:
root@xiaop-laptop:/# mdadm /dev/md0 --fail /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0
因爲【實例1】中的RAID 5設置了一個備用設備,因此當有標記爲故障磁盤的時候,備用磁盤會自動頂替故障磁盤工做,陣列也可以在短期內實現重建。經過「/proc/mdstat」文件可查看到當前陣列的狀態,以下:
以上信息代表陣列正在重建,當一個設備出現故障或被標記故障時,相應設備的方括號後將被標以(F),如「sdc1[4](F)」,其中「[3/2]」的第一位數表示陣列所包含的設備數,第二位數表示活動的設備數,由於目前有一個故障設備,因此第二位數爲2;這時的陣列以降級模式運行,雖然該陣列仍然可用,可是不具備數據冗餘;而「[U_U]」表示當前陣列能夠正常使用的設備是/dev/sdb1和/dev/sdd1,若是是設備「/dev/sdb1」出現故障時,則將變成[_UU]。
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>
以上信息代表陣列正在重建,當一個設備出現故障或被標記故障時,相應設備的方括號後將被標以(F),如「sdc1[4](F)」,其中「[3/2]」的第一位數表示陣列所包含的設備數,第二位數表示活動的設備數,由於目前有一個故障設備,因此第二位數爲2;這時的陣列以降級模式運行,雖然該陣列仍然可用,可是不具備數據冗餘;而「[U_U]」表示當前陣列能夠正常使用的設備是/dev/sdb1和/dev/sdd1,若是是設備「/dev/sdb1」出現故障時,則將變成[_UU]。
重建完數據後,再次查看陣列狀態時,就會發現當前的RAID設備又恢復了正常,以下:
4.2.2 移除故障磁盤;
既然「/dev/sdc1」出現了故障,固然要移除該設備,移除故障磁盤的操做以下:
其中「—remove」表示移除指定RAID設備中的某個磁盤,也可用「-r」來代替該參數。
4.2.3 添加新硬盤;
在添加新的硬盤前,一樣須要對新硬盤進行建立分區的操做,例如,添加新硬盤的設備名爲「/dev/sdc1」,則具體操做以下:
其中「--add」與前面的「--remove」其義恰好相反,用於將某個磁盤添加到指定的設備中,也可用「-a」代替該參數。
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 移除故障磁盤;
既然「/dev/sdc1」出現了故障,固然要移除該設備,移除故障磁盤的操做以下:
root@xiaop-laptop:/# mdadm /dev/md0 --remove /dev/sdc1
mdadm: hot removed /dev/sdc1
其中「—remove」表示移除指定RAID設備中的某個磁盤,也可用「-r」來代替該參數。
4.2.3 添加新硬盤;
在添加新的硬盤前,一樣須要對新硬盤進行建立分區的操做,例如,添加新硬盤的設備名爲「/dev/sdc1」,則具體操做以下:
root@xiaop-laptop:/# mdadm /dev/md0 --add /dev/sdc1
mdadm: hot added /dev/sdc1
其中「--add」與前面的「--remove」其義恰好相反,用於將某個磁盤添加到指定的設備中,也可用「-a」代替該參數。
因爲【實例1】中的RAID 5設置了一個備用設備,因此不須要作任何操做RAID 5也能正常運行,可是若是這時某塊磁盤再出現故障的話,會致使RAID 5沒有數據冗餘功能,這對於存放重要的數據的設備來講顯得太不安全了。那麼這時增長到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
0javascript
收藏css
推薦專欄更多
猜你喜歡
個人友情連接
Linux入門筆記之一:系統分區及掛載點
咱們不得不面對的中年職場危機
Java線程:線程的調度-休眠
用光影魔術手製做一寸照片(8張一寸)
職場終極密籍--記個人職業生涯
個人IT職場生涯: 畢業4年,月薪過萬
Linux關閉休眠和屏保模式
年薪從0到10萬-個人IT職場經驗總結
Windows7刪除休眠文件hiberfil.sys節省大量C盤空間
致IT同仁 — IT人士常犯的17個職場錯誤
「跳槽加薪」現象,無奈的職場規則
【有獎徵文】分享AWS實踐經驗 贏大獎
技術點解讀 | aelf共識標準設計
XSS 掃描器成長記
從 0 開始入門 Chrome Ext 安全(番外篇) -- ZoomEye Tools
# IT明星不是夢 # 給你10000+曝光,讓更多人認識你!
[新時代·全連接]區塊鏈技術峯會 暨HDZ深圳社區成立
手把手玩轉Elasticsearch
約起來!每個技術人都要參加的微軟技術大會
Ctrl+Enter 發佈html
發佈java
取消node