文件系統(tǒng)專(zhuān)用設(shè)備Filer 除了軟硬件本身具有99.99%的高可靠性以外,為了消除一些單點(diǎn)故障(如系統(tǒng)主板出錯(cuò),等),在以低成本、低性能開(kāi)銷(xiāo)、不增加系統(tǒng)復(fù)雜度的前提下,將兩臺(tái)獨(dú)立的Filer 耦合起來(lái),實(shí)現(xiàn)一旦一臺(tái)Filer 因故障而停止運(yùn)行并且不能重新啟動(dòng),另一臺(tái)Filer 立即就可接管這一臺(tái)Filer 的全部工作,保證系統(tǒng)正常運(yùn)行。
兩臺(tái)Filer 都與磁盤(pán)陣列相連,并處于同一網(wǎng)中,兩臺(tái)Filer 之間用高速、冗余的光纖互連。光纖通道(FC-AL)的硬盤(pán)有兩個(gè)端口,分別與兩臺(tái)Filer 相連。
每個(gè)Filer 有自己主管的一組硬盤(pán)。正常運(yùn)行時(shí),兩臺(tái)Filer 各自獨(dú)立工作,硬盤(pán)、風(fēng)扇或電源出錯(cuò)不影響另一臺(tái)Filer 的工作。同樣,若一臺(tái)Filer 的軟件出錯(cuò),這也僅僅引起這臺(tái)Filer 重新啟動(dòng),不會(huì)影響到另一臺(tái)Filer 的工作。如果一臺(tái)Filer 發(fā)生災(zāi)難性故障,即不能重新啟動(dòng),則另一臺(tái)Filer 會(huì)自動(dòng)接管原屬于有故障的Filer 的硬盤(pán)、文件系統(tǒng)、同時(shí)將其IP 地址也歸為己有。
在整個(gè)接管過(guò)程中,客戶(hù)端僅簡(jiǎn)單地感覺(jué)到系統(tǒng)像是在重新啟動(dòng)。所有在系統(tǒng)本身重起過(guò)程中,能夠保留的狀態(tài),另一臺(tái)Filer 也同樣通過(guò)接管保留。當(dāng)然,如果一臺(tái)Filer 在其重新啟動(dòng)過(guò)程中丟失一些狀態(tài),如CIFS 鎖(LOCK)狀態(tài)和文件狀態(tài)等,則在接管后,另一臺(tái)Filer 也不能保留這些狀態(tài)。
一旦有故障的Filer 恢復(fù)正常運(yùn)行后,它不會(huì)自動(dòng)地再接管自己的文件系統(tǒng),這需要系統(tǒng)管理員干預(yù)才能實(shí)現(xiàn)。系統(tǒng)管理員也可強(qiáng)制一臺(tái)Filer 交出自己的文件系統(tǒng),從而可實(shí)行計(jì)劃中的Filer 和硬盤(pán)維護(hù)工作。
Cluster Failover 主要依靠以下兩個(gè)方面工作:
其一是WAFL 的特性,特別是WAFL 文件系統(tǒng)的盤(pán)上狀態(tài)(ON-DISK STATE)永遠(yuǎn)是一致的。這個(gè)盤(pán)上狀態(tài)從一個(gè)一致點(diǎn)移動(dòng)到另一個(gè)一致點(diǎn)的過(guò)程為一個(gè)交易,也就是說(shuō),要么完成一個(gè)狀態(tài)遷移,要么無(wú)狀態(tài)遷移,因此它永遠(yuǎn)保持一致。另外,WAFL 在日志文件中記錄所有被服務(wù)過(guò)的、能夠轉(zhuǎn)移到非易先性RAM(NVRAM)中的客戶(hù)請(qǐng)求。日志文件中那些已被轉(zhuǎn)移到硬盤(pán)上的客戶(hù)請(qǐng)求只有在一個(gè)盤(pán)上狀態(tài)遷移完成后,才被丟棄。Filer 通常利用這些特征將盤(pán)上數(shù)據(jù)從故障中恢復(fù)。當(dāng)Filer 重新啟動(dòng)時(shí),它只是簡(jiǎn)單地重新執(zhí)行在最近(一致性)盤(pán)上狀態(tài)未反映的NVRAM 中的客戶(hù)請(qǐng)求。
NVRAM 在CLUSTER 中的鏡像
其次是互連的特性,特別是互連具有遠(yuǎn)程內(nèi)存存取能力(有時(shí)也稱(chēng)作非一致性?xún)?nèi)存存取,或者簡(jiǎn)稱(chēng)NUMA)。當(dāng)一個(gè)客戶(hù)請(qǐng)求到來(lái)時(shí),F(xiàn)iler 將其記錄在它本地的NVRAM 中。
在Cluster 的配置中,F(xiàn)iler 利用遠(yuǎn)程內(nèi)存存取特性將日志文件中的記錄項(xiàng)拷貝到另一臺(tái)Filer的NVRAM 中。這個(gè)技術(shù)的一個(gè)突出優(yōu)點(diǎn)是發(fā)送方發(fā)送的拷貝極快,幾乎不影響到接收方的操作(如,沒(méi)有包處理過(guò)程)。同樣,另一臺(tái)Filer 也會(huì)將自己的NVRAM 中的日志記錄項(xiàng)拷貝到這臺(tái)Filer 的NURAM 中。
當(dāng)一臺(tái)Filer 不能從互連的光纖通道、網(wǎng)絡(luò)或硬盤(pán)上探測(cè)到另一臺(tái)Filer 的心跳(HEARTBEAT)或I/O 活動(dòng),他即認(rèn)為這臺(tái)Filer 已出故障,接管過(guò)程開(kāi)始。主要是接管出故障的Filer 的IP 和MAC 地址、文件系統(tǒng)和硬盤(pán),以及后臺(tái)服務(wù)器進(jìn)程(daemon),并將其使用的NVRAM 中的日志記錄項(xiàng)回現(xiàn)。這個(gè)技術(shù)與Filer 重新啟動(dòng)時(shí)所使用到的技術(shù)類(lèi)似。接管后,正常工作的Filer 中的每個(gè)后臺(tái)服務(wù)器進(jìn)程(daemon)具有兩個(gè)標(biāo)識(shí)符,一個(gè)用于本地Filer,另一個(gè)用于另一臺(tái)Filer。