Filer 由控制器機(jī)頭和磁盤(pán)子系統(tǒng)組成。機(jī)頭通過(guò)光纖通道接口連接磁盤(pán)SAN 子系統(tǒng),通過(guò)網(wǎng)絡(luò)接口提供數(shù)據(jù)到應(yīng)用服務(wù)器,機(jī)頭的接口數(shù)量通過(guò)PCI 插卡擴(kuò)充。磁盤(pán)子系統(tǒng)由可以堆疊的磁盤(pán)柜組成。
Filer 的基本軟件結(jié)構(gòu)如下圖(圖5-57)所示,一些緊密耦合的處理模塊處理NFS,CIFS, 和 HTTP 請(qǐng)求。一個(gè)請(qǐng)求從下方的網(wǎng)絡(luò)驅(qū)動(dòng)開(kāi)始,經(jīng)過(guò)網(wǎng)絡(luò)協(xié)議層和文件系統(tǒng),向上到達(dá)磁盤(pán)I/O ,當(dāng)文件系統(tǒng)完成了請(qǐng)求,它把請(qǐng)求送回網(wǎng)絡(luò)。這些模塊建立在一個(gè)簡(jiǎn)練的real-time 內(nèi)核上,提供產(chǎn)生進(jìn)程,內(nèi)存分配,消息傳遞和中斷等基本處理。
網(wǎng)絡(luò)層支持TCP/IP,與UNIX 系統(tǒng)相比,為Filer 的文件服務(wù)進(jìn)行了優(yōu)化,以增加Filer文件系統(tǒng)通訊的效率。
WAFL., Filer 的文件系統(tǒng),是專門(mén)為通過(guò)網(wǎng)絡(luò)提供文件服務(wù)而設(shè)計(jì)的,而且與Filer的RAID 配合設(shè)計(jì),解決常規(guī)操作系統(tǒng)由于RAID 而引起的性能問(wèn)題。
圖 5-57 Filter 基本結(jié)構(gòu)
15.4.3.3 WAFL – Write Anywhere File Layout
Filer 文件系統(tǒng)是經(jīng)過(guò)重新設(shè)計(jì)的,而不采用常規(guī)文件系統(tǒng),是為了達(dá)到三個(gè)主要目標(biāo):
文件系統(tǒng)應(yīng)當(dāng)和RAID 高效協(xié)同
文件系統(tǒng)可以在新增磁盤(pán)時(shí)動(dòng)態(tài)擴(kuò)充
文件系統(tǒng)無(wú)需進(jìn)行費(fèi)時(shí)的一致性檢驗(yàn)
而且,由此產(chǎn)生了支持Snapshot 的要求。
在一些方面WAFL 的磁盤(pán)格式與其他UNIX 文件系統(tǒng)類似,例如, Berkeley Fast File System 和 IBM TransArc Episode file system。.其中:
WAFL 是基于塊的,使用連續(xù)的4KB block
WAFL 使用 inode 來(lái)描述文件
目錄是特殊格式的文件
WAFL 利用文件保存元數(shù)據(jù)(meta-data),數(shù)據(jù)存儲(chǔ)的控制信息,WAFL 的三個(gè)最重要的元數(shù)據(jù),分別是inode file (包括所有的inodes), 空閑磁盤(pán)塊的位圖文件,空閑inode 的位圖文件。將元數(shù)據(jù)以文件方式組織,可以將元數(shù)據(jù)塊寫(xiě)到磁盤(pán)的任何位置,這就是WAFL(任意寫(xiě)文件系統(tǒng))名稱的來(lái)源。由于沒(méi)有特定數(shù)據(jù)寫(xiě)入特定磁盤(pán)區(qū)(例如0 磁道)的要求,WAFL 可以完全控制其寫(xiě)操作的空間分配策略。Windows 和UNIX 的FFS 文件系統(tǒng)卻不是這樣的。
WAFL 利用了這種靈活性優(yōu)化Filer 的RAID 的寫(xiě)操作性能,在IO 中write 優(yōu)化的文件系統(tǒng)是十分重要的,因?yàn)閷?xiě)操作必須更新到磁盤(pán)或者NVRAM(不掉電內(nèi)存),而讀可以在UNIX/Window 用戶和服務(wù)器的內(nèi)存里進(jìn)行Cache 緩存。一般 UNIX 和Windows 服務(wù)器的寫(xiě)操作數(shù)通常有5 到10 倍的讀操作數(shù)。
15.4.3.4 Snapshot 介紹
Snapshot 功能是WAFL 的隨意寫(xiě)帶來(lái)的另一個(gè)功能。Snapshot ,也叫“快照”,是文件系統(tǒng)在線的(隨時(shí)可以訪問(wèn)),只讀的“拷貝”, Snapshot 只需幾秒鐘就可以生成,如果文件未被改變或刪除就不占額外空間,或者說(shuō)只有當(dāng)文件系統(tǒng)的變化,變化部分會(huì)寫(xiě)入新的磁盤(pán)空間,這時(shí),快照消費(fèi)額外空間。
快照可以用于在線備份,并且使用戶可以自己進(jìn)行文件恢復(fù)操作。簡(jiǎn)化了備份到磁帶的作業(yè)。由于快照是整個(gè)文件系統(tǒng)的只讀的拷貝,是當(dāng)前文件系統(tǒng)的具備自身一致性的備份,所以無(wú)需關(guān)機(jī)或使當(dāng)前文件系統(tǒng)離線,系統(tǒng)管理員可以將快照備份到磁帶機(jī)上。
圖5-58 Snapshot 的生成
上圖(a)示意了一個(gè)簡(jiǎn)化的文件系統(tǒng),一個(gè)指針指向文件對(duì)應(yīng)的磁盤(pán)塊,(b)示意通過(guò)指針結(jié)構(gòu)的復(fù)制生成了快照,(c)示意當(dāng)塊C 被修改,修改后的值存入新塊,C’,當(dāng)前文件系統(tǒng)指向C’,而快照仍保存了文件系統(tǒng)在拍快照時(shí)的狀況。
WAFL 通過(guò)復(fù)制指針數(shù)據(jù)生成新的快照,由于該結(jié)構(gòu)只有128Byte 大小,而且沒(méi)有數(shù)據(jù)磁盤(pán)塊需要復(fù)制或者移動(dòng), 除非當(dāng)前文件系統(tǒng)的數(shù)據(jù)發(fā)生變化,快照步需要占用額外的磁盤(pán)空間,而且快照可以即時(shí)生成。
Filer 可以為每個(gè)文件系統(tǒng)在線保留255 個(gè)版本的快照??梢允謩?dòng)生成或刪除快照,也可以根據(jù)用戶定義的日程自動(dòng)生成和刪除。Snapshot 占用的空間取決于用戶數(shù)據(jù)變化的頻率,可以通過(guò)指定快照占用空間的大小。一般17%的額外空間就可以保留整個(gè)文件系統(tǒng)的多個(gè)版本的快照。
用戶訪問(wèn)快照的方式
文件系統(tǒng)的每個(gè)目錄都含有一個(gè)特殊的子目錄,表示快照,通過(guò)對(duì)它的訪問(wèn),用戶可以得到以前的數(shù)據(jù)。假如用戶以外刪除了名為foo 的文件,希望從快照里把它恢復(fù)出來(lái),下面例子現(xiàn)實(shí)如何在UNIX/NFS 下察看以前的文件并進(jìn)行恢復(fù)。
% ls -lu .Snapshot/*/foo
-rw-r–r– 1 hitz 16787 Jun 16 15:00 .Snapshot/hourly.0/foo
-rw-r–r– 1 hitz 16744 Jun 16 12:00 .Snapshot/hourly.1/foo
-rw-r–r– 1 hitz 16811 Jun 16 10:00 .Snapshot/hourly.2/foo
三個(gè)Snapshot 中含有文件 foo。 -u 選項(xiàng)通知ls 命令列出foo 文件的生成時(shí)間,也就是拍快照的時(shí)間。如果要恢復(fù),只需要將要恢復(fù)的文件copy 回來(lái)到foo 所在得目錄就可以了。
% cp .snapshot/hourly.0/foo .
Snapshot 的目錄是隱藏的只讀目錄,這樣平常的操作不會(huì)受影響,而且不會(huì)被修改。