專利名稱:一種分布式文件系統(tǒng)中多客戶端緩存同步的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式文件系統(tǒng)中客戶端緩存同步問(wèn)題,具體來(lái)說(shuō),涉及一種分布式文件系統(tǒng)中多客戶端緩存同步的方法。
背景技術(shù):
進(jìn)入信息化時(shí)代后,隨著技術(shù)的不斷發(fā)展,在各行各業(yè)中,對(duì)于存儲(chǔ)的需求呈幾何趨勢(shì)遞增,這就導(dǎo)致常規(guī)的本地文件系統(tǒng)無(wú)法滿足業(yè)務(wù)的需求。于是,在應(yīng)用需求的刺激下,各種不同類型的分布式文件系統(tǒng)應(yīng)運(yùn)而生了,如NFS、Lustre、GPFS、Google FS等。
對(duì)于分布式文件系統(tǒng)而言,由于其客戶端分布在不同的物理機(jī)器上,因此不同的客戶端對(duì)于文件系統(tǒng)元數(shù)據(jù)和數(shù)據(jù)的操作是相互不可見的。于是就存在一個(gè)客戶端對(duì)于文件系統(tǒng)的修改對(duì)另一個(gè)客戶端不可見的問(wèn)題,也就是多客戶端之間存在緩存一致性的問(wèn)題。為了解決這一問(wèn)題,不同的分布式文件系統(tǒng)采用了不同的機(jī)制
NFS采用緩存定時(shí)更新的策略,即客戶端為元數(shù)據(jù)或數(shù)據(jù)緩存設(shè)定版本號(hào)和超時(shí)時(shí)間,當(dāng)客戶端訪問(wèn)緩存內(nèi)的數(shù)據(jù)時(shí),如果發(fā)現(xiàn)超時(shí),則去服務(wù)器上再次讀回相應(yīng)數(shù)據(jù),并更新本地緩存。這種方式的優(yōu)點(diǎn)在于相對(duì)簡(jiǎn)單,但是缺點(diǎn)在于,如果數(shù)據(jù)沒(méi)有修改,則會(huì)浪費(fèi)很多網(wǎng)絡(luò)10,對(duì)服務(wù)器施加了不必要的壓力。另外,該種方法不能保證客戶端之間的緩存時(shí)嚴(yán)格一致的,因?yàn)樵诔瑫r(shí)時(shí)間以內(nèi),客戶端是無(wú)法察覺(jué)其他客戶端對(duì)于數(shù)據(jù)的修改的。
Lustre和GPFS采用了較為復(fù)雜的分布式鎖的方式來(lái)保證客戶端之間緩存的一致性。當(dāng)客戶端上保存有某中數(shù)據(jù)的緩存時(shí),需要同時(shí)持有相應(yīng)的鎖,其他客戶端想要訪問(wèn)該數(shù)據(jù)時(shí),需要根據(jù)訪問(wèn)屬性與已持有該數(shù)據(jù)鎖的客戶端進(jìn)行互斥。分布式鎖的設(shè)計(jì)相對(duì)比較復(fù)雜,開發(fā)的成本比較高,并且在實(shí)際的使用當(dāng)中,其效率相對(duì)較低。
Google FS是專為大文件設(shè)計(jì)的文件系統(tǒng),在客戶端上不存有緩存,因此客戶端訪問(wèn)任何數(shù)據(jù)都是直接去服務(wù)器上讀取,因而不存在客戶端之間緩存一致性的問(wèn)題。發(fā)明內(nèi)容
本發(fā)明旨在公開一種分布式文件系統(tǒng)中多客戶的之間緩存一致性的方案,該方案能夠嚴(yán)格保證不同客戶端之間緩存的一致性,并且其實(shí)現(xiàn)與Lustre和GPFS的分布式鎖相比較而言,開發(fā)成本相對(duì)較小。
一種分布式文件系統(tǒng)中多客戶端緩存同步的方法,
將元數(shù)據(jù)服務(wù)器作為客戶端緩存信息的控制節(jié)點(diǎn),對(duì)該元數(shù)據(jù)服務(wù)器上維護(hù)的索引節(jié)點(diǎn),記錄各個(gè)客戶端在該元數(shù)據(jù)服務(wù)器上的存儲(chǔ)狀態(tài);
將元數(shù)據(jù)信息按照客戶端緩存屬性分為只讀緩存和可寫緩存;
對(duì)于元數(shù)據(jù)只讀緩存,當(dāng)客戶端第一次讀取元數(shù)據(jù)時(shí),元數(shù)據(jù)服務(wù)器授予客戶端只讀權(quán)限或者可寫緩存權(quán)限,并且在操作完畢后一直持有該權(quán)限;
對(duì)于元數(shù)據(jù)可寫緩存,客戶端的修改暫時(shí)保存到本地,當(dāng)滿足寫回觸發(fā)條件時(shí)進(jìn)行寫回。
優(yōu)選的,所述索引節(jié)點(diǎn)如果是文件,需要記錄客戶端對(duì)于文件內(nèi)容的緩沖狀態(tài)。
優(yōu)選的,所述客戶端如果需要修改所述元數(shù)據(jù)只讀緩存,則先清空本地緩存,然后向元數(shù)據(jù)服務(wù)器發(fā)送修改請(qǐng)求,由元數(shù)據(jù)服務(wù)器完成修改并重新授予客戶端對(duì)于該元數(shù)據(jù)的只讀緩存權(quán)限。
優(yōu)選的,所述元數(shù)據(jù)服務(wù)器在處理來(lái)自客戶端的修改請(qǐng)求時(shí),先檢查其他客戶端是否緩存了該元數(shù)據(jù)的相應(yīng)信息,如果有客戶端緩存,則需先請(qǐng)求其他客戶端清空緩存,然后由元數(shù)據(jù)服務(wù)器進(jìn)行修改。
優(yōu)選的,所述觸發(fā)條件包括操作系統(tǒng)定時(shí)回寫;以及收到來(lái)自元數(shù)據(jù)服務(wù)的釋放可寫緩存權(quán)限的請(qǐng)求。
優(yōu)選的,所述元數(shù)據(jù)被劃分為定長(zhǎng)區(qū)間,按照區(qū)間授予客戶端緩存權(quán)限。
本發(fā)明該嚴(yán)格保證了不同客戶端之間緩存的一致性,并且其實(shí)現(xiàn)與Lustre和 GPFS的分布式鎖相比較而言,開發(fā)成本相對(duì)較小。
具體實(shí)施方式
本發(fā)明選擇元數(shù)據(jù)服務(wù)器作為控制點(diǎn),將客戶端緩存分為兩種類型只讀緩存和可寫緩存。對(duì)于只讀緩存,客戶端只能讀,而不能修改;而對(duì)于可寫緩存,客戶端既可以讀, 也可以修改。當(dāng)一個(gè)客戶端需要緩存元數(shù)據(jù)或數(shù)據(jù)時(shí),需要到相應(yīng)的元數(shù)據(jù)服務(wù)器上申請(qǐng)?jiān)S可,元數(shù)據(jù)服務(wù)器會(huì)作相應(yīng)的記錄。當(dāng)多個(gè)客戶端訪問(wèn)元數(shù)據(jù)或數(shù)據(jù)存在競(jìng)爭(zhēng)時(shí),元數(shù)據(jù)服務(wù)器負(fù)責(zé)協(xié)調(diào),讓各個(gè)客戶端能夠及時(shí)清理緩存,獲得對(duì)數(shù)據(jù)或元數(shù)據(jù)公平的訪問(wèn)機(jī)會(huì)。
對(duì)于元數(shù)據(jù)信息的修改,除了文件的大小信息以外,其他的信息均直接由元數(shù)據(jù)服務(wù)器修改,即客戶端上只保留只讀緩存;對(duì)于文件的內(nèi)容和大小信息,為了保證效率,客戶端上保留有可寫緩存,當(dāng)其他客戶端需要訪問(wèn)時(shí),元數(shù)據(jù)服務(wù)器需要通知該客戶端,該客戶端需要回寫本地的修改,這樣其他客戶端就可以訪問(wèn)到最新的信息了。
發(fā)明中的技術(shù)方案具體描述如下
(1)以元數(shù)據(jù)服務(wù)器作為客戶端緩存信息的控制節(jié)點(diǎn),對(duì)于該元數(shù)據(jù)服務(wù)器上維護(hù)的索引節(jié)點(diǎn),記錄各個(gè)客戶端對(duì)其的緩存狀態(tài)。如果索引節(jié)點(diǎn)是文件,還需要記錄客戶端對(duì)于文件內(nèi)容的緩沖狀態(tài)。
(2)對(duì)于元數(shù)據(jù)信息,按照客戶端緩存屬性,將其分為只讀和可寫兩類。本發(fā)明中, 客戶端上保留有可寫緩存的信息僅有文件的大小,對(duì)于其他元數(shù)據(jù)信息,客戶端只會(huì)保留只讀緩存。
對(duì)于文件內(nèi)容,即數(shù)據(jù)信息,客戶端可能持有只讀或可寫緩存。
(3)對(duì)于元數(shù)據(jù)只讀緩存,正常模式下,當(dāng)客戶端第一次讀取元數(shù)據(jù)時(shí),元數(shù)據(jù)服務(wù)器授予其只讀緩存或可寫緩存的權(quán)限。當(dāng)客戶端使用完畢后,并不會(huì)立即釋放緩存權(quán)限,而是一直持有該權(quán)限,以提高緩存的使用率。如果客戶端需要修改這類元數(shù)據(jù)信息,需要首先清空本地緩存,然后向元數(shù)據(jù)服務(wù)器發(fā)送修改請(qǐng)求,由元數(shù)據(jù)服務(wù)器來(lái)完成修改,并重新授予客戶端對(duì)于該元數(shù)據(jù)這些信息的只讀緩存權(quán)限。
元數(shù)據(jù)服務(wù)器在處理來(lái)至客戶端的修改請(qǐng)求時(shí),需要先檢查其他客戶端是否緩存了改元數(shù)據(jù)的相應(yīng)信息,如果有客戶端緩存,則需要先請(qǐng)求這些客戶端清空緩存,然后元數(shù)據(jù)服務(wù)器才進(jìn)行修改。4
(4)對(duì)于元數(shù)據(jù)可寫緩存,客戶端的修改會(huì)暫時(shí)保留在本地。寫回元數(shù)據(jù)服務(wù)器的觸發(fā)條件有兩個(gè)一個(gè)是操作系統(tǒng)的定時(shí)回寫;另一個(gè)是收到來(lái)自元數(shù)據(jù)服務(wù)的釋放可寫緩存權(quán)限的請(qǐng)求,一般是由于其他客戶端需要訪問(wèn)該元數(shù)據(jù)信息,從而產(chǎn)生可沖突。
(5)對(duì)于文件內(nèi)容的緩存,本發(fā)明首先將文件分成定長(zhǎng)的區(qū)間,按照區(qū)間授予客戶端緩存權(quán)限。之所以選擇這樣的算法,主要是為了減小客戶端訪問(wèn)文件內(nèi)容時(shí)產(chǎn)生的沖突, 提高不同客戶端對(duì)于同一個(gè)文件訪問(wèn)的并發(fā)度。當(dāng)客戶端需要訪問(wèn)文件內(nèi)容時(shí),需要首先根據(jù)自己的訪問(wèn)區(qū)間,向元數(shù)據(jù)服務(wù)器申請(qǐng)對(duì)于文件區(qū)間緩存權(quán)限,得到權(quán)限授予后,方可以操作數(shù)據(jù)。
客戶端對(duì)文件內(nèi)容緩存的操作方式類似元數(shù)據(jù)緩存對(duì)于只讀緩存,客戶端會(huì)保留盡可能長(zhǎng)的時(shí)間,直到收到來(lái)自元數(shù)據(jù)服務(wù)器的緩沖清空請(qǐng)求;而對(duì)于可寫緩存,客戶端的修改在本地暫時(shí)緩存,直到操作系統(tǒng)或元數(shù)據(jù)服務(wù)器來(lái)觸發(fā)回寫。
權(quán)利要求
1.一種分布式文件系統(tǒng)中多客戶端緩存同步的方法,其特征在于將元數(shù)據(jù)服務(wù)器作為客戶端緩存信息的控制節(jié)點(diǎn),對(duì)該元數(shù)據(jù)服務(wù)器上維護(hù)的索引節(jié)點(diǎn),記錄各個(gè)客戶端在該元數(shù)據(jù)服務(wù)器上的存儲(chǔ)狀態(tài);將元數(shù)據(jù)信息按照客戶端緩存屬性分為只讀緩存和可寫緩存; 對(duì)于元數(shù)據(jù)只讀緩存,當(dāng)客戶端第一次讀取元數(shù)據(jù)時(shí),元數(shù)據(jù)服務(wù)器授予客戶端只讀權(quán)限或者可寫緩存權(quán)限,并且在操作完畢后一直持有該權(quán)限;對(duì)于元數(shù)據(jù)可寫緩存,客戶端的修改暫時(shí)保存到本地,當(dāng)滿足寫回觸發(fā)條件時(shí)進(jìn)行寫回。
2.如權(quán)利要求1所述的方法,其特征在于所述索引節(jié)點(diǎn)如果是文件,需要記錄客戶端對(duì)于文件內(nèi)容的緩沖狀態(tài)。
3.如權(quán)利要求1所述的方法,其特征在于所述客戶端如果需要修改所述元數(shù)據(jù)只讀緩存,則先清空本地緩存,然后向元數(shù)據(jù)服務(wù)器發(fā)送修改請(qǐng)求,由元數(shù)據(jù)服務(wù)器完成修改并重新授予客戶端對(duì)于該元數(shù)據(jù)的只讀緩存權(quán)限。
4.如權(quán)利要求3所述的方法,其特征在于所述元數(shù)據(jù)服務(wù)器在處理來(lái)自客戶端的修改請(qǐng)求時(shí),先檢查其他客戶端是否緩存了該元數(shù)據(jù)的相應(yīng)信息,如果有客戶端緩存,則需先請(qǐng)求其他客戶端清空緩存,然后由元數(shù)據(jù)服務(wù)器進(jìn)行修改。
5.如權(quán)利要求1所述的方法,其特征在于所述觸發(fā)條件包括操作系統(tǒng)定時(shí)回寫;以及收到來(lái)自元數(shù)據(jù)服務(wù)的釋放可寫緩存權(quán)限的請(qǐng)求。
6.如權(quán)利要求1所述的方法,其特征在于所述元數(shù)據(jù)被劃分為定長(zhǎng)區(qū)間,按照區(qū)間授予客戶端緩存權(quán)限。
全文摘要
本發(fā)明提供了一種分布式文件系統(tǒng)中多客戶端緩存同步的方法,將元數(shù)據(jù)服務(wù)器作為客戶端緩存信息的控制節(jié)點(diǎn),對(duì)該元數(shù)據(jù)服務(wù)器上維護(hù)的索引節(jié)點(diǎn),記錄各個(gè)客戶端在該元數(shù)據(jù)服務(wù)器上的存儲(chǔ)狀態(tài);將元數(shù)據(jù)信息按照客戶端緩存屬性分為只讀緩存和可寫緩存;對(duì)于元數(shù)據(jù)只讀緩存,當(dāng)客戶端第一次讀取元數(shù)據(jù)時(shí),元數(shù)據(jù)服務(wù)器授予客戶端只讀權(quán)限或者可寫緩存權(quán)限,并且在操作完畢后一直持有該權(quán)限;對(duì)于元數(shù)據(jù)可寫緩存,客戶端的修改暫時(shí)保存到本地,當(dāng)滿足寫回觸發(fā)條件時(shí)進(jìn)行寫回。本發(fā)明該嚴(yán)格保證了不同客戶端之間緩存的一致性,并且其實(shí)現(xiàn)與Lustre和GPFS的分布式鎖相比較而言,開發(fā)成本相對(duì)較小。
文檔編號(hào)G06F17/30GK102541983SQ20111032636
公開日2012年7月4日 申請(qǐng)日期2011年10月25日 優(yōu)先權(quán)日2011年10月25日
發(fā)明者劉新春, 呂明強(qiáng), 常濤, 楊浩, 王勇, 苗艷超, 邵宗有 申請(qǐng)人:無(wú)錫城市云計(jì)算中心有限公司