WAFL 最長每10 秒就會生成一個內(nèi)部快照,成為一致性檢查點,所以在磁盤上會有一個完全具有一致性的文件系統(tǒng)版本,當(dāng)filer 啟動,WAFL 總是是用在磁盤上最新的檢查點,所以Filer 避免了費時的文件系統(tǒng)校驗,F(xiàn)ile system check, 使得即使意外掉電或者系統(tǒng)故障時,也不必進(jìn)行file system check。 Filer 只需要2 分鐘的硬件自檢就可以重新完成啟動。
Filer 使用電池支持的不掉電RAM (NVRAM),避免丟失任何發(fā)生在檢查點后的NFS/CIFS請求,正常關(guān)機(jī)時,F(xiàn)iler 關(guān)閉NFS/CIFS 服務(wù),將所有緩沖在NVRAM 的請求刷新到磁盤后關(guān)閉NVRAM。當(dāng)filer 故障后重啟動,它將replay 所有保存在NVRAM 中的沒到磁盤的NFS/CIFS請求。
使用NVRAM 保存沒有commit 到磁盤的請求,與一些UNIX 使用NVRAM 作為disk cache有很大的區(qū)別。當(dāng)在磁盤層面上使用NVRAM ,其中可能包含影響一致性的重要數(shù)據(jù),如果NVRAM 出問題,文件系統(tǒng)會不一致,即使使用fsck 也無法恢復(fù)。
WAFL 還使用NVRAM 作為文件系統(tǒng)日志journal,而不是需要變化的磁盤塊的緩存(Disk Cache),所以WAFL 極為有效地利用了NVRAM 的空間。例如,一個請求,讓文件系統(tǒng)生成一個新文件,可以用幾百個字節(jié)信息表明,而磁盤上卻需要改變十幾塊的信息。由于WAFL 使用NVRAM 保存操作命令日志,而不是這些命令的結(jié)果,NVRAM 可以保存幾千個操作的日志。
15.4.3.6 Filer 的RAID
Filer 使用了一種RAID 4 設(shè)計來保護(hù)數(shù)據(jù)避免受磁盤故障的破壞。然而與一般的RAID4 和 RAID 5 實現(xiàn)不同,一般的RAID 實現(xiàn)結(jié)構(gòu)沒有考慮文件系統(tǒng)的結(jié)構(gòu)和活動方式。
WAFL 的 RAID 4 實現(xiàn),是與文件系統(tǒng)的設(shè)計緊密優(yōu)化的。 通過將文件系統(tǒng)和RAID 層結(jié)合考慮, NetApp. RAID 的設(shè)計提供了所有RAID 校驗保護(hù)的好處,克服了常規(guī)的RAID 5帶來的性能損失。另外, WAFL 的 RAID 4 設(shè)計不像RAID 5 那樣將數(shù)據(jù)和校驗數(shù)據(jù)交織到每個盤,整個系統(tǒng)可以在有RAID 的時候仍然可以迅速簡便地擴(kuò)充。
通過RAID 4, 如果一個磁盤有損壞,利用RAID 組里的校驗盤可以重新計算出損壞磁盤上的數(shù)據(jù),其 block 映射到磁盤上的新的位置。如果整個磁盤損壞,校驗盤也可以保護(hù)數(shù)據(jù)不丟失,當(dāng)故障盤重新替換,所有內(nèi)容通過校驗盤自動重計算。
RAID 4 陣列使用一個磁盤專用于校驗,其余用于數(shù)據(jù)。每個磁盤由4KB 的 block 組成。一個條帶,stripe,由每個數(shù)據(jù)磁盤的一個block 和校驗盤的一個block 組成。
最常用的RAID 級別有0,1,3,5,RAID0 是劃分為條帶,由于沒有校驗區(qū),所以無容余糾錯能力。RAID1 是簡單地鏡像,所有數(shù)據(jù)復(fù)制在另一粒盤上,RAID 1 很安全,但是需要兩倍的磁盤容量。RAID 3 類似 RAID 4, 專門一個盤用于校驗,但是RAID 3 的條帶太小,一個讀寫操作就可能跨陣列內(nèi)所有的磁盤, RAID 3 適合單個大文件很高的速率要求,例如超級計算,和圖像處理,但對于多用戶應(yīng)用產(chǎn)生的不相關(guān)的讀寫表現(xiàn)很差。而RAID 4 改進(jìn)了這一點。
RAID 5 類似 RAID 4,但是在所有磁盤中循環(huán)安排數(shù)據(jù)區(qū)和校驗區(qū),第一個條帶的校驗區(qū)在第一塊盤,第二個條帶的校驗在第二個盤,等等。主要的優(yōu)點是防止校驗盤成為瓶頸。缺點是在RAID 5 array 中增加一個盤很不實際,擴(kuò)容時需要添加一個新陣列。例如,如果在RAID 5 實施時每個陣列使用7 個disk,通常擴(kuò)容時每次增加7 個盤。
大多數(shù)用于UNIX 和Windows 環(huán)境的外設(shè)避免使用RAID 4,因為使用通用的文件系統(tǒng),校驗盤會成為瓶頸。另一方面,WAFL file system, 利用其隨意寫的布局寫磁盤,使用RAID4 的磁盤卻十分高效。
以UNIX 的文件系統(tǒng)為例說明WAFL 如何與通用的文件系統(tǒng)不同。通常的UNIX 使用FFS(the Berkeley Fast File System) ,該文件系統(tǒng)的設(shè)計針對一次寫一個文件進(jìn)行優(yōu)化,所以不同文件的塊寫到磁盤上很分散的位置。FFS 在陣列里寫入3 個不相關(guān)的文件時的塊分配的位置,每個數(shù)據(jù)盤寫只有2 次,而校驗盤卻要寫6 次。更致命的是,校驗位的寫十分分散,導(dǎo)致很長的尋道時間。
這是由于 Berkeley FFS 不知道下層的RAID 4 的布局,往往會生成在數(shù)據(jù)盤上分散的磁盤寫請求,導(dǎo)致校驗盤過長的尋道時間。WAFL 的寫方式被設(shè)計成最小化校驗盤的尋道時間。WAFL 總是把寫相鄰條帶的block,減少校驗盤的尋道時間。WAFL 還盡可能地寫同一條帶的多個塊,進(jìn)一步減少校驗盤的流量。
15.4.3.7 Appliance 方式的優(yōu)點
通過Appliance 方式的設(shè)計,以網(wǎng)絡(luò)為服務(wù)器提供數(shù)據(jù),使得NetApp 可以提供一種傳統(tǒng)的存儲方式,以及基于UNIX 和NT 的系統(tǒng)無以比擬的存儲管理
這些特點,以及Appliance方式帶來的高性能和高可用性,使得Filer成為十分易用且性價比很高的產(chǎn)品。