1、RAID 簡介html
RAID 是英文Redundant Array of Independent Disks 的縮寫,翻譯成中文意思是「獨立磁盤冗餘陣列」,有時也簡稱磁盤陣列(Disk Array)。linux
簡單的說,RAID是一種把多塊獨立的硬盤(物理硬盤)按不一樣的方式組合起來造成一個硬盤組(邏輯硬盤),從而提供比單個硬盤更高的存儲性能和提供數據備份的技術。數據庫
組成磁盤陣列的不一樣方式稱爲RAID級別(RAID Levels),常見的RAID Level 包括raid0, raid1, raid5, raid10。各level 對好比下:centos
RAID等級 | 最少硬盤 | 最大容錯 | 可用容量 | 讀取性能 | 寫入性能 | 安全性 | 目的 | 應用產業 |
0 | 2 | 0 | n | n | n | 一個硬盤異常,所有硬盤都會異常 | 追求最大容量、速度 | 3D產業實時渲染、視頻剪接高速緩存 |
1 | 2 | n-1 | 1 | n | 1 | 最高,一個正常便可 | 追求最大安全性 | 我的、企業備份 |
5 | 3 | 1 | n-1 | n-1 | n-1 | 高 | 追求最大容量、最小預算 | 我的、企業備份 |
10 | 4 | n/2 | n/2 | n | n/2 | 安全性高 | 綜合RAID 0/1優勢,理論速度較快 | 大型數據庫、服務器 |
說明:n 表明硬盤總數api
關於RAID的詳細介紹,請參考:http://zh.wikipedia.org/wiki/RAID緩存
2、系統環境安全
實驗環境:Oracle VM VirtualBox服務器
系統平臺:CentOS release 6.3 (Final)工具
mdadm 版本:mdadm - v3.2.6 - 25th October 2012性能
3、設置磁盤
在Oracle VM VirtualBox 裏模擬物理增長磁盤,在這篇文章中,咱們將建立RAID0, RAID1, RAID5分區,RAID0 須要兩塊硬盤,RAID1 須要兩塊硬盤,RAID5須要四塊硬盤,因此在這裏添加了八塊物理硬盤,每塊5.00 GB.
在Linux 系統裏使用fdisk –l 命令查看。
4、安裝mdadm
mdadm 是multiple devices admin 的簡稱,它是Linux下的一款標準的軟件RAID 管理工具。
4.1 查看是否安裝了mdadm軟件
# rpm -qa|grep mdadm
4.2 若是未安裝,則使用yum 方式安裝。
準備工做完畢,下面能夠着手建立raid 了。
5、建立RAID0
5.1 新建分區
建立RAID0 須要兩塊硬盤,因此咱們拿/dev/sdb 和/dev/sdc 來實驗。
# fdisk /dev/sdb //對sdb 進行分區
輸入"m", 獲取幫助,輸入"p", 查看分區前磁盤狀態,其餘Command action 具體含義請自行Google, Baidu。
輸入"n" 新建分區,這裏咱們將整個磁盤都劃分紅一個分區,而後輸入"p" 查看分區狀況。
5.2 修改分區類型
默認新建分區的類型是Linux,代號83,咱們須要將其修改成raid 類型。輸入"t" ,而後輸入"L" 列出全部的文件格式,這裏咱們選擇"fd Linux raid auto", 輸入"fd",而後再輸入"p" 查看分區狀況,這是分區格式已經變成了Linux raid autodetect.
5.3 保存分區
輸入"w" 保存分區。
使用一樣方法對/dev/sdc 進行分區操做。
5.4 同步分區狀況
使用partprobe 命令同步分區狀況。
5.5 查看如今的狀態
# fdisk -l /dev/sdb /dev/sdc
5.6 開始建立RAID0
# mdadm -C /dev/md0 -ayes -l0 -n2 /dev/sd[b,c]1
說明:
-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
說明: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
5.10 創建掛載點並掛載
# mkdir /raid0
# mount /dev/md0 /raid0/
能夠看到,/dev/md0 的可用大小爲9.9G。
5.11 寫入/etc/fstab
爲了下次開機還能正常使用咱們的RAID設備,須要將掛載的信息寫入/etc/fstab 文件中。
而後reboot 測試開機是否自動掛載,raid0 建立完畢。
6、建立RAID1
和建立raid0 相似,咱們拿/dev/sdd 和/dev/sde 這兩塊硬盤來作實驗。
6.1 新建分區並修改分區類型
使用一樣方法對/dev/sde 進行分區操做,分區結果以下:
6.2 開始建立RAID1
# mdadm -C /dev/md1 -ayes -l1 -n2 /dev/sd[d,e]1
6.3 查看raid1 狀態
# cat /proc/mdstat
# mdadm -D /dev/md1
說明:Used Dev Size : RAID單位成員容量大小,也就是構成RAID的成員硬盤或分區的容量的大小;
能夠看到,raid1 正在建立,待建立完畢,狀態以下:
6.4 添加raid1 到RAID 配置文件/etc/mdadm.conf 並修改
# echo DEVICE /dev/sd{b,c}1 >> /etc/mdadm.conf
# mdadm –Ds >> /etc/mdadm.conf
6.5 格式化磁盤陣列
# mkfs.ext4 /dev/md1
6.6 創建掛載點並掛載
# mkdir /raid1
# mount /dev/md1 /raid1/
能夠看到,/dev/md1 的可用大小爲4.9G。
6.7 寫入/etc/fstab
而後reboot 測試開機是否自動掛載,raid1 建立完畢。
7、建立RAID5
RAID5 至少須要三塊硬盤,咱們拿/dev/sdf, /dev/sdg, /dev/sdh, /dev/sdi 這四塊硬盤來作實驗,三塊作爲活動盤,另外一塊作爲熱備盤。
7.1 新建分區並修改分區類型
分區結果以下:
7.2 開始建立RAID5
# mdadm -C /dev/md5 -ayes -l5 –n3 -x1 /dev/sd[f,g,h,i]1
說明:"-x1" 或"--spare-devices=1" 表示當前陣列中熱備盤只有一塊,如有多塊熱備盤,則將"--spare-devices" 的值設置爲相應的數目。
7.3 查看raid5 狀態
# cat /proc/mdstat
# mdadm -D /dev/md5
說明:Rebuild Status : RAID 的構建進度;
4 8 113 2 spare rebuilding /dev/sdh1 注:未被激活,正在構建中的成員,正在傳輸數據;
3 8 129 - spare /dev/sdi1 熱備盤
raid5 正在建立,並且速度很慢,待建立完畢,狀態以下:
7.4 添加raid5 到RAID配置文件/etc/mdadm.conf 並修改
# echo DEVICE /dev/sd{f,g,h,i}1 >> /etc/mdadm.conf
# mdadm –Ds >> /etc/mdadm.conf
7.5 格式化磁盤陣列
# mkfs.ext4 /dev/md5
7.6 創建掛載點並掛載
# mkdir /raid5
# mount /dev/md5 /raid5/
raid5 的可用大小爲9.9G,即(3-1)x 5G.
向 /raid5 裏面寫入測試數據:
# touch test_raid5.failed
# touch test_raid5.fail
# ls
7.7 寫入 /etc/fstab
而後reboot 測試開機是否自動掛載,raid5 建立完畢。
8、RAID維護
RAID 作好以後,還須要進行平常的維護操做,好比其中一塊物理硬盤損壞,咱們須要進行更換故障磁盤的操做,下面咱們將模擬raid5 中磁盤損壞來說解軟RAID 的維護操做。
8.1 模擬磁盤損壞
在實際中,當軟RAID 檢測到某個磁盤有故障時,會自動標記該磁盤爲故障磁盤,並中止對故障磁盤的讀寫操做。在這裏咱們將/dev/sdh1 模擬爲出現故障的磁盤,命令以下:
# mdadm /dev/md5 -f /dev/sdh1
8.2 查看重建狀態
在上面建立RAID 5過程當中,咱們設置了一個熱備盤,因此當有標記爲故障磁盤的時候,熱備盤會自動頂替故障磁盤工做,陣列也可以在短期內實現重建。經過查看"/proc/mdstat" 文件能夠看到當前陣列的狀態,以下:
以上信息代表陣列正在重建,當一個設備出現故障或被標記故障時,相應設備的方括號後將被標以(F),如 "sdh1[4](F)"。
其中 "[3/2]" 的第一位數表示陣列所包含的設備數,第二位數表示活動的設備數,由於目前有一個故障設備,因此第二位數爲2;
這時的陣列以降級模式運行,雖然該陣列仍然可用,可是不具備數據冗餘;
而 "[UU_]" 表示當前陣列能夠正常使用的設備是/dev/sdf1 和/dev/sdg1,若是是設備 「/dev/sdf1」 出現故障時,則將變成[_UU]。
8.3 查看以前寫入的測試數據是否還在
數據正常,未丟失。
8.4 重建完畢後查看陣列狀態
當前的RAID 設備又恢復了正常。
8.5 移除損壞的磁盤
移除剛纔模擬出現故障的/dev/sdh1,操做以下:
8.6 再次查看md5的狀態
/dev/sdh1 已經移除了。
8.7 新加熱備磁盤
若是是實際生產中添加新的硬盤,一樣須要對新硬盤進行建立分區的操做,這裏咱們爲了方便,將剛纔模擬損壞的硬盤再次新加到raid5 中。
8.8 查看raid5 陣列狀態
/dev/sdh1 已經變成了熱備盤。
8.9 查看測試數據
數據正常,未丟失。故障切換測試完畢。
9、向RAID中增長存儲硬盤
若是如今已經作好的RAID 空間仍是不夠用的話,那麼咱們能夠向裏面增長新的硬盤,來增長RAID 的空間。
9.1 在虛擬機中添加物理硬盤
上面咱們已經在虛擬機中添加了八塊硬盤,這裏須要模擬新增硬盤,因此首先將虛擬機關閉,而後在存儲裏再次新增一塊5GB的硬盤。而後分區等等操做,這裏再也不贅述。
9.2 向RAID 中新加一塊硬盤
# mdadm /dev/md5 -a /dev/sdj1
查看此時的RAID 狀態
默認狀況下,咱們向RAID 中增長的磁盤,會被默認看成熱備盤,咱們須要把熱備盤加入到RAID 的活動盤中。
9.3 熱備盤轉換成活動盤
# mdadm -G /dev/md5 -n4
查看此時RAID 狀態
/dev/sdj1 已經變成了活動盤,可是Array Size : 10465280 (9.98 GiB 10.72 GB) 並無變大,這是由於構建沒有完成,圖中也能夠看出Status 爲clean, reshaping。
等RAID 完成構建後,RAID的容量就會改變爲(4-1)x 5GB,查看進度能夠參考Reshape Status,也能夠參考/proc/mdstat.
構建完畢後的RAID 狀態:
Array Size : 15697920 (14.97 GiB 16.07 GB),磁盤容量已經增長了。
9.4 擴容文件系統
RAID 構建完畢後,陣列容量增長,可是文件系統尚未增長,這時咱們還須要對文件系統進行擴容。
# df –TH
# resize2fs /dev/md5
# df –TH
文件系統已經擴容到15G,並且測試數據正常,未丟失,新增物理硬盤成功。
9.5 修改RAID 配置文件/etc/mdadm.conf
9.6 reboot 測試
重啓系統後,一切正常,Linux下配置軟RAID成功。
轉自:http://www.cnblogs.com/mchina/p/linux-centos-disk-array-software_raid.html