CentOS 6.3下配置軟RAID(Software RAID)

CentOS 6.3下配置軟RAID(Software RAID)

一、RAID 簡介

RAID 是英文Redundant Array of Independent Disks 的縮寫,翻譯成中文意思是“獨立磁盤冗餘陣列”,有時也簡稱磁盤陣列(Disk Array)。

簡單的說,RAID是一種把多塊獨立的硬盤(物理硬盤)按不同的方式組合起來形成一個硬盤組(邏輯硬盤),從而提供比單個硬盤更高的存儲性能和提供數據備份的技術。

組成磁盤陣列的不同方式稱爲RAID級別(RAID Levels),常見的RAID Level 包括raid0, raid1, raid5, raid10。各level 對比如下:

RAID等級最少硬盤最大容錯可用容量讀取性能寫入性能安全性目的應用產業
020nnn一個硬盤異常,全部硬盤都會異常追求最大容量、速度3D產業實時渲染、視頻剪接高速緩存
12n-11n1最高,一個正常即可追求最大安全性個人、企業備份
531n-1n-1n-1追求最大容量、最小預算個人、企業備份
104n/2n/2nn/2安全性高綜合RAID 0/1優點,理論速度較快大型數據庫、服務器

說明:n 代表硬盤總數

關於RAID的詳細介紹,請參考:http://zh.wikipedia.org/wiki/RAID

二、系統環境

實驗環境:Oracle VM VirtualBox

系統平臺:CentOS release 6.3 (Final)

mdadm 版本:mdadm - v3.2.6 - 25th October 2012

三、設置磁盤

在Oracle VM VirtualBox 裏模擬物理增加磁盤,在這篇文章中,我們將創建RAID0, RAID1, RAID5分區,RAID0 需要兩塊硬盤,RAID1 需要兩塊硬盤,RAID5需要四塊硬盤,所以在這裏添加了八塊物理硬盤,每塊5.00 GB.

26

在Linux 系統裏使用fdisk –l 命令查看。

27

四、安裝mdadm

mdadm 是multiple devices admin 的簡稱,它是Linux下的一款標準的軟件RAID 管理工具。

4.1 查看是否安裝了mdadm軟件

# rpm -qa|grep mdadm

9

4.2 如果未安裝,則使用yum 方式安裝。

10

準備工作完畢,下面可以着手創建raid 了。

五、創建RAID0

5.1 新建分區

創建RAID0 需要兩塊硬盤,所以我們拿/dev/sdb 和/dev/sdc 來實驗。

# fdisk /dev/sdb //對sdb 進行分區

輸入"m", 獲取幫助,輸入"p", 查看分區前磁盤狀態,其他Command action 具體含義請自行Google, Baidu。

3

輸入"n" 新建分區,這裏我們將整個磁盤都劃分成一個分區,然後輸入"p" 查看分區情況。

4

5.2 修改分區類型

默認新建分區的類型是Linux,代號83,我們需要將其修改爲raid 類型。輸入"t" ,然後輸入"L" 列出所有的文件格式,這裏我們選擇"fd Linux raid auto", 輸入"fd",然後再輸入"p" 查看分區情況,這是分區格式已經變成了Linux raid autodetect.

5

5.3 保存分區

輸入"w" 保存分區。

6

使用同樣方法對/dev/sdc 進行分區操作。

5.4 同步分區情況

使用partprobe 命令同步分區情況。

7

5.5 查看現在的狀態

# fdisk -l /dev/sdb /dev/sdc

11

5.6 開始創建RAID0

# mdadm -C /dev/md0 -ayes -l0 -n2 /dev/sd[b,c]1

12

說明:

-C  --create  創建陣列;

-a  --auto   同意創建設備,如不加此參數時必須先使用mknod 命令來創建一個RAID設備,不過推薦使用-a yes參數一次性創建;

-l   --level   陣列模式,支持的陣列模式有 linear, raid0, raid1, raid4, raid5, raid6, raid10, multipath, faulty, container;

-n --raid-devices 陣列中活動磁盤的數目,該數目加上備用磁盤的數目應該等於陣列中總的磁盤數目;

/dev/md0     陣列的設備名稱;

/dev/sd{b,c}1  參與創建陣列的磁盤名稱;

5.7 查看raid0 狀態

# cat /proc/mdstat

# mdadm -D /dev/md0

13

說明:Raid Level : 陣列級別;

   Array Size : 陣列容量大小;

   Raid Devices : RAID成員的個數;

   Total Devices : RAID中下屬成員的總計個數,因爲還有冗餘硬盤或分區,也就是spare,爲了RAID的正常運珩,隨時可以推上去加入RAID的;

   State : clean, degraded, recovering 狀態,包括三個狀態,clean 表示正常,degraded 表示有問題,recovering 表示正在恢復或構建;

   Active Devices : 被激活的RAID成員個數;

   Working Devices : 正常的工作的RAID成員個數;

   Failed Devices : 出問題的RAID成員;

   Spare Devices : 備用RAID成員個數,當一個RAID的成員出問題時,用其它硬盤或分區來頂替時,RAID要進行構建,在沒構建完成時,這個成員也會被認爲是spare設備;

   UUID : RAID的UUID值,在系統中是唯一的;

5.8 創建RAID 配置文件/etc/mdadm.conf

RAID 的配置文件爲/etc/mdadm.conf,默認是不存在的,需要手工創建。

該配置文件的主要作用是系統啓動的時候能夠自動加載軟RAID,同時也方便日後管理。但不是必須的,推薦對該文件進行配置。

我們這裏需要創建這個文件,測試中發現,如果沒有這個文件,則reboot 後,已經創建好的md0 會自動變成md127。

/etc/mdadm.conf 文件內容包括:

由DEVICE 選項指定用於軟RAID的所有設備,和ARRAY 選項所指定陣列的設備名、RAID級別、陣列中活動設備的數目以及設備的UUID號。

5.8.1 創建/etc/mdadm.conf

# echo DEVICE /dev/sd{b,c}1 >> /etc/mdadm.conf

# mdadm –Ds >> /etc/mdadm.conf

5.8.2 修改配置文件

當前生成的/etc/mdadm.conf 文件內容並不符合所規定的格式,所以也是不生效的,這時需要手工修改該文件內容爲如下格式:

# cat /etc/mdadm.conf

DEVICE /dev/sdb1 /dev/sdc1

ARRAY /dev/md0 level=raid0 num-devices=2 UUID=5160ea40:cb2b44f1:c650d2ef:0db09fd0

5.9 格式化磁盤陣列

# mkfs.ext4 /dev/md0

14

5.10 建立掛載點並掛載

# mkdir /raid0

# mount /dev/md0 /raid0/

15

可以看到,/dev/md0 的可用大小爲9.9G。

5.11 寫入/etc/fstab

爲了下次開機還能正常使用我們的RAID設備,需要將掛載的信息寫入/etc/fstab 文件中。

16

然後reboot 測試開機是否自動掛載,raid0 創建完畢。

六、創建RAID1

和創建raid0 類似,我們拿/dev/sdd 和/dev/sde 這兩塊硬盤來做實驗。

6.1 新建分區並修改分區類型

17

使用同樣方法對/dev/sde 進行分區操作,分區結果如下:

18

6.2 開始創建RAID1

# mdadm -C /dev/md1 -ayes -l1 -n2 /dev/sd[d,e]1

19

6.3 查看raid1 狀態

# cat /proc/mdstat

# mdadm -D /dev/md1

20

說明:Used Dev Size : RAID單位成員容量大小,也就是構成RAID的成員硬盤或分區的容量的大小;

可以看到,raid1 正在創建,待創建完畢,狀態如下:

21

6.4 添加raid1 到RAID 配置文件/etc/mdadm.conf 並修改

# echo DEVICE /dev/sd{b,c}1 >> /etc/mdadm.conf

# mdadm –Ds >> /etc/mdadm.conf

22

6.5 格式化磁盤陣列

# mkfs.ext4 /dev/md1

23

6.6 建立掛載點並掛載

# mkdir /raid1

# mount /dev/md1 /raid1/

24

可以看到,/dev/md1 的可用大小爲4.9G。

6.7 寫入/etc/fstab

25

然後reboot 測試開機是否自動掛載,raid1 創建完畢。

七、創建RAID5

RAID5 至少需要三塊硬盤,我們拿/dev/sdf, /dev/sdg, /dev/sdh, /dev/sdi 這四塊硬盤來做實驗,三塊做爲活動盤,另一塊做爲熱備盤。

7.1 新建分區並修改分區類型

分區結果如下:

28

7.2 開始創建RAID5

# mdadm -C /dev/md5 -ayes -l5 –n3 -x1 /dev/sd[f,g,h,i]1

29

說明:"-x1" 或"--spare-devices=1" 表示當前陣列中熱備盤只有一塊,若有多塊熱備盤,則將"--spare-devices" 的值設置爲相應的數目。

7.3 查看raid5 狀態

# cat /proc/mdstat

# mdadm -D /dev/md5

30

說明:Rebuild Status : RAID 的構建進度;

4 8 113 2 spare rebuilding /dev/sdh1 注:未被激活,正在構建中的成員,正在傳輸數據;

3 8 129 - spare /dev/sdi1 熱備盤

raid5 正在創建,而且速度很慢,待創建完畢,狀態如下:

31

7.4 添加raid5 到RAID配置文件/etc/mdadm.conf 並修改

# echo DEVICE /dev/sd{f,g,h,i}1 >> /etc/mdadm.conf

# mdadm –Ds >> /etc/mdadm.conf

32

7.5 格式化磁盤陣列

# mkfs.ext4 /dev/md5

33

7.6 建立掛載點並掛載

# mkdir /raid5

# mount /dev/md5 /raid5/

34

raid5 的可用大小爲9.9G,即(3-1)x 5G.

向 /raid5 裏面寫入測試數據:

# touch test_raid5.failed
# touch test_raid5.fail
# ls

38

7.7 寫入 /etc/fstab

35

然後reboot 測試開機是否自動掛載,raid5 創建完畢。

八、RAID維護

RAID 做好之後,還需要進行日常的維護操作,比如其中一塊物理硬盤損壞,我們需要進行更換故障磁盤的操作,下面我們將模擬raid5 中磁盤損壞來講解軟RAID 的維護操作。

8.1 模擬磁盤損壞

在實際中,當軟RAID 檢測到某個磁盤有故障時,會自動標記該磁盤爲故障磁盤,並停止對故障磁盤的讀寫操作。在這裏我們將/dev/sdh1 模擬爲出現故障的磁盤,命令如下:

# mdadm /dev/md5 -f /dev/sdh1

36

8.2 查看重建狀態

在上面創建RAID 5過程中,我們設置了一個熱備盤,所以當有標記爲故障磁盤的時候,熱備盤會自動頂替故障磁盤工作,陣列也能夠在短時間內實現重建。通過查看"/proc/mdstat" 文件可以看到當前陣列的狀態,如下:

37

以上信息表明陣列正在重建,當一個設備出現故障或被標記故障時,相應設備的方括號後將被標以(F),如 "sdh1[4](F)"。

其中 "[3/2]" 的第一位數表示陣列所包含的設備數,第二位數表示活動的設備數,因爲目前有一個故障設備,所以第二位數爲2;

這時的陣列以降級模式運行,雖然該陣列仍然可用,但是不具有數據冗餘;

而 "[UU_]" 表示當前陣列可以正常使用的設備是/dev/sdf1 和/dev/sdg1,如果是設備 “/dev/sdf1” 出現故障時,則將變成[_UU]。

8.3 查看之前寫入的測試數據是否還在

39

數據正常,未丟失。

8.4 重建完畢後查看陣列狀態

40

當前的RAID 設備又恢復了正常。

8.5 移除損壞的磁盤

移除剛纔模擬出現故障的/dev/sdh1,操作如下:

41

8.6 再次查看md5的狀態

42

/dev/sdh1 已經移除了。

8.7 新加熱備磁盤

如果是實際生產中添加新的硬盤,同樣需要對新硬盤進行創建分區的操作,這裏我們爲了方便,將剛纔模擬損壞的硬盤再次新加到raid5 中。

43

8.8 查看raid5 陣列狀態

44

/dev/sdh1 已經變成了熱備盤。

8.9 查看測試數據

45

數據正常,未丟失。故障切換測試完畢。

九、向RAID中增加存儲硬盤

如果現在已經做好的RAID 空間還是不夠用的話,那麼我們可以向裏面增加新的硬盤,來增加RAID 的空間。

9.1 在虛擬機中添加物理硬盤

上面我們已經在虛擬機中添加了八塊硬盤,這裏需要模擬新增硬盤,所以首先將虛擬機關閉,然後在存儲裏再次新增一塊5GB的硬盤。然後分區等等操作,這裏不再贅述。

47

9.2 向RAID 中新加一塊硬盤

# mdadm /dev/md5 -a /dev/sdj1

48

查看此時的RAID 狀態

49

默認情況下,我們向RAID 中增加的磁盤,會被默認當作熱備盤,我們需要把熱備盤加入到RAID 的活動盤中。

9.3 熱備盤轉換成活動盤

# mdadm -G /dev/md5 -n4

50

查看此時RAID 狀態

51

/dev/sdj1 已經變成了活動盤,但是Array Size : 10465280 (9.98 GiB 10.72 GB) 並沒有變大,這是因爲構建沒有完成,圖中也可以看出Status 爲clean, reshaping。

等RAID 完成構建後,RAID的容量就會改變爲(4-1)x 5GB,查看進度可以參考Reshape Status,也可以參考/proc/mdstat.

53

構建完畢後的RAID 狀態:

54

Array Size : 15697920 (14.97 GiB 16.07 GB),磁盤容量已經增加了。

9.4 擴容文件系統

RAID 構建完畢後,陣列容量增加,但是文件系統還沒有增加,這時我們還需要對文件系統進行擴容。

# df –TH

# resize2fs /dev/md5

# df –TH

57

文件系統已經擴容到15G,而且測試數據正常,未丟失,新增物理硬盤成功。

9.5 修改RAID 配置文件/etc/mdadm.conf

56

9.6 reboot 測試

58

重啓系統後,一切正常,Linux下配置軟RAID成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章