前言
一、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