開源系統(tǒng)應(yīng)用RAID保護(hù)企業(yè)數(shù)據(jù)安全
數(shù)據(jù)安全是中小型企業(yè)信息安全工作的重中之重,企業(yè)數(shù)據(jù)的可用性、安全性成為工作的焦點(diǎn)問題。在保護(hù)企業(yè)數(shù)據(jù)的過程中,磁盤陣列技術(shù)(也稱為RAID(Redundant Array of Inexpensive Disks))目前已經(jīng)廣泛的用于中小型企業(yè),或做磁盤的容錯(cuò)和備份,或用作構(gòu)建SAN存儲(chǔ)等等,是保證數(shù)據(jù)安全的一項(xiàng)重要技術(shù)。并且,RAID的門類非常多,企業(yè)在如何選擇合適的磁盤陣列的問題上需要做好決策。本文將選取RAID1、RAID-5這兩種磁盤陣列的創(chuàng)建過程來介紹開源系統(tǒng)Linux下硬件磁盤陣列的使用。
一、了解磁盤陣列
RAID按照實(shí)現(xiàn)原理的不同分為不同的級(jí)別,不同的級(jí)別之間工作模式是有區(qū)別的,分別可以提供不同的速度,安全性和性價(jià)比。在業(yè)界,常見的幾種RAID如下所示:
RAID0:又稱為Stripe或Striping(條帶),它代表了所有RAID級(jí)別中最高的存儲(chǔ)性能。RAID0提高存儲(chǔ)性能的原理是把連續(xù)的數(shù)據(jù)分散到多個(gè)磁盤上存取,這樣,系統(tǒng)有數(shù)據(jù)請(qǐng)求就可以被多個(gè)磁盤并行的執(zhí)行,每個(gè)磁盤執(zhí)行屬于它自己的那部分?jǐn)?shù)據(jù)請(qǐng)求。這種數(shù)據(jù)上的并行操作可以充分利用總線的帶寬,顯著提高磁盤整體存取性能。
RAID1:RAID1通過數(shù)據(jù)鏡像實(shí)現(xiàn)數(shù)據(jù)冗余,在兩對(duì)分離的磁盤上產(chǎn)生互為備份的數(shù)據(jù)。RAID1可以提高讀的性能,當(dāng)原始數(shù)據(jù)繁忙時(shí),可直接從鏡像拷貝中讀取數(shù)據(jù)。RAID1是磁盤陣列中費(fèi)用最高的,但提供了最高的數(shù)據(jù)可用率。當(dāng)一個(gè)磁盤失效,系統(tǒng)可以自動(dòng)地交換到鏡像磁盤上,而不需要重組失效的數(shù)據(jù)。
RAID2:從概念上講,RAID2同RAID3類似,兩者都是將數(shù)據(jù)條塊化分布于不同的硬盤上,條塊單位為位或字節(jié)。然而RAID2使用稱為“加重平均糾錯(cuò)碼”的編碼技術(shù)來提供錯(cuò)誤檢查及恢復(fù)。這種編碼技術(shù)需要多個(gè)磁盤存放檢查及恢復(fù)信息,使得RAID2技術(shù)實(shí)施更復(fù)雜。因此,在商業(yè)環(huán)境中很少使用。
RAID3:不同于RAID2,RAID3使用單塊磁盤存放奇偶校驗(yàn)信息。如果一塊磁盤失效,奇偶盤及其他數(shù)據(jù)盤可以重新產(chǎn)生數(shù)據(jù)。如果奇偶盤失效,則不影響數(shù)據(jù)使用。RAID3對(duì)于大量的連續(xù)數(shù)據(jù)可提供很好的傳輸率,但對(duì)于隨機(jī)數(shù)據(jù),奇偶盤會(huì)成為寫操作的瓶頸。
RAID4:同RAID2、RAID3一樣,RAID4也同樣將數(shù)據(jù)條塊化并分布于不同的磁盤上,但條塊單位為塊或記錄。RAID4使用一塊磁盤作為奇偶校驗(yàn)盤,每次寫操作都需要訪問奇偶盤,成為寫操作的瓶頸。
RAID5:RAID5沒有單獨(dú)指定的奇偶盤,而是交叉地存取數(shù)據(jù)及奇偶校驗(yàn)信息于所有磁盤上。在RAID5上,讀/寫指針可同時(shí)對(duì)陣列設(shè)備進(jìn)行操作,提供了更高的數(shù)據(jù)流量。RAID5更適合于小數(shù)據(jù)塊,隨機(jī)讀寫的數(shù)據(jù)。RAID3與RAID5相比,重要的區(qū)別在于RAID3每進(jìn)行一次數(shù)據(jù)傳輸,需涉及到所有的陣列盤。而對(duì)于RAID5來說,大部分?jǐn)?shù)據(jù)傳輸只對(duì)一塊磁盤操作,可進(jìn)行并行操作。在RAID5中有“寫損失”現(xiàn)象發(fā)生,即每一次寫操作,將產(chǎn)生四個(gè)實(shí)際的讀/寫操作,其中兩次讀舊的數(shù)據(jù)及奇偶信息,兩次寫新的數(shù)據(jù)及奇偶信息。它可能是目前世界上最常見的RAID產(chǎn)品,最適合于事務(wù)性處理應(yīng)用,如ERP、CRM和E-mail等。
RAID6:RAID6與RAID5相比,增加了第二個(gè)獨(dú)立的奇偶校驗(yàn)信息塊。兩個(gè)獨(dú)立的奇偶系統(tǒng)使用不同的算法,數(shù)據(jù)的可靠性非常高。即使兩塊磁盤同時(shí)失效,也不會(huì)影響數(shù)據(jù)的使用。但需要分配給奇偶校驗(yàn)信息更大的磁盤空間,相對(duì)于RAID5有更大的“寫損失”。RAID6的寫性能非常差,較差的性能和復(fù)雜的實(shí)施,以及實(shí)現(xiàn)代價(jià)非常昂貴,使得RAID6很少使用。
RAID7:它有一個(gè)實(shí)時(shí)嵌入操作系統(tǒng)用作控制器,一個(gè)高速總線用于緩存。它提供快速的I/O,但是價(jià)格昂貴,應(yīng)用性稍差。
RAID10:它由數(shù)據(jù)條陣列組成,其中每個(gè)條都是驅(qū)動(dòng)器的一個(gè)RAID1陣列。它與RAID1的容錯(cuò)能力相同,面向需要高性能和冗余,但不需要高容量的數(shù)據(jù)庫服務(wù)器。
RAID53:其實(shí)施情況同RAID0數(shù)據(jù)條陣列,其中,每一段都是一個(gè)RAID3陣列。它的冗余與容錯(cuò)能力同RAID3。這對(duì)需要具有高數(shù)據(jù)傳輸率的RAID3配置的IT系統(tǒng)有益,但是它價(jià)格昂貴、效率偏低。
二、根據(jù)具體情況使用磁盤陣列
表1對(duì)各類RAID產(chǎn)品的優(yōu)缺點(diǎn)進(jìn)行了詳細(xì)說明,用戶可以在實(shí)際的應(yīng)用中選擇使用:
表1 各類RAID產(chǎn)品比較

值得注意的是:上述介紹的0,1,2等RAID類型并不代表技術(shù)的高低(比如RAID2并沒有商業(yè)產(chǎn)品,相對(duì)于RAID1說較差),而只代表不同的技術(shù)型號(hào)。所以在實(shí)際應(yīng)用中選擇某種RAID產(chǎn)品需要根據(jù)應(yīng)用環(huán)境和資金等情況而定。
實(shí)現(xiàn)RAID可以采用兩種方法,硬RAID和軟RAID:
硬RAID:采用專門的控制器來完成,也就是常說的RAID卡;通過磁盤陣列控制卡(RAID Controller Card)提供磁盤陣列的功能。要使用硬件的磁盤陣列,必須采購支持Linux的磁盤陣列控制卡,一般需要正確安裝驅(qū)動(dòng)程序,才能讓Linux系統(tǒng)正常使用設(shè)備。
軟RAID:采用軟件的方法來實(shí)現(xiàn)。用戶無須安裝額外的硬設(shè)備,只要保證Linux內(nèi)核有支持,就可以直接使用。
由于硬件磁盤陣列的功能是由磁盤陣列控制卡提供計(jì)算工作的,因而效率大大高于由Linux內(nèi)核的軟件磁盤陣列;但硬件磁盤陣列得購買額外的設(shè)備,因此其使用成本比軟件磁盤陣列高得多。過去RAID一直是高端服務(wù)器才應(yīng)用的設(shè)備,與高檔SCSI硬盤配合使用。SCSI RAID穩(wěn)定性好、速度快,但SCSI硬盤和SCSI接口RAID卡價(jià)格高昂,往往只在高檔服務(wù)器上使用。近來隨著技術(shù)的發(fā)展和產(chǎn)品成本的不斷下降,IDE硬盤和SATA硬盤的性能都有了很大提升,加之RAID芯片的普及,使得RAID技術(shù)也廣泛應(yīng)用到了IDE硬盤和SATA硬盤上。
三、開源系統(tǒng)Linux下構(gòu)建磁盤陣列的具體方法
目前,Linux能夠較好地支持RAID0、RAID1、RAID4、RAID5這四種磁盤陣列模式。在4種模式中,RAID4和RAID5運(yùn)行方式較為接近。
1.創(chuàng)建RAID1磁盤陣列
RAID1磁盤陣列的基本工作方式是通過數(shù)據(jù)鏡像實(shí)現(xiàn)數(shù)據(jù)冗余,在兩對(duì)分離的磁盤上產(chǎn)生互為備份的數(shù)據(jù),也就是說每一塊磁盤所存儲(chǔ)的數(shù)據(jù)是完全相同的。所以,要?jiǎng)?chuàng)建RAID1磁盤陣列,至少需要2塊硬盤,每一塊硬盤最好大小一致。這是因?yàn)槊恳粋€(gè)硬盤存儲(chǔ)相同的數(shù)據(jù),因此有一個(gè)硬盤比其他的容量大時(shí),磁盤陣列也無法使用多出來的硬盤空間。本例采用2個(gè)硬盤的分區(qū)(hda1和hdb1)來創(chuàng)建RAID1類型磁盤陣列。
基本步驟如下:
1)編輯磁盤陣列的配置文件/etc/raidtab如下:
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
chunk-size 4
persistent-superblock 1
device /dev/hda1
raid-disk 0
device /dev/sdb1
raid-disk 1
上述文件中每項(xiàng)的含義如下所示:
raiddev:指定磁盤陣列的設(shè)備名稱;
raid-level:指定采用的RAID模式,例中為RAID1;
nr-raid-disks:指定磁盤陣列的硬盤個(gè)數(shù),例中RAID為2個(gè)硬盤組成;
nr-spare-disks:指定磁盤陣列備用磁盤數(shù)目,例中為0;
chunk-size:指定數(shù)據(jù)寫入磁盤陣列時(shí),每個(gè)寫入?yún)^(qū)塊的大小,其單位為KB,且大小必須為2的冪次方。一般說來,此設(shè)置值的大小會(huì)影響磁盤陣列的讀寫效率,不過理想的設(shè)置值,則隨著計(jì)算機(jī)的使用情況而異,所以并無絕對(duì)的結(jié)果;
persistent-superblock:配置是否要寫入磁盤的超級(jí)塊(superblock),配置成“1”表示寫入,配置“0”不寫入;
device /dev/hda1:根據(jù)實(shí)際情況,指定第一個(gè)硬盤分區(qū)的名稱,此處第一個(gè)硬盤分區(qū)為hda1;
raid-disk 0:配置上述的分區(qū)是此磁盤陣列所使用的第一個(gè)硬盤,編號(hào)從0開始;
device /dev/hdb1:同上,按實(shí)際情況,指定第二塊硬盤分區(qū)的名稱;
raid-disk 1:配置上述的分區(qū)是此磁盤陣列所使用的第一個(gè)硬盤,編號(hào)為1。
2)格式化并加載磁盤陣列,命令如下所示:
//建立磁盤
#mkraid /dev/md0
//使用ext3文件系統(tǒng)格式化
#mke3fs /dev/md0
//將md0磁盤陣列加載到目錄/mnt/md0下
#mount -t ext3 /dev/md0 mnt/md0
3)啟動(dòng)磁盤陣列
#raidstart /dev/md0
4)使用過程中查看磁盤陣列的使用狀態(tài)
#more /proc/mdstat
5)停止和卸載磁盤陣列
//首先停止磁盤陣列
#raidstop /dev/md0
//然后卸下裝載的磁盤陣列
#umount /dev/md0
6)刪除磁盤陣列:首先使用第5)步停止磁盤陣列,然后刪除/etc/raidtab文檔即可。
2.創(chuàng)建RAID5磁盤陣列
上面介紹了RAID0的創(chuàng)建方式,下面介紹如何創(chuàng)建RAID5磁盤陣列。有了上面的基礎(chǔ)后,對(duì)于RAID5的創(chuàng)建也就不那么困難了。簡單地說,RAID5是在RAID0和RAI1中取得折衷,既具備容錯(cuò)能力,也不會(huì)浪費(fèi)太多硬盤空間,并有助于提高磁盤的I/O性能。由于RAID5需要存儲(chǔ)同位校驗(yàn)碼,因此要?jiǎng)?chuàng)建此模式的磁盤陣列,至少需要3塊或以上的硬盤。因此,本例以hda、hdb、hdc三塊磁盤的分區(qū)(hda1、hdb1和hdc1)來組成RAID5磁盤。當(dāng)然,也可以指定三塊磁盤的其他分區(qū),這個(gè)可以根據(jù)實(shí)際磁盤分區(qū)的使用情況選定,并不是固定的。
基本操作步驟如下:
1)編輯磁盤陣列的配置文件/etc/raidtab如下:
raiddev /dev/md0
raid-level 5
nr-raid-disks 3
nr-spare-disks 0
chunk-size 32
persistent-superblock 1
parity-algorithm left-symmetric
device /dev/hda1
raid-disk 0
device /dev/hdb1
raid-disk 1
device /dev/hdc1
raid-disk 2
同理,上述文件中每項(xiàng)的含義如下所示:
raiddev:指定磁盤陣列名稱;
raid-level:指定使用的RAID5磁盤陣列;
nr-raid-disks:此磁盤陣列由3個(gè)硬盤所組成;
nr-spare-disks :指定/此磁盤陣列的備用硬盤數(shù)目;
chunk-size:當(dāng)數(shù)據(jù)要寫入磁盤陣列時(shí),每個(gè)寫入的大小(單位為KB,且必須為2的冪次方)。此設(shè)置值的大小,會(huì)影響磁盤陣列的讀寫效率,不過理想的設(shè)置值,則按每臺(tái)計(jì)算機(jī)的使用情況而異,并無絕對(duì)的結(jié)果;
persistent-superblock:設(shè)置是否要寫入磁盤的superblock:設(shè)成1表示寫入,否則設(shè)成0。若將此參數(shù)設(shè)成1,則當(dāng)磁盤陣列中有硬盤損壞時(shí),系統(tǒng)仍可繼續(xù)啟動(dòng);若有備用硬盤,也會(huì)同時(shí)啟用備用硬盤;
parity-algorithm:指定要用哪一種算法計(jì)算同位校驗(yàn)嗎,可使用的算法有l(wèi)eft-symmetric、left-asymmetric、right-symmetric及right-asymmetric等4種。一般采用left-symmetric能有最好的存取效率;
device /dev/hda1:指定所有使用的第1個(gè)硬盤分區(qū)名稱;
raid-disk 0:設(shè)置上述的分區(qū)是此磁盤陣列所使用的第1個(gè)硬盤(編號(hào)由0開始);
device /dev/hdb1:指定所要使用的第2個(gè)硬盤分區(qū)名稱;
raid-disk 1:設(shè)置上述的分區(qū)是此磁盤陣列所使用的第2個(gè)硬盤;
device /dev/hdc1 :指定所要使用的第3個(gè)硬盤分區(qū)名稱;
raid-disk 2:設(shè)置上述的分區(qū)是此磁盤陣列所使用的第3個(gè)硬盤。
2)格式化并加載磁盤陣列,命令如下所示:
//建立磁盤
#mkraid /dev/md0
//使用ext3文件系統(tǒng)格式化
#mke3fs /dev/md0
//將md0磁盤陣列加載到目錄/mnt/md0下
#mount -t ext3 /dev/md0 mnt/md0
3)啟動(dòng)磁盤陣列
#raidstart /dev/md0
4)使用過程中查看磁盤陣列的使用狀態(tài)
#more /proc/mdstat
5)停止和卸載磁盤陣列
//首先停止磁盤陣列
#raidstop /dev/md0
//然后卸下裝載的磁盤陣列
#umount /dev/md0
6)刪除磁盤陣列:首先使用第5)步停止磁盤陣列,然后刪除/etc/raidtab文檔即可。
【編輯推薦】















 
 
 



 
 
 
 