天天看點

RAID磁盤陣列實驗小結

<b>RAID</b><b>磁盤陣列實驗小結</b>

RAID(Redundant Array of Independent Disk 獨立備援磁盤陣列),主要應用于大型企業和中小企業在資料保護方面。各個公司依靠不同級别的RAID所提供的備援來保護他們的磁盤驅動器。其應用還是很廣泛的。

RAID 還分為硬體RAID 和軟體RAID,硬體RAID是通過RAID 卡來實作的,而軟體RAID是通過軟體來實作的;在企業級應用領域,大部份都是硬體RAID。而軟體RAID由于成本效益高,大多被中小型企業所采用。

硬體RAID是通過RAID卡把若幹同等容量大小的硬碟,根據使用方向的不同,聚合起來成為一個大的虛拟RAID裝置(或RAID0,或RAID1,或者RAID5,或RAID10……),如果每個硬碟容量不一緻,以最小容量的硬碟為基礎;它的成員是整個硬碟。

軟RAID是軟把若幹同等容量大小的硬碟或分區,根據使用方向的不同,聚合起來成為一個大的虛拟RAID裝置(或RAID0,或RAID1,或者RAID5,或RAID10……),如果每個硬碟或分區容量不一緻,以最小容量的硬碟或分區為基礎。軟RAID的成員是整個硬碟或分區。

由于硬體RAID價格昂貴,是以我們都是基于軟體RAID來實驗的。

OK,開始今天就說下經常見到的RAID0,RAID1和RAID5的基本操作。

RAID0 是把兩個或兩個以上的容量相同的硬碟或分區,通過RAID控制器,合為一個在容量上是RAID0下成員的容量的總和,在寫入時,要向每個硬碟或分區同時寫入資料。

RAID0 在讀寫速度上是比較快的,是普通不做RAID的兩倍左右(注:實際速度和機器的硬體配置有關),是以RAID0常被用于對存儲效率要求較高,但對資料安全性要求不高的應用解決方案中。

安全性:RAID0中有任何一個成員出現故障,整個RAID0就不能被激活。資料不能保障;

在虛拟機下新加三塊磁盤,分别為sdb,sdc,sdd。大小為預設值20G,在sdb上做raid0的實驗,在sdc上做raid1的實驗,在sdd上做raid5的實驗。好了,實驗環境已經準備就緒,開始吧?

第一個要做的是RAID0的基本操作。

劃分好sdb磁盤之後,要記得把sdb1和sdb2的磁盤類型改為fd型,因為隻有fd型的磁盤才能設定RAID磁盤陣列。設定好後儲存退出。下一步是用partprobe指令對剛剛劃分的磁盤進行重新讀取。如圖所示:    

磁盤陣列的指令為mdadm,其主要參數為指令中各參數分别表示如下作用:“-C”指建立一個新的陣列;“/dev/md0”表示陣列裝置名稱;“-l 0”表示設定陣列模式,可以選擇0、1、4、5、6,其分别對應RAID0、RAID1、RAID4、RAID5、RAID6,這裡設為RAID0模式;“-n  2”指設定陣列中活動裝置的數目,該數目加上備用裝置的數目應等于陣列中的總裝置數;“-x1”設定陣列中備份裝置的數目,目前陣列中含有1個備份裝置(在後面的RAID5的實驗中會用到);“-c 64”指設定塊的尺寸為64K,預設為64K;“/dev/sd{1,2}”指目前陣列中包含的裝置名稱,也可以分開來寫,中間用空格分開。

注:在mdadm之前不需要格式化磁盤,直接mdadm即可。

mdadm –V -c –a yes –l 1 –n 2 –c 64 / d e v / s d c { 1 , 2 }

建立完成後,RAID也就立即啟動了。會出現如下一行的提示資訊:

mdadm: array /dev/md0 started.

指令執行完畢後,可以用cat /proc/mdstat指令來檢視一下md0陣列的參數。

接着格式化/dev/md0,并在root目錄下建立raid0檔案,之後挂載/dev/md0。

OK,RAID0的實驗成功了,先來慶賀一下吧!^_^

接下來的實驗是配置RAID1。其配置過程和RAID0實驗的實驗步驟類似。

RAID1就是把若幹相同容量的硬碟或分區,成員與成員之間是鏡像關系。在容量上,RAID1裝置是單個成員的容量。比如兩個80G的硬碟做成RAID1,這個RAID1的裝置容量仍是80G。

因為RAID1存在鏡像備援,是以磁盤利用效率并不高,或者說是“浪費”。這種方案相對來說成本效益并不高,一般很少應用。資料讀寫效率要比RAID0慢。

安全性:RAID1 中隻要有一個成員是健康的,RAID1完全可以激活,而且資料絕對是完整安全的。如果所有的成員有故障,RAID1也就報廢了。哈哈,這不是廢話嗎?

好了,開始吧!

劃分sdc磁盤,建立sdc1和sdc2兩個分區,修改分區類型為fd類型,完成後儲存退出,執行partprobe指令,重新讀取sdc1和sdc2分區。接着執行

mdadm –V-c –a yes –l 1 –n 2 –c64 /dev /sdc {1, 2}

mdadm: array /dev/md1 started.

指令執行完畢後,可以用cat /proc/mdstat指令來檢視一下md1陣列的參數。可以觀察一下md0和md1各自blocks大小有什麼不同之處。這要從RAID0和RAID1的磁盤陣列的不同之處來考慮了,想起來有什麼不同了嗎?

發散思維一下,RAID都在運作了,那麼該如何停止呢?當然,mdadm指令可以停止磁盤陣列啦。指令為:mdadm –stop /dev/md1

後面的步驟就是格式化md1,在root目錄下建立/raid1目錄,然後用mount指令将/dev/md1挂載到/raid1即可,至于驗證的指令在這裡就不贅述了。

接下來的實驗是關于RAID5配置。

軟RAID5也是備援安全的,RAID5是把至少三個硬碟或分區通過軟體虛拟成為一個大的儲存設備。在容量上是(n-1)x單個硬碟(分區)容量。如果是四塊磁盤分區做RAID5,那麼磁盤使用率就為75%, 

由于RAID5在空間上損失比較小,有備援安全保障,另外寫入速度比較快。具有很高的成本效益,是以被很多企業采用。

安全性:當RAID5中的成員中有一個發生故障時,RAID5一樣能啟動和正常運作,隻要n-1(注n&gt;3)塊硬碟或分區的不出故障,RAID5上的資料就是安全,對于一個檔案存到RAID5裝置中,隻有成員是n-1(注n&gt;3)無故障時,這份檔案才是完整的。 比如上圖中RAID5由四個分區做的,當一個硬碟或分區挂掉了,并不影響整個RAID5上資料的完整性和安全性。

劃分sdc磁盤,建立主分區sdd1、邏輯分區sdd2、擴充分區sdd6、sdd7、sdd8四個分區,修改分區類型為fd類型,完成後儲存退出,執行partprobe指令,重新讀取磁盤分區。接着執行

mdadm –v –C /dev/md2 –a yes –l  5 –n 3 –x 1 /de v/s dd {1, 5 ,6, 7}

建立完成後,RAID也就立即啟動了。會出現如下的一行的提示資訊:

mdadm: array /dev/md2 started.

指令執行完畢後,可以用mdadm –detail /dev/md2指令來檢視一下md2陣列的參數。可以看到,sdd分區處于空閑狀态哇,

為了驗證試驗RAID5是否具有容錯和恢複資料的功能,我們可以模拟這樣的環境:在其中任一個處于工作狀态的分區出現故障的情況下,陣列中的資料是否還可以讀取,資料是否還能恢複到分區出現故障以前的狀态。

具體思路為:首先向raid5中拷貝目錄/var/log/和檔案/etc/inittab,完成後檢視一下,驗證是否拷貝成功。

使用指令mount /edv/md2 –f /dev/sdd7 可以模拟RAID5中處于工作狀态的sdd7分區出現故障。(然後運作mdadm /dev/md2  -r  /dev/sdd7 解除安裝掉,後面的步驟會用到,這裡先不考慮) 

當再次執行mdadm –-mdtail /dev/md2時會發現故障出現之前處于空閑狀态的sdd1分區自動轉變為工作狀态。

此時,為了盡快将資料恢複,我們必須重新加載上一塊新磁盤,可以把剛剛解除安裝掉的sdd7重新加載上(實際上sdd7并沒有出現故障,剛才隻是用指令模拟出現故障)。執行指令為mdadm /dev/md2 –a /dev/sdd7 ,指令正确執行後,會出現mdadm:added /dev/sdd7 的字元提示。用mdadm –-detail /dev/md2 指令檢視一下raid5的狀态,可以看到,sdd7此時變成空閑狀态。

切換到raid5目錄下,檢視一下資料是否還在。是否還可以正常讀取。(其實個人覺得檢視資料這個步驟還是在挂載sdd7之前來操作,這樣會更有說服力,實際情況就是如此,當解除安裝掉sdd7後,sdd1很快就會把資料恢複到原來的樣子。)

當然喽!我們再次還可以模拟sdd1分區出現故障,然後解除安裝掉sdd1。重複上面的步驟驗證一下喽!

本文轉自 linuxtro 51CTO部落格,原文連結:http://blog.51cto.com/linuxtro/275452,如需轉載請自行聯系原作者

繼續閱讀