前言
一、raid的定義與作用
raid(獨立冗餘磁碟陣列)。raid技術通過把多個硬碟裝置組合成一個容量更大的,安全性更好的磁碟陣列。把資料切割成許多區段後分別放在不同的物理磁碟上,然後利用分散讀寫技術來提升磁碟陣列整體的效能,同時把多個重要資料的副本同步到不同的物理裝置上,從而起到了非常好的資料冗餘備份效果。缺點就是磁碟利用率低。
二、raid的分類
raid的分類目前來說至少有幾十種,這裡簡單介紹一下最常見的四種,raid0,raid1,raid10,raid5。
1、RAID 0
RAID 0是最早出現的RAID模式,即Data Stripping資料分條技術。RAID 0是組建磁碟陣列中最簡單的一種形式,只需要2塊以上的硬碟即可,成本低,可以提高整個磁碟的效能和吞吐量。RAID 0沒有提供冗餘或錯誤修復能力,但實現成本是最低的。
2、RAID 1
RAID 1稱為磁碟映象,原理是把一個磁碟的資料映象到另一個磁碟上,也就是說資料在寫入一塊磁碟的同時,會在另一塊閒置的磁碟上生成映象檔案,在不影響效能情況下最大限度的保證系統的可靠性和可修復性上,只要系統中任何一對映象盤中至少有一塊磁碟可以使用,甚至可以在一半數量的硬碟出現問題時系統都可以正常執行,當一塊硬碟失效時,系統會忽略該硬碟,轉而使用剩餘的映象盤讀寫資料,具備很好的磁碟冗餘能力。雖然這樣對資料來講絕對安全,但是成本也會明顯增加,磁碟利用率為50%。
3、RAID0+1
RAID 0+1名稱上我們便可以看出是RAID0與RAID1的結合體。在我們單獨使用RAID 1也會出現類似單獨使用RAID 0那樣的問題,即在同一時間內只能向一塊磁碟寫入資料,不能充分利用所有的資源。為了解決這一問題,我們可以在磁碟映象中建立帶區集。因為這種配置方式綜合了帶區集和映象的優勢,所以被稱為RAID 0+1。把RAID0和RAID1技術結合起來,資料除分佈在多個盤上外,每個盤都有其物理映象盤,提供全冗餘能力,允許一個以下磁碟故障,而不影響資料可用性,並具有快速讀/寫能力。RAID0+1要在磁碟映象中建立帶區集至少4個硬碟。也有一種叫法叫raid10.
4、RAID5:分散式奇偶校驗的獨立磁碟結構
它的奇偶校驗碼存在於所有磁碟上。RAID5的讀出效率很高,寫入效率一般,塊式的集體訪問效率不錯。因為奇偶校驗碼在不同的磁碟上,所以提高了可靠性。但是它對資料傳輸的並行性解決不好,而且控制器的設計也相當困難。在RAID 5中有“寫損失”,即每一次寫操作,將產生四個實際的讀/寫操作,其中兩次讀舊的資料及奇偶資訊,兩次寫新的資料及奇偶資訊。
總結:raid0大幅度提升了裝置的讀寫效能,但不具備容錯能力。raid1雖然十分注重資料安全,但磁碟利用率太低。raid5就是raid0和raid5的一種折中,既提升了磁碟讀寫能力,又有一定的容錯能力,成本也低。raid10就是raid0和raid1的組合,大幅度提升讀寫能力,較強的容錯能力,成本也較高。一般中小企業用raid5,大企業採用raid10。
這裡主要介紹raid5的搭建與測試。主要內容:一、新增硬碟。二、對磁碟進行初始化設定。三、搭建raid5。四、raid5的測試。五、raid5的維護。六、mdadm命令總結。
Raid5的搭建
一、 首先新增四塊硬碟
二、reboot重啟並對磁碟進行初始化設定
reboot重啟
三、搭建raid5
1,yum install -y mdadm //安裝madam (madam是Linux下的raid管理工具)
2,mdadm -C /dev/md0 -ayes -l5 -n3 -x1 /dev/sd[b-e]1 //用sdb1,sdc1,sdd1,sde1四塊磁碟其中3塊建立raid5,名稱為md0,另外一塊作為熱備份。
madam引數說明
-C --create 建立陣列;
-a --auto 同意建立裝置,如不加此引數時必須先使用mknod 命令來建立一個RAID裝置,不過推薦使用-a yes引數一次性建立;
-l --level 陣列模式,支援的陣列模式有 linear, raid0, raid1, raid4, raid5, raid6, raid10, multipath, faulty, container;
-n --raid-devices 陣列中活動磁碟的數目,該數目加上備用磁碟的數目應該等於陣列中總的磁碟數目;
3,檢視raid5狀態
cat /proc/mdstat
mdadm -D /dev/md0
4,新增raid5到raid配置檔案並做修改
echo 'DEVICE /dev/sd[b-e]1' >>/etc/mdadm.conf
mdadm -Ds >>/etc/mdadm.conf
5,格式化磁碟陣列
mkfs.xfs /dev/md0
6,建立掛載點並掛載
mkdir /raid5
mount /dev/md0 /raid5/
7,將掛載寫入開機啟動項
vi /etc/fstab
四,測試raid5
1, 建立檔案a.txt 和 b.txt
2, 模擬其中一塊磁碟壞道,我選擇讓sdb1損壞,然後檢視raid陣列資訊情況,發現熱備份磁碟sde1自動替換已損壞了的sdb1。並且資料無損失
3, 移除已損壞的磁碟,新增一塊新硬碟作為熱備份盤,並檢視資料情況
mdadm /dev/md0 -r /dev/sdb1
注意:在實際中sdb1已經是另一塊完好的硬碟了。不是說之前損壞的那塊移除再新增就好了。
五,維護raid5
1, 向raid5中新增儲存硬碟
mdadm /dev/md0 -a /dev/sdf1
由於預設是新增成熱備盤,得把熱備盤改為活動盤
mdadm /dev/md0 -G -n4 //-G改變raid中的活動盤的數量,一般和-n連用。-n用來指定raid中活動盤的數量。最好保證要有足夠的熱備盤新增。
檢視狀態,新增完成
2,檢視檔案系統發現總容量未變
此時需要對檔案系統擴容
resize2fs /dev/md0 //resizefx適用於ext3,ext4等檔案系統不適用於xfs檔案系統
xfs_growfs /dev/md0 //xfs_growfs對xfs檔案系統進行擴容
關於mdadm的相關引數彙總
-C --create 建立陣列;
-a --auto 同意建立裝置,如不加此引數時必須先使用mknod 命令來建立一個RAID裝置,不過推薦使用-a yes引數一次性建立;
-l --level 陣列模式,支援的陣列模式有 linear, raid0, raid1, raid4, raid5, raid6, raid10, multipath, faulty, container;
-n --raid-devices 陣列中活動磁碟的數目,該數目加上備用磁碟的數目應該等於陣列中總的磁碟數目;
-x 熱備盤數目
例項:mdadm -C /dev/md0 -ayes -l5 -n3 -x1 /dev/sd[b-e]1 //用sdb1,sdc1,sdd1,sde1四塊磁碟其中3塊建立raid5,名稱為md0,另外一塊作為熱備份。
-D --detail 檢視raid裝置的詳細資訊
-f 使一塊raid磁碟故障
-a 增加一塊raid磁碟
-r 移除一塊故障的raid磁碟
-s --scan:掃描配置檔案或 /proc/mdstat以搜尋丟失的資訊
-S 停止raid磁碟陣列
例項:
mdadm -Ds >>/etc/mdadm.conf
mdadm /dev/md0 -f /dev/sdb1
mdadm /dev/md0 -r /dev/sdb1
mdadm /dev/md0 -a /dev/sdf1
mdadm /dev/md0 -G -n4 //-G改變raid中的活動盤的數量,一般和-n連用。-n用來指定raid中活動盤的數量。最好保證要有足夠的熱備盤新增。
參考閱讀 http://www.cnblogs.com/mchina/p/linux-centos-disk-array-software_raid.html