軟體磁碟陣列(Software RAID)介紹

來源:互聯網
上載者:User
簡介

RAID,英文全稱為:Redundant Arrays of Independent Disks,中文譯為:獨立容錯式磁碟陣列,以前也叫作容錯式廉價磁碟陣列,現在一般都稱為磁碟陣列。這個東西是由加州大學伯克利分校提出來的,可以把多塊較小的硬碟整合成一塊較大的盤使用,也可用做保護資料的安全。現在磁碟陣列分為:軟體RAID和硬體RAID;在應用中若是企業的要求比較高,一般都是用硬體RAID,因為軟體的速度,怎麼也比不上硬體的速度的,當然硬體太爛的話就算了,不過一般企業也不會用很爛的硬體的。。

這裡由於資源有限,介紹的是軟RAID。。 一、RAID等級及功能 1、RAID-0 (等級模式, stripe):效能最佳 首先要介紹的是RAID-0,這種模式的RAID要求要使用至少兩塊以上的硬碟,而且硬碟的型號、容量大小什麼的最好都是一致的。這種層級的RAID會把每一塊磁碟分成一小塊一小塊的大小相同、數量相等的 chunk (大小可以自己設定,一般在4K—1M之間),當有檔案要寫入磁碟時,系統會依據劃分好的chunk大小,依次存入各個磁碟,不過這種儲存不是一個盤一個盤的去存,而是進行交錯的儲存,並不會將資料集中存入到一個磁碟中,具體情況如下圖所示:
圖中並沒有將chunk畫出來,但也能大致體現RAID-0的資料存放區模式。當有檔案要存入RAID-0時,檔案會首先被切分成與chunk一樣的大小,然後依次存入不同的磁碟中去。由於檔案是被切分成小塊兒儲存在不同的磁碟上(不是一整份檔案存在同一塊磁碟上),所以每個磁碟的儲存負擔也就降了下來,檔案的儲存速度也就自然而然的得到提升了。當組成RAID-0的磁碟數量越多時,資料的儲存速度也會也來越快,效率也會越來越高,儲存總容量也會跟著磁碟的數量一起增長。 但這樣也會造成一個很明顯的問題,那就是雖然磁碟的資料存放區速度提升,磁碟的容量也變大了,但是資料的安全性就明顯的降低了,磁碟的數量越多,資料的安全性就越低,因為RAID-0這種模式是沒有資料備份的,同時同一個檔案又被切分存在了不同的磁碟上,資料變得非常零散,一旦有一塊盤出了問題,那麼RAID-0磁碟上的所有資料都可能會被損壞,磁碟的數量與資料的安全性是成反比的(我瞎說的,具體的數學關係我也不知道,只是感覺這樣好表達一些。)。 在組成RAID-0時,雖然要求保證磁碟的型號、容量什麼的盡量保持一致,但由於現實問題仍然可能使用的磁碟在容量什麼方面不一致,當磁碟的容量不一致時,特別是容量較小的磁碟被存滿時,系統會自動將資料存放入容量較大的磁碟中去,但是這樣做就會造成儲存效率的下降,在使用時要考慮清楚。 2、RAID-1 (映射模式, mirror):完整備份 RAID-1對磁碟的要求與RAID-0一樣,最好都是型號、大小相同的兩塊以上的磁碟,若是磁碟容量不同時,系統將會以容量較小的磁碟容量為基準。這樣做的原因是和RAID-1的資料存放區方式有關,RAID-1在儲存資料時會將資料分別儲存在每一個磁碟上,相當於每一塊磁碟上都會有一份完全相同的資料,有多少塊磁碟就會有多少份資料,資料的安全性就會得到大大的提升。RAID-1的資料存放區方式如下圖所示:
如圖所示,使用RAID-1在進行檔案儲存體時,系統會自動地將檔案分別存進兩塊磁碟中,也就是說會有一個磁碟用作冗餘備份,資料的安全性會大大地得到提升。圖中用的只是兩塊磁碟,其實還可以使用更多的磁碟組成RAID-1,但是這些磁碟所儲存的資料是完全相同的;一塊磁碟的損壞,並不會損壞資料的完整性,所以這種模式很適合於那些對資料安全要求非常高的場合。 RAID-1對於資料的安全性確實得到了很好的保證,但同時也暴露了一些問題,就是資料的儲存效率卻大大地降低了,畢竟我們的磁碟在同一時刻是只能進行一個磁碟的讀寫操作的,所以組成RAID-1的磁碟數量越多,資料的儲存效率也就越低,這是一個令人很頭疼的問題,畢竟魚和熊掌不可同時得焉。。 3、RAID-10 和 RAID-01 RAID-10 和RAID-01這兩種模式是根據 RAID-0 和 RAID-1 兩種模式的特點優勢組合而成的,在很大程度上可以克服 RAID-0 和 RAID-1 單種模式的不足之處,但是在實際使用中一般使用較多的還是 RAID-10 這種組合模式,原因就在於這種組合模式在造價、資料冗餘和資料存取效率上來說能夠達到一種較為理想的狀態,下圖為 RAID-10 這種組合模式的資料存放區方式:
如上圖所示,RAID-10模式是先組成RAID-1,再組成RAID-0的。Disk A + Disk B 組成第一組RAID 1,Disk C + Disk D 組成第二組RAID-1, 然後這兩組再整合成為一組RAID-0。如果有1G 的資料要寫入,則由於RAID-0 的關係, 兩組RAID-1 都會寫入512MB,又由於RAID-1 的關係,因此每顆磁碟就會寫入512MB 而已。如此一來不論哪一組RAID-1 的磁碟損毀,由於是RAID-1 的映像資料,因此就不會有任何問題發生了。這也是目前儲存裝置廠商最推薦的方法。 4、RAID-5:效能與資料備份的均衡考量 要想組成RAID-5至少需要三塊磁碟。這種磁碟陣列的資料寫入方式類似於RAID-0,與RAID-0不一樣的地方在於每個迴圈寫入的過程中(striping),都會在每個磁碟中寫入一個資料校正的資料,這個校正的資料記錄著一起寫入磁碟的資料的資訊,可以在其他磁碟損壞時,用於磁碟資料的恢複。具體的讀寫情況如下圖所示:
如上圖所示,RAID-5在進行資料存放區時與RAID-0的方式是有點類似的,不同之處就在於RAID-5多了一個資料校正的部分(記錄著同時存入資料的資訊,可以叫做:同位校正碼),這個同位校正碼隨著每一次磁碟儲存,其存放位置都會不同,分散在各個磁碟中,可以降低資料損毀的機率;在磁碟有損壞的情況下,通過將未損壞的磁碟資料與這個資料校正的部分進行計算,便可以恢複丟失的資料,在資料安全性上要比RAID-0好很多。 RAID-5在磁碟的讀效能上與RAID-0差不了太多,但是在相同硬體環境下,在寫效能上RAID-5比RAID-0可能就會差點了。因為在寫的時候,RAID-5要計算同為校正碼,在進行這個計算的時候,是會佔用電腦的計算資源,而RAID-0由於沒有同位校正碼,所以也就不需要這一步的計算了,效率上會稍微比RAID-5高些(關鍵要看硬體環境)。讀的時候沒有這些操作,所以讀效能差別不大。 還有一種RAID-6的模式,與RAID-5相似,都是通過同位校正碼來保證資料的安全,不同的是RAID-6是有兩份同位校正碼的,並且校正碼的儲存方式與RAID-5一樣,都是分散儲存的。這種模式比RAID-5好的地方在於RAID-6允許系統中有兩塊磁碟可以同時損壞,依然能保證資料可以被恢複(因為有兩份冗餘校正),而RAID-5隻能同時損壞一塊磁碟。 5、Spare Disk:預備磁碟的功能 Spare Disk也可以叫做熱備盤,它的作用就是在磁碟陣列中的磁碟發生損壞時,系統會自動啟用熱備盤,並自動重建磁碟陣列中損壞磁碟的資料,這也會是熱備盤的優點。熱備盤可以有一塊,也可以有多塊。當然若要使用熱備盤,首先使用的磁碟陣列要支援熱備盤的功能,同時硬體系統最好能支援熱拔插,否則還要手動卸下損壞的磁碟,再手動安裝新的磁碟,而且手動安裝的話還要關機才能進行。 6、磁碟陣列的優點 磁碟陣列的應用主要要考慮以下幾點: 資料安全與可靠性:指的並非網路資料安全,而是當磁碟損毀時,資料是否還能夠被安全的救援或使用之意; 讀寫效能:例如RAID 0 可以加強讀寫效能,讓你的系統I/O 部分得以改善; 容量:可以讓多顆磁碟組合起來,所以單一檔案系統可以有相當大的容量。 重點是保證資料的可靠性和安全性(完整性)是RAID使用的重點考慮,畢竟在企業中資料是異常重要的,在日常生活中一般也沒有使用這個的必要。 下表為幾種RAID層級的各自特點:(n為假定有n塊磁碟組成)

項目 RAID-0 RAID-1 RAID-10 RAID-5 RAID-6
最少磁碟數 2 2 4 3 4
最大容錯磁碟數 無 n-1 n/2 1 2
資料安全性 完全沒有 最佳 最佳 好 比RAID-5好
理論寫入效率 n 1 n/2
理論讀出效率 n n n n
磁碟實際可使用量 n 1 n/2 n-1 n-2
一般應用 強調效率但資料重要性要求不高的環境 資料存放區與備份 伺服器與雲系統中常用 資料存放區與備份 資料存放區與備份

註:因為RAID-5和 RAID-6讀寫都需要經過parity 的電腦制,因此讀/寫效能都不會剛好滿足於使用的磁碟數量。
另外,根據使用的情況不同,一般推薦的磁碟陣列等級也不太一樣,需要根據自己的使用環境進行選擇。 二、 軟體RAID與硬體RAID 前面也都提到過RAID分為軟體RAID和硬體RAID,以下將會介紹什麼是軟體RAID,什麼又是硬體RAID,以及二者又有什麼區別是什麼。 硬體磁碟陣列(hardwareRAID)是通過磁碟陣列卡來建立磁碟陣列的。在磁碟陣列卡上會有一個專門的晶片來處理RAID任務,可以大大減輕原來系統的計算壓力和I/O壓力,效率也會得到很好的提升;同時現在相當一部分的磁碟陣列卡都支援熱拔插,所以在更換損壞磁碟時是非常方便的。但是不好的一點是磁碟陣列卡比較貴,特別是那些好一點的磁碟陣列卡就會特別貴,而且功能還不能保證特別齊全,所以在這種情況下就出現了軟體RAID,來類比硬體RAID。 軟降RAID是一種類比硬體RAID的產物,是要運行在系統上面的,是要佔用一定的系統資源的,特別是計算和I/O資源,所以在效率上跟硬體RAID相比還是有有相當的差距的。雖然說現在的機器計算速度都非常快了,但是對於一些要求較高的情境或企業,一般最好還是盡量不要選擇軟體RAID的,畢竟在總的使用成本上來說硬體RAID還是很划算的。 三、軟體磁碟陣列的設定

本次實驗環境使用的CentOS7的系統,使用官方原裝鏡像安裝的系統是內建mdadm軟體來實現磁碟陣列設定的。這套軟體是支援partition或disk為磁碟的單位,所以我們是可以針對分區(partition)進行磁碟陣列設計的,同時mdadm軟體的功能是非常強大的,它不僅能支援前面介紹的幾種RAID模式,而且還能類比出熱拔插的功能,可以直接在系統正常使用時進行分區的更換。在實際中,硬體磁碟陣列在Linux下是以一整塊實際大小的磁碟存在的,所以在系統中顯示的裝置名稱也是按照/dev/sd[a-z],而軟體RAID則是由系統類比出來的,並不是實際存在的,所以在系統中顯示的裝置名稱就是/dev/md0,/dev/md1...。二者在裝置名稱上就是不同的。
1、軟體RAID的指令介紹
軟體RAID的設定很簡單,就一個指令,但是這個指令和在CentOS7中設定quota的xfs_quota指令類似,都是一條指令後面跟很多可選選項。 指令格式: mdadm –create /dev/md[0-9] –auto=yes –level=[015] –chunk =NK –raid-devices=N –spare-devices=N /dev/sdx /dev/hdx…

常用選項與參數:

option 描述
–create 建立磁碟陣列(RAID)
–auto 建立後面接的軟體磁碟陣列(RAID)裝置,比如/dev/md0,/dev/md1…
–chunk 設定裝置的chunk大小,也可以當做stripe大小,一般為64K或者512K
–raid-devices 設定組成磁碟陣列(RAID)的磁碟數量
–spare-devices 設定熱備盤的數量
–level 設定磁碟陣列(RAID)的等級,一般建議0,1,5即可
–detail 顯示後接磁碟陣列(RAID)的詳細資料

2、建立磁碟陣列:
mdadm –create /dev/md0 –auto=yes –level=5 –chunk=256K –raid-devices=4 –spare-devices=1 /dev/sdc {1,2,3,4,5}

按照上圖中的指令,將會建立一個裝置名稱為:/dev/md0,層級為:RAID-5層級,chunk大小為256K,由四塊磁碟和一塊熱備盤組成的磁碟陣列。需要注意的地方是組成RAID的磁碟數與熱備盤數必須要與後面的磁碟裝置數相等才行。。 3、查看建立RAID的資訊: mdadm –detail /dev/md0

由圖中可知,磁碟陣列md0由分區/dev/sdc1、/dev/sdc2、/dev/sdc3、/dev/sdc4組成,/dev/sdc5設定成了熱備盤。若是建立時沒有報錯,但是使用該指令卻無法查詢時,可以先等幾分鐘,然後再使用此指令查詢,因為建立時,系統是需要時間去進行建立的,建立慢一點的話,可能查的時候查不出來。

通過上圖中的 cat /proc/mdstat 可以查看系統軟體磁碟陣列的檔案來查看系統中軟體磁碟陣列的狀態: 上表徵圖注的第一行:指示的是md0為RAID-5,組成的磁碟為:sdc4,sdc3,sdc2,sdc1四塊磁碟;每塊磁碟裝置名稱後面的中括弧表示的是該磁碟在磁碟陣列中的順訊,sdc5後面小括弧裡的“S”表示該裝置為熱備盤的意思。
第二行的意思為:此磁碟陣列擁有3142656個block,使用的是RAID-5,chunk大小為256K,使用的是algorithm 2磁碟陣列演算法。後面的[4/4]中的第一個“4”代表的是該磁碟陣列裝置需要4塊磁碟裝置,後一個“4”表示的是該磁碟陣列中的4塊磁碟都在正常運行。最後面的[UUUU]代表的是該磁碟陣列所需的四塊磁碟的啟動情況,“U”代表的是正常運行,若為“_”則代表的是不正常。 4、RAID的格式化與掛載使用:

上圖中進行格式化的參數含義為: su:表示chunk大小為256K; sw:表示被格式化的磁碟數量,設定為3,所以格式化了三塊磁碟,所以df查詢出來的大小為3GB; extsize:表示由上面兩項計算出來的資料寬度:256K*3=768K。 四、類比RAID錯誤的救援模式

這個救援模式主要用於磁碟陣列裡的裝置發生意外時使用的,在一些情況下,這個救援模式是支援線上使用的。
指令格式:mdadm –manage /dev/md[0-9] [–add 裝置] [–remove 裝置] [–fail 裝置]
option 描述
–add 將後面跟的裝置添加到該RAID中
–remove 將後面跟的裝置從該RAID中移除
–fail 將後面跟的裝置設定成出錯狀態

1)將磁碟狀態設定成出錯狀態:

2)查看:mdadm –detail /dev/md0

3)將出錯的裝置移除並添加新的裝置:

4)查看:mdadm –detail /dev/md0
注意:以上操作都是線上完成的 五、開機自動啟動RAID並自動掛載

現在新的系統發布版本大都會在開機時自動搜尋/dev/md[0-9],並開啟預設的功能,雖然如此,但還是建議在設定檔中對設定進行修改,否則在開機時雖然會自動開啟掛載,但是系統那是隨機進行的,可能會不便於我們管理。修改的內容很簡單,同時只需修改兩處設定檔即可。一處是要修改/etc/fstab檔案,這是設定開機自動掛載的設定檔;另一處是要修改/etc/mdadm.conf,這個是軟體RAID的設定檔。
1)查詢md0的UUID識別碼及UUID號:
2)修改/etc/fstab:(該檔案中添加的是UUID號)
3)修改/etc/mdadm.conf:(該檔案中添加的是UUID識別碼)
4)查看:
六、關閉軟體RAID
由於本次實驗是以磁碟分割進行的,所以為了避免以後我在分區時會出現麻煩,所以在這裡就將之前設定的軟體RAID關閉掉。

以下為關閉的步驟:
1)首先要先卸載掉該RAID裝置:umount /srv/raid;
2)將/etc/fstab檔案中的有關該RAID裝置的那一行刪除掉;
3)覆蓋該RAID裝置的中繼資料塊及superblock:dd if=/dev/zero of=/dev/md0 bs=1M count=50;
4)關閉該RAID裝置:mdadm –stop /dev/md0;
5)將組成該RAID裝置的各磁碟的RAID相關資料:dd if=/dev/zero of=/dev/sdc{1..5} bs=1M count=10
6)將/etc/mdadm.conf檔案中關於該RAID裝置的那一行資料刪除或注釋掉即可
7)查看:cat /proc/mdstat

註:上述的dd指令是為了將磁碟中所有有關該RAID裝置的資訊覆蓋掉;若不進行覆蓋,在開機時,系統還是會自動將該RAID裝置建立起來,名稱是隨機指定的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.