一. SUN Solstice DiskSuite
??????? SUN Solstice DiskSuite是SUN公司自主研發(fā)的磁盤管理軟件,并向廣大用戶免費(fèi)提供。此軟件支持Solaris 2.6 、Solaris 7、 Solaris 8。雖然在Solaris 9中更名為“Sun Volume Manager”,但原理和命令幾乎沒有任何改變。SUN Solstice DiskSuite最常用的用途是磁盤鏡像RAID 1,串連RAID 0(striping,concatenation),RAID 5,RAID 0+1,RAID 1+0,磁盤熱備(hotspare),Diskset,操作系統(tǒng)擴(kuò)容(growfs),文件系統(tǒng)日志(UFS logging)
二. SUN Solstice DiskSuite軟件安裝
SUN Solstice DiskSuite軟件免費(fèi)提供于Solaris 2.6、Solaris 7、Solaris 8、Solaris 9及最新發(fā)布的Solaris 10中。在Solaris 9和Solaris 10中,SUN Solstice DiskSuite已經(jīng)集成在操作系統(tǒng)當(dāng)中,不需要安裝就可以直接使用。在Solaris 2.6、Solaris 7、 Solaris 8的操作系統(tǒng)環(huán)境下,需要對SUN Solstice DiskSuite進(jìn)行安裝。以下介紹具體安裝過程(以Solaris 8為例)。
SUN Solstice DiskSuite軟件存在于Solaris8系統(tǒng)安裝盤的software 2 of 2中,也就是平常所說的Solaris 8安裝盤的第3張(通常所說的Solaris 8安裝盤有4張:install ,software 1 of 2,software 2 of 2,language)。軟件具體目錄如下: /sol_8_401_sparc_2/Solaris_8/EA/products/DiskSuite_4.2.1
其中, sol_8_401為操作系統(tǒng)版本號,本例中的操作系統(tǒng)版本號為Solaris 8 0401。DiskSuite_4.2.1為SUN Solstice DiskSuite軟件版本號,此版本為4.2.1(如果沒有安裝介質(zhì),可以到SUN的網(wǎng)站免費(fèi)下載軟件包)。SUN Solstice DiskSuite軟件的安裝路徑在/usr/opt下,所以您的/usr下至少需要30兆空間來安裝SUN Solstice DiskSuite軟件。
軟件安裝方法有兩種,在圖形界面環(huán)境下可以直接執(zhí)行以上路徑中的installer腳本程序。啟動圖形界面,進(jìn)而根據(jù)下一步提示完成安裝。除了 installer腳本程序,我們通常利用命令行通過安裝軟件包來安裝SUN Solstice DiskSuite。SUN Solstice DiskSuite軟件包存在目錄為: sol_8_401_sparc_2/Solaris_8/EA/products/DiskSuite_4.2.1/sparc/packages/
以下為安裝實(shí)例:
1.進(jìn)入Packages所在的目錄
#cd /cdrom/cdrom0/Solaris_8/EA
#cd /products/DiskSuite_4.2.1/sparc/Packages
2.查看軟件包
# ls
SUNWlvma SUNWlvmg SUNWlvmr SUNWmdg SUNWmdja SUNWmdnr SUNWmdnu SUNWmdr SUNWmdu SUNWmdx
3.添加軟件包
# pkgadd -d . (注:“.”為安裝路徑為當(dāng)前目錄,不可省略)
he following packages are available:
1 SUNWlvma Solaris Volume Management API's
(sparc) 1.0,REV=2001.11.02.03.17
2 SUNWlvmg Solaris Volume Management Application
(sparc) 1.0,REV=2001.11.14.03.19
3 SUNWlvmr Solaris Volume Management (root)
(sparc) 1.0,REV=2001.11.14.03.19
4 SUNWmdg Solstice DiskSuite Tool
(sparc) 4.2.1,REV=1999.11.04.18.29
5 SUNWmdja Solstice DiskSuite Japanese localization
(sparc) 4.2.1,REV=1999.12.09.15.37
6 SUNWmdnr Solstice DiskSuite Log Daemon Configuration Files
(sparc) 4.2.1,REV=1999.11.04.18.29
7 SUNWmdnu Solstice DiskSuite Log Daemon
(sparc) 4.2.1,REV=1999.11.04.18.29
8 SUNWmdr Solstice DiskSuite Drivers
(sparc) 4.2.1,REV=1999.12.03.10.00
9 SUNWmdu Solstice DiskSuite Commands
(sparc) 4.2.1,REV=1999.11.04.18.29
10 SUNWmdx Solstice DiskSuite Drivers(64-bit)
(sparc) 4.2.1,REV=1999.11.04.18.29
Select package(s) you wish to process (or 'all' to process all packages). (default: all) [?,??,q]:
輸入all來安裝所有軟件包。在實(shí)際安裝過程中,筆者在較早的操作系統(tǒng)環(huán)境下曾經(jīng)遇到安裝不成功的情況,原因是驅(qū)動不符。SUN Solstice DiskSuite驅(qū)動由8號軟件包SUNWmdr提供,大家如果碰到類似問題可以先安裝8號軟件包再安裝其他軟件包。也就是先在輸入欄輸入8,等待8號軟件包安裝成功后再對其它軟件包進(jìn)行安裝。
三. Metadevice State Database介紹
SUN Solstice DiskSuite軟件在使用的時(shí)候需要調(diào)用一個(gè)其特有的Metadevice State Database小數(shù)據(jù)庫。Metadevice State Database通常被稱為Metadb,Metadb用來存儲SUN Solstice DiskSuite軟件對服務(wù)器硬盤的所有配置信息。換句話說,我們所做的所有磁盤、卷、RAID的結(jié)構(gòu),都存儲在Metadb當(dāng)中。每當(dāng)服務(wù)器重新啟動,SUN Solstice DiskSuite軟件就會自動調(diào)用Metadb中的信息,從而按照這些信息配置物理磁盤,掛接UFS文件系統(tǒng),從而使操作系統(tǒng)正常啟動。相反,如果 Metadb被破壞了,操作系統(tǒng)就有可能無法正常啟動,進(jìn)入單用戶狀態(tài),甚至可能丟失硬盤數(shù)據(jù)。
Metadb對于SUN Solstice DiskSuite軟件來講是異常重要的。因此我們會在建立Metadb時(shí)建立很多備份。一旦Metadb被破壞,SUN Solstice DiskSuite軟件可以自動將其恢復(fù),如果Metadb損壞嚴(yán)重,我們也可以手動恢復(fù)Metadb,Metadb和其備份之間是實(shí)時(shí)備份的。
在物理磁盤中,Metadb通常是磁盤的一個(gè)專有分區(qū),也就是說在安裝操作系統(tǒng)的時(shí)候要預(yù)留出一個(gè)分區(qū)給Metadb。這個(gè)分區(qū)不能存在文件系統(tǒng),一旦這個(gè)分區(qū)被做成Metadb,它也就不能再做其他應(yīng)用。我們通常把磁盤的7號分區(qū)預(yù)留給Metadb,其大小通常為10兆到50兆。當(dāng)然,大家也可以用別的分區(qū)代替7號分區(qū)預(yù)留給Metadb。
在實(shí)際應(yīng)用中,我們通常把SUN Solstice DiskSuite軟件下的所有硬盤都建立一個(gè)Metadb。每個(gè)硬盤上的Metadb分區(qū)又可以存在多個(gè)備份,所有這些備份之間都是實(shí)時(shí)同步的。這樣,我們就基本可以保證Metadb不會被破壞。
Metadb必須在SUN Solstice DiskSuite軟件使用之前建立,否則SUN Solstice DiskSuite軟件不會生效。我們使用metadb命令,建立Metadevice State Database。下面是一個(gè)建立Metadevice State Database的實(shí)例:
# metadb -a -f -c 3 cxtxdxsx cytydysy
metadb為軟件命令;-a參數(shù)為增加metadb;-f參數(shù)為建立一個(gè)初始的metadb;-c參數(shù)后邊要加個(gè)數(shù)字,表示在一個(gè)物理分區(qū)里的 metadb備份的數(shù)目,此例中為每個(gè)分區(qū)里面3個(gè)備份;cxtxdxsx cytydysy 則是要建立metadb的物理分區(qū),可以增加他的個(gè)數(shù)。注意,一旦metadb命令執(zhí)行成功,預(yù)留分區(qū)上的其他數(shù)據(jù)將會被破壞。所以此條命令可以解釋為:在cxtxdxsx cytydysy兩個(gè)硬盤分區(qū)上建立初始的Metadb,每塊硬盤分區(qū)上的備份數(shù)目為3。
下面介紹一個(gè)刪除Metadb的實(shí)例:
# metadb –d cxtxdxsx
-d參數(shù)為刪除metadb。這條命令可以解釋為:在cxtxdxsx分區(qū)上刪除原有的Metadb。我們要查看已經(jīng)存在的Metadb可以用以下命令:
# metadb –I
最后,總結(jié)介紹一下metadb的參數(shù):-a 參數(shù)意為增加一個(gè)metadb;-f 參數(shù)意為建立一個(gè)初始化的Metadb;-c n 其中n為數(shù)字,此參數(shù)意為在每一個(gè)分區(qū)中建立n個(gè)Metadb備份,如果不指定此參數(shù),默認(rèn)只建立一個(gè)Metadb;-d 參數(shù)意為刪除一個(gè)Metadb;-I參數(shù)意為查詢現(xiàn)有的Metadb的信息,包括備份個(gè)數(shù),分布情況和Metadb的健康狀況。
SUN Solstice DiskSuite軟件的使用接口有三種:基于圖形界面操作系統(tǒng)的GUI軟件界面方式、命令行方式、修改/etc/opt/SUNWmd/md.tab文件方式。其中,命令行方式應(yīng)用廣泛,本文著重介紹命令行方式。
四. RAID 0
我們通常所說的RAID 0就是對硬盤進(jìn)行串連,把兩個(gè)或更多的硬盤或分區(qū)串接起來,當(dāng)做一個(gè)邏輯設(shè)備使用。RAID 0增加了X倍的數(shù)據(jù)空間(X為磁盤個(gè)數(shù)),但是數(shù)據(jù)的危險(xiǎn)性也同時(shí)增加到X倍。例如,我們做一個(gè)3塊硬盤的RAID 0,那么數(shù)據(jù)空間就是原來的3倍,危險(xiǎn)性也是原來的3倍,壞掉3塊盤中任何一塊硬盤,整個(gè)RAID的數(shù)據(jù)將會全部丟失。
SUN Solstice DiskSuite軟件通過把物理硬盤上的邏輯分區(qū)設(shè)備轉(zhuǎn)換成特殊的DiskSuite設(shè)備,通常我們將DiskSuite設(shè)備稱為 “metadevice”,可以通過metainit命令把一個(gè)系統(tǒng)邏輯分區(qū)做成一個(gè)metadevice。metadevice的設(shè)備路徑和系統(tǒng)原來的設(shè)備路徑不同,塊設(shè)備路徑在/dev/md/dsk下,裸設(shè)備路徑在/dev/md/rdsk下。
SUN Solstice DiskSuite軟件下的RAID 0有兩種方式:concatenation方式和 striping方式。它們?yōu)镽AID 0提供了兩種不同的結(jié)構(gòu),而且各有各的優(yōu)、缺點(diǎn)。
1.concatenation方式
concatenation方式把多個(gè)邏輯硬盤或分區(qū)首尾相接做成一個(gè)metadevice。具體結(jié)構(gòu)如下圖:
由于數(shù)據(jù)是從第一個(gè)block順序往下寫的,因此,concatenation方式具有良好的可擴(kuò)展性。也就是說,管理員可以根據(jù)文件系統(tǒng)的實(shí)時(shí)使用情況隨時(shí)擴(kuò)充metadevice的大小。然而,就是因?yàn)檫@種順序?qū)懭氲慕Y(jié)構(gòu),使得concatenation方式有個(gè)致命的缺點(diǎn),即IO性能降低。因?yàn)楫?dāng)數(shù)據(jù)寫入的時(shí)候,只要第一塊硬盤沒有寫滿,在其后的硬盤上,都不會有任何的寫入動作。這樣,也就造成了后面硬盤IO帶寬的浪費(fèi),從而使整個(gè) concatenation方式的RAID 0 IO性能降低。下面是一個(gè)制作Concatenation方式RAID 0的實(shí)例:
# metainit d1 2 1 /dev/dsk/c0t0d0s1 1 /dev/dsk/c0t1d0s5
metainit為制作metadevice的命令;d1為metadevice的名字;metadevice的名字用dN表示,N可以從0到 127;2 為RAID 0的子盤個(gè)數(shù),子盤實(shí)際上是以striping的方式做成的;1 為每個(gè)striping的方式做成的子盤中的分區(qū)個(gè)數(shù),只有當(dāng)這個(gè)數(shù)字為1的時(shí)候,我們做成的metadevice才是真正的concatenation 方式;/dev/dsk/c0t0d0s1 為要做成metadevice的物理分區(qū)。這條命令可以解釋為,用metainit命令制作一個(gè)concatenation方式的包含兩個(gè)子盤名為d1的 RAID 0,兩個(gè)子盤分別為/dev/dsk/c0t0d0s1和/dev/dsk/c0t1d0s5。
2.striping方式
striping方式把多個(gè)邏輯硬盤以條帶化的方式連接成一個(gè)metadevice。具體方式參照下圖:
striping方式就是把硬盤分割成若干條帶,數(shù)據(jù)寫入的時(shí)候和concatenation方式不同。striping方式在寫入數(shù)據(jù)的時(shí)候由于條帶化的分割,對所有的磁盤都有寫入操作,因此striping方式比concatenation方式有著良好的IO。但是,也由于這種條帶結(jié)構(gòu), striping方式不可以在線擴(kuò)充文件系統(tǒng)容量。下面是一個(gè)制作striping方式RAID 0的實(shí)例:
# metainit d2 1 2 /dev/dsk/c0t0d0s4 /dev/dsk/c0t0d0s5 –i 32k
metainit為制作metadevice的命令;d2為metadevice的名字;1 為RAID 0的子盤個(gè)數(shù),只有當(dāng)這個(gè)數(shù)字為1的時(shí)候,我們做成的RAID 0才是真正的striping方式;2 為striping方式做成的子盤中的分區(qū)個(gè)數(shù);/dev/dsk/c0t0d0s4 為要做成metadevice的物理分區(qū);-i 參數(shù)為每個(gè)條帶的大小;-i 32k的意思是每個(gè)條帶為32k字節(jié)。這條命令可以解釋為,用metainit命令制作一個(gè)striping方式的包含兩個(gè)子盤名為d2的RAID 0,兩個(gè)子盤分別為/dev/dsk/ c0t0d0s4和/dev/dsk/ c0t0d0s4,每個(gè)條帶大小為32k。
除了striping方式和concatenation方式,我們還可以通過metainit命令制作混合方式的RAID 0,不過很少有客戶會要求把RAID 0制作成混合方式。 下面是一個(gè)制作混合RAID 0的實(shí)例:
#metainit d12 3 2 c0t1d0s1 c1t1d0s1 1 c0t2d0s3 3 c0t3d0s4 c1t3d0s4 c2t3d0s4
這條命令可以解釋為,用metainit命令制作一個(gè)包含3個(gè)子盤名為d12的RAID 0,第一個(gè)子盤分別為c0t1d0s1和c1t1d0s1做成的striping,第二個(gè)子盤分別為c0t2d0s3,第三個(gè)子盤分別為c0t3d0s4 c1t3d0s4 c2t3d0s4做成的striping。
五. RAID 1
我們通常所說的RAID 1也就是對磁盤進(jìn)行并聯(lián),把兩個(gè)或更多的硬盤或分區(qū)并聯(lián)起來當(dāng)做一個(gè)邏輯設(shè)備使用,起到鏡像的作用。RAID 1提供了數(shù)據(jù)最大限度的安全性,它的數(shù)據(jù)安全性是沒有RAID 1時(shí)候的X倍(X為子鏡像數(shù)目)。為了提高數(shù)據(jù)安全性RAID 1浪費(fèi)了X-1倍的空間,磁盤利用率是沒有RAID 1時(shí)候的1/X,IO性能也略有下降。具體結(jié)構(gòu)參照下圖:
在RAID 1中,兩個(gè)子鏡像的數(shù)據(jù)是實(shí)時(shí)同步的。也就是說,兩個(gè)子鏡像在同一時(shí)間進(jìn)行相同的讀寫操作。RAID 1的方式被廣泛的應(yīng)用到系統(tǒng)盤的磁盤管理之中。就我個(gè)人的經(jīng)驗(yàn),超過半數(shù)的客戶會要求管理員或者工程師對他的系統(tǒng)盤進(jìn)行鏡像操作,以便于當(dāng)一塊硬盤損壞之后,可以從另一塊鏡像盤引導(dǎo)操作系統(tǒng)。 下面是一個(gè)系統(tǒng)盤制作RAID 1完整的實(shí)例;
1.首先規(guī)劃需要鏡像的硬盤
d0 d10 d20 / s0
d1 d11 d21 /var s1
d2 d12 d22 swap s3
d3 d13 d23 /export/home s6
d0,d1,d2,d3為對應(yīng)各個(gè)分區(qū)的metadevice名字;d10等是每個(gè)metadevice對應(yīng)的子鏡像。一般在做系統(tǒng)盤鏡像前,大家最好規(guī)劃一下各個(gè)metadevice的對應(yīng)關(guān)系和子鏡像名字以免混亂,同時(shí)也便于后期的維護(hù)。
2.硬盤分區(qū)同步
# prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2
由于系統(tǒng)盤鏡象要求磁盤分區(qū)完全一致,兩塊硬盤分區(qū)大小也必須相同。如果兩塊物理硬盤大小不一致,在保持所有分區(qū)大小和順序完全一致后,其他的空間將會浪費(fèi)掉。上面的prtvtoc可以使硬盤c0t1d0的分區(qū)和硬盤c0t0d0的分區(qū)相同,c0t0d0上的數(shù)據(jù)不會被破壞,但是c0t1d0上的數(shù)據(jù)將會被完全毀滅。除此之外,也可以利用系統(tǒng)中的format命令手動修改磁盤分區(qū)至完全一致。
3.制作metadb
# metadb -a -f -c 3 c0t0d0s7 c1t0d0s7
在c0t0d0s7、c0t1d0s7兩個(gè)硬盤分區(qū)上建立初始的metadb,每塊硬盤分區(qū)上的備份數(shù)目為3。
4.作根分區(qū)的兩路子鏡像
# metainit -f d10 1 1 c0t0d0s0
把c0t0d0s0制成名為d10的子鏡像,實(shí)際上這個(gè)子鏡像就是一個(gè)只包含一個(gè)分區(qū)的RAID 0。由于c0t0d0s0是操作系統(tǒng)的跟盤,分區(qū)中存在文件系統(tǒng),所以使用參數(shù)-f在文件系統(tǒng)的分區(qū)中強(qiáng)制執(zhí)行metainit命令,即:
# metainit d20 1 1 c0t1d0s0
把c0t1d0s0制作成名為d20的子鏡像。
5.制作根分區(qū)的鏡像盤
# metainit d0 -m d10
制名為d0的鏡像盤,其中一路子鏡像為d10。使用metainit命令和-f參數(shù)制作鏡像盤,所制的鏡像盤必須包含一路的子鏡像。這路鏡像硬盤必須是鏡像源盤所對應(yīng)的分區(qū),也就是說這路子鏡像中必須包含文件系統(tǒng)。
6.備份vfstab
、 # cp /etc/vfstab /etc/vfstab.backup
由于要修改vfstab文件,所以事先要備份vfstab文件,以便修改失敗時(shí)可以通過單用戶或者光盤單用戶方式恢復(fù)。
7.修改vfstab文件中關(guān)于根分區(qū)的項(xiàng)目
# metaroot d0
# lockfs
# reboot
把系統(tǒng)邏輯設(shè)備制作成metadevice后,需要修改/etc/vfstab文件,從而使下次重啟之后操作系統(tǒng)可以用metadevice的路徑掛接文件系統(tǒng)。通常情況要把類似于/dev/dsk/c0t0d0s0和/dev/rdsk/c0t0d0s0的行改為 /dev/md/dsk/c0t0d0s0和/dev/md/rdsk/c0t0d0s0。
metaroot命令可以自動修改vfstab文件的有關(guān)根分區(qū)的內(nèi)容, vfstab文件中非根分區(qū)的內(nèi)容要進(jìn)行手動修改。修改時(shí)注意項(xiàng)目之間要用tab鍵格開,不能用空格。
當(dāng)系統(tǒng)重新引導(dǎo)成功后,用df –k命令可以看出系統(tǒng)根分區(qū)的掛接目錄已經(jīng)由原來的c0t0d0s0改為存在單路子鏡像的metadevice,這個(gè)metadevice的名字是d0。
8.制作其他分區(qū)的鏡像盤
其它分區(qū)鏡像盤的制作方法類似于根分區(qū)的制作方法。
# metainit -f d11 1 1 c0t0d0s1
制作c0t0d0硬盤上的1號分區(qū)的metadevice,名為d11。
# metainit d21 1 1 c0t1d0s1
制作c0t1d0硬盤上的1號分區(qū)的metadevice,名為d21。
# metainit d1 -m d11
制作/var分區(qū)鏡像的metadevice,名為d1。其中,包含單路子鏡像的d11。d11必是包含文件系統(tǒng)的源盤對應(yīng)的分區(qū)。
# metainit -f d12 1 1 c0t0d0s3
制作c0t0d0硬盤上的3號分區(qū)的metadevice,名為d12。
# metainit d22 1 1 c0t1d0s3
制作c0t1d0硬盤上的3號分區(qū)的metadevice,名為d22。
# metainit d2 -m d12
制作swap分區(qū)鏡像的metadevice,名為d2,其中包含單路子鏡像的d12。d12必須是包含文件系統(tǒng)的源盤對應(yīng)的分區(qū)。
# metainit -f d13 1 1 c0t0d0s6
制作c0t0d0硬盤上的6號分區(qū)的metadevice,名為d13。
# metainit d23 1 1 c0t1d0s6
制作c0t1d0硬盤上的1號分區(qū)的metadevice,名為d23。
# metainit d3 -m d13
制作/export/home分區(qū)鏡像的metadevice, 名為d3,其中包含單路子鏡像的d13。d13也必須是包含文件系統(tǒng)的源盤對應(yīng)的分區(qū)。
我們可以使用metastat命令來查看SUN Solstice DiskSuite軟件使用的狀態(tài)。metastat命令可以查看到各個(gè)metadevice的屬性——也就是它們的RAID級別,各個(gè) metadevice之間的依存關(guān)系,各個(gè)metadevice和系統(tǒng)邏輯硬盤分區(qū)的關(guān)系,各個(gè)metadevice的健康狀況以及同步時(shí)顯示同步百分比。在實(shí)際應(yīng)用中,metastat是一個(gè)非常有用的命令,系統(tǒng)管理員和工程師可以很容易地從metastat命令的輸出中觀察到各個(gè) metadevice的結(jié)構(gòu)和健康狀況。我們還可以使用metaclear命令清除對硬盤的metadevice操作。這個(gè)命令可以理解為是 metainit的反向命令。例如:
# metaclear d0
9.將另外一路子鏡像盤加入到鏡像盤中
# metattach d0 d20
# metattach d1 d21
# metattach d2 d22
# metattach d3 d23
分別把子鏡像d20、d21、d22、d23加入相應(yīng)的鏡像盤。我們使用metattach命令把另外一路子鏡像添加到鏡像盤中。metattach命令的格式是:metattach 鏡像盤名子鏡像盤名,這兩個(gè)名字必須都是metadevice名稱。同樣的,我們還經(jīng)常使用metadetach命令將一路子鏡像盤從鏡像盤中分離出去。 metadetach命令和metattach命令的作用是相反的。
在使用metattach命令把另外一路子鏡像添加到鏡像盤之后,兩路子鏡像會進(jìn)行同步,這個(gè)同步的過程比較漫長。
#metastat | grep %
查看鏡像同步百分比。可以使用此命令查看所有分區(qū)同步的百分比。
10.修改/etc/vfstab文件中關(guān)于其它分區(qū)的項(xiàng)目
metaroot命令只能修改vfstab文件中關(guān)于根分區(qū)的項(xiàng)目,非根分區(qū)的項(xiàng)目需要手動修改。當(dāng)修改vfstab文件和同步進(jìn)程全部完成之后,可以重新引導(dǎo)操作系統(tǒng),至此,系統(tǒng)盤鏡像制作完畢。
六.RAID 5
RAID 5是一種帶有校驗(yàn)位的RAID形式。RAID 5的構(gòu)成至少需要3塊硬盤。它在把物理硬盤以類似于striping方式排列起來,并在其中加入校驗(yàn)位。在RAID 5中,校驗(yàn)位是以Z字形的順序排列的。這樣排列的好處是,一旦其中任何一塊硬盤損壞,RAID 5都可以至少占有2個(gè)數(shù)據(jù)模塊和一個(gè)校驗(yàn)?zāi)K中至少兩項(xiàng)。而另外一項(xiàng)總可以根據(jù)已經(jīng)存在的兩項(xiàng)算出。也就是說RAID 5的空間可以增加到?jīng)]有RAID 5之前的X-1倍,而同時(shí)又可以允許任何一塊硬盤故障而不丟失數(shù)據(jù)(X為RAID 5中的物理硬盤個(gè)數(shù))。RAID 5的具體結(jié)構(gòu)可以參照下圖。
可利用metainit命令制作RAID 5,下面是一個(gè)制作RAID 5的實(shí)例:
# metainit /dev/md/dsk/d12 –r /dev/dsk/c0t0d0s3 /dev/dsk/c0t0d0s4 /dev/dsk/c0t0d0s5 –i 8k
我們用-r參數(shù)代表制作RAID 5,在-r參數(shù)后邊加上需要做成RAID5的子磁盤;用 –i 參數(shù)來指定RAID 5中每個(gè)條帶的大小。這條命令可以解釋為用/dev/dsk/c0t0d0s3、/dev/dsk/c0t0d0s4、 /dev/dsk/c0t0d0s5三個(gè)分區(qū)制作一個(gè)名為d12的RAID 5,每個(gè)條帶的大小為8k。同樣可以用metastat命令查看RAID 5 的各項(xiàng)信息。由于RAID 5有著很好的容量和容錯(cuò)的平衡性,所以在實(shí)際項(xiàng)目實(shí)施中,RAID 5被應(yīng)用十分普遍。由于通常情況下RAID 5都是用來存儲數(shù)據(jù),所以系統(tǒng)管理員需要經(jīng)常觀察RAID 5的健康狀況,從而確保數(shù)據(jù)安全。
========
以下是使用心得(在一臺SunFire V880使用):
1 在第0個(gè)盤上安裝Solaris系統(tǒng),由于無知沒有預(yù)留metadb的空間
2 通過format命令,在第1、2個(gè)盤上安裝metadb分區(qū)(c1t1d0s7,c1t2d0s7),在1-5盤上聯(lián)立33GB的數(shù)據(jù)分區(qū)(c1t1d0s1,c1t2d0s1,c1t3d0s1,c1t4d0s1,c1t5d0s1)
3 建立meta數(shù)據(jù)
#metadb -a -f -c 3 c1t1d0s7 c1t2d0s7
??? 結(jié)果:
# metadb
??????? flags?????????? first blk?????? block count
???? a??????? u???????? 16????????????? 8192??????????? /dev/dsk/c1t1d0s7
???? a??????? u???????? 8208??????????? 8192??????????? /dev/dsk/c1t1d0s7
???? a??????? u???????? 16400?????????? 8192??????????? /dev/dsk/c1t1d0s7
???? a??????? u???????? 16????????????? 8192??????????? /dev/dsk/c1t2d0s7
???? a??????? u???????? 8208??????????? 8192??????????? /dev/dsk/c1t2d0s7
???? a??????? u???????? 16400?????????? 8192??????????? /dev/dsk/c1t2d0s7
4 建立RAID5
?#metainit /dev/md/dsk/d12 -r /dev/dsk/c1t1d0s1 /dev/dsk/c1t2d0s1 \??
? ?? /dev/dsk/c1t3d0s1 /dev/dsk/c1t4d0s1 /dev/dsk/c1t5d0s1 -i 8k
結(jié)果:
# metastat d12: RAID
??? 狀態(tài): 初始化
??? 正在進(jìn)行初始化: 56.6% 完成
??? 交錯(cuò): 16 塊
??? 大小: 276821091 塊 (131 GB)
原始設(shè)備:
??? 大小: 276823296 塊 (131 GB)
??????? 設(shè)備?????? 引導(dǎo)塊?????? Dbase???????? 狀態(tài) Reloc? 熱備援
??????? c1t1d0s1?????? 3059??????? 否?????? 初始化??? 是
??????? c1t2d0s1?????? 3059??????? 否?????? 初始化??? 是
??????? c1t3d0s1?????? 3059??????? 否?????? 初始化??? 是
??????? c1t4d0s1?????? 3059??????? 否?????? 初始化??? 是
??????? c1t5d0s1?????? 3059??????? 否?????? 初始化??? 是
Device Relocation Information:
Device?? Reloc? Device ID
c1t1d0?? 是???? id1,ssd@n20000004cf7f1ce9
c1t2d0?? 是???? id1,ssd@n20000004cf7f1757
c1t3d0?? 是???? id1,ssd@n20000004cf7f178b
c1t4d0?? 是???? id1,ssd@n2000002037f834fc
c1t5d0?? 是???? id1,ssd@n20000004cf7f1a88
5 格式化
# newfs? /dev/md/dsk/d12
newfs: 建構(gòu)新的文件系統(tǒng) /dev/md/rdsk/d12: (y/n)? y
警告:最后一個(gè)未分配柱面中的 2974 扇區(qū)
/dev/md/rdsk/d12:?????? 在 45056 磁道上,48 扇區(qū)的 128 柱面的 276821090 扇區(qū)
??????? 135166.5MB 在 2816 柱面群組 (16 c/g, 48.00MB/g, 5824 i/g)
超塊 (fsck -F ufs -o b=#) 備份在:
?32, 98464, 196896, 295328, 393760, 492192, 590624, 689056, 787488, 885920,
初始化柱面組:
........................................................
最后 10 個(gè)柱面組的超級塊備份位置:
?275847968, 275946400, 276044832, 276143264, 276241696, 276340128, 276438560,
?276536992, 276635424, 276733856
6 mount
# mount /dev/md/dsk/d12 /data/
在/etc/vfstab中添加
/dev/md/dsk/d12???????? /dev/md/dsk/d12???????? /data?? ufs???? 2?????? yes???? -