1. 程式人生 > >關於raid的基本原理、軟raid的實現演示

關於raid的基本原理、軟raid的實現演示

需要 hunk 否則 一個 復制 裝備 容錯 穩定 raid

一、RAID的基本原理
1、什麽是RAID?
RAID是指磁盤陣列(Redundant Arrays of Independent Drives,RAID),其是由多個價格便宜的磁盤組合成一個容量巨大的磁盤組,以此來提升磁盤的系統效能。

2、作用及優點
第一、提高傳輸速率。RAID通過在多個磁盤上同時存儲和讀取數據來大幅提高存儲系統的數據吞吐量。
原因:在RAID中,可以讓很多磁盤驅動器同時傳輸數據,而這些磁盤驅動器在邏輯上又是一個磁盤驅動器。
第二、通過數據校驗提供容錯功能。RAID容錯是建立在每個磁盤驅動器的硬件容錯功能之上的,所以它提供更高的安全性。
在很多RAID模式中都有較為完備的相互校驗/恢復的措施,甚至是直接相互的鏡像備份,從而大大提高了RAID系統的容錯度,提高了系統的穩定冗余性。

3、常用RAID的級別
RAID0
至少需要兩塊硬盤。在讀寫數據時,將數據分開寫到各塊硬盤上,以此來提高讀寫功能。
例子:假設有兩塊硬盤Disk1、Disk2,數據為A={A1,A2,A3...}則有
技術分享圖片

     優點:成本低、最易實現,讀寫性能都提升
     缺點:沒有冗余性能,任何一塊磁盤損壞這所有數據都不能訪問。
** RAID1(磁盤鏡像)**
    需要倆塊硬盤。在讀寫數據時,先將硬盤分成兩組,將數據分別寫到每一組中。以便提供冗余性。同時從倆組硬盤上讀寫數據能提高其性能。
    例子:假設有兩塊硬盤Disk1、Disk2,數據為A={A1,A2,A3...}則有
    ![](http://i2.51cto.com/images/blog/201811/22/2eb9dc196b537a5f890388144a9ab550.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
    優點:具有冗余性,一塊磁盤損壞仍可繼續使用,較安全。讀性能提升,寫性能下降。
    缺點:但磁盤利用率很低,只有50%,另外,出現硬盤故障的RAID系統不再可靠,應當及時的更換損壞的硬盤,否則剩余的鏡像盤也出現問題,那麽整個系統就會崩潰。

RAID4
至少需要3塊硬盤。使用校驗信息技術在磁盤上存取數據。在丟失一塊磁盤的時候可以通過校驗信息與剩余磁盤數據恢復丟失的數據。但丟失兩塊時則無法恢復
例子:假設有四塊硬盤Disk1、Disk2、Disk3、Disk4,數據為A、B、C...
技術分享圖片

    優點:具有一定冗余性,磁盤利用率為1/(n-1),可進行並行操作。
    缺點:若損失磁盤超過一塊或者修復數據時再損壞就數據永久損失了,並且在恢復數據時系統效率變低,校驗碼盤壓力大容易形成瓶頸。

RAID5
至少需要3塊硬盤。使用校驗信息技術在磁盤上交叉存取數據。在丟失一塊磁盤的時候可以通過校驗信息與剩余磁盤數據恢復丟失的數據。但丟失兩塊時則無法恢復

例子:假設有四塊硬盤Disk1、Disk2、Disk3、Disk4,數據為A、B、C...
技術分享圖片

    優點:具有一定冗余性,磁盤利用率為1/(n-1),可進行並行操作。讀寫性能提升
    缺點:若損失磁盤超過一塊或者修復數據時再損壞就數據永久損失了,並且在恢復數據時系統效率變低

**RAID0+1**
    至少需要偶數塊磁盤。在讀寫數據時,先將硬盤分成兩組,將數據鏡像寫到每一組中。每組數據在進行分布式讀寫。
    例子:假設有四塊硬盤Disk1、Disk2、Disk3、Disk4,數據為A
    ![](http://i2.51cto.com/images/blog/201811/22/2bc709a17705f4980dba9f72b3f6d5e8.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
    優點:讀寫性能提升、具有冗余性
    缺點:RAID 0+1 只要有一個硬盤受損,同組RAID 0的所有硬盤亦會停止運作,可靠性較低。價格不菲,空間利用率為50%

**RAID1+0**
    至少需要偶數塊磁盤。在讀寫數據時,先將硬盤分成n/2組,將數據分布式鏡像寫到每一組中。
    例子:假設有六塊硬盤Disk1、Disk2、Disk3、Disk4、Disk5、Disk6,數據為A
    ![](http://i2.51cto.com/images/blog/201811/22/2354355a2f44584fcf79a6456bf02839.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

    優點:讀寫性能提升、具有冗余性,相較0+1可靠性更高
    缺點:價格不菲,空間利用率為50%

4、能組合的盤
SATA
SAS
SCSI

二、軟RAID的實現
內核中有個md模塊,用其將/dev/sd模擬成一個邏輯raid(軟設備),在/dev/md#下(#為數字,raid的標誌)
mdadm:md管理器,使用這個命令來創建raid。在linux中支持將任何塊設備做成raid。
演示:此次創建軟raid是在一塊磁盤上創建。實際中在一塊磁盤上創建raid沒有任何意義。

mdadm:(為一種模式化命令)
-C:創建模式
-F:監控模式
-G:增長模式
-A:裝配模式
--add、--fail、--remove:管理模式
模式中的專用選項:
-C /dev/md#下(#為數字)
-l 級別
-n 設備(硬盤)個數
-a 是否自動為其創建設備文件{yes|no}
-c CHUNK(數據塊)大小
-D /dev/md#(#為數字) 顯示md#的詳細信息(--detail)

測試:
如何創建一個2G大小的raid?
註意:可以用四個512M大小或者兩個1G大小分區。其大小一定要相同 。
在/dev/sdb的邏輯分區上創建磁盤分區/dev/sdb5、/dev/sdb6,類型為fd,大小分別為1G
#partprobe /dev/sdb //讀取分區
#cat /proc/partitions //查看分區讀取是否成功
技術分享圖片

#mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{5,6} //創建md0文件設備,級別為0,個數為2,分別為/dev/sdb5、6
技術分享圖片

#cat /proc/mdstat //顯示當前系統下已啟用的raid設備
技術分享圖片
從中可以看到md0已經啟用

#mke2fs -j /dev/md0 //格式化設備
技術分享圖片
#fdisk -l //查看設備
技術分享圖片
#mount /dev/md0 /mnt //將設備掛載到/mnt目錄下
#ls /mnt //ls /mnt目錄查看
技術分享圖片
此時,這個raid設備啟用成功。可用mdadm命令查看詳情
#mdadm -D /dev/md0
技術分享圖片

創建一個2G大小的raid1?
答:在/dev/sdb的邏輯分區上創建磁盤分區/dev/sdb7、/dev/sdb8,類型為fd,大小分別為2G(再次另外再創建一個/dev/sdb9,大小為2G)
技術分享圖片

如何添加移除設備以及停止陣列
先手動模擬使/dev/sdb7損壞
#mdadm /dev/md1 --fail /dev/sdb7
#mdadm -D /dev/md1
技術分享圖片
從圖中可以看到/dev/sdb7設備已損壞
移除損壞設備 /dev/sdb7
#mdadm /dev/md1 --remove /dev/sdb7
#mdadm -D /dev/md1
技術分享圖片

新添設備 /dev/sdb9(新添的設備大小一定要和以前的大小相等)
#mdadm /dev/md1 --add /dev/sdb9
#mdadm -D /dev/md1
技術分享圖片

技術分享圖片
可以看到原來損壞的/dev/sdb7被新的/dev/sdb9所替代了。再替代之後會有一段時間的鏡像復制過程。將/dev/sdb8的數據復制到/dev/sdb9上面。

如何停止陣列?
先將raid設備卸載:
#umount /media
再停止設備
#mdadm -S /dev/md1
技術分享圖片
#mdadm -S /dev/md1
#rm -rf /dev/md1 //徹底刪除md1設備

如何裝備raid的配置文件?
#mdadm -D --scan > /etc/mdadm.conf //將其保存至配置文件中以便以後進行裝配

*註:這只是我的各人心得,若您覺得有參考價值本人深感榮幸;若有不恰之處,請指出,謝謝!!!

關於raid的基本原理、軟raid的實現演示