本發(fā)明涉及信息技術(shù)領(lǐng)域,特別涉及一種基于集群文件系統(tǒng)的文件處理方法和裝置。
背景技術(shù):
隨著信息技術(shù)的發(fā)展,人們需要處理的數(shù)據(jù)數(shù)量也越來越多,傳統(tǒng)的數(shù)據(jù)存儲方式已經(jīng)無法滿足使用者的需求?,F(xiàn)在,集群文件存儲逐漸取代原有存儲方式,被廣泛應(yīng)用在各種大型網(wǎng)絡(luò)應(yīng)用環(huán)境,這種存儲方式用多個節(jié)點來代替一個節(jié)點完成任務(wù),提高處理能力。同時在集群文件系統(tǒng)中,即使某個節(jié)點發(fā)生故障,不能再繼續(xù)參與計算和存儲,那么集群中的其它節(jié)點也可以立即接替故障節(jié)點正常工作。但是現(xiàn)有的集群文件系統(tǒng)的文件處理速度及對存儲空間的利用仍有待提高。
技術(shù)實現(xiàn)要素:
本發(fā)明的主要目的是提供一種基于集群文件系統(tǒng)的文件處理方法和裝置,旨在提高集群文件系統(tǒng)對文件的處理速度及對存儲空間的利用率。
為實現(xiàn)上述目的,本發(fā)明提出一種基于集群文件系統(tǒng)的文件處理方法,所述集群文件系統(tǒng)包括元數(shù)據(jù)服務(wù)器和至少一個文件服務(wù)器,每個所述文件服務(wù)器中運行至少一個文件服務(wù)進程,每個文件服務(wù)進程用于管理一個zfs邏輯卷,所述文件處理方法包括步驟:
獲取當前每一待存儲文件的尺寸;
依次判斷每一待存儲文件的尺寸是否不小于預(yù)設(shè)值;
若是,則將該待存儲文件按預(yù)設(shè)值分割為數(shù)據(jù)塊,
若否,則將多個尺寸小于所述預(yù)設(shè)值的待存儲文件打包并按預(yù)設(shè)值分割為數(shù)據(jù)塊;
存儲所述數(shù)據(jù)塊。
優(yōu)選的,所述存儲所述數(shù)據(jù)塊具體包括步驟:
為每個所述數(shù)據(jù)塊分配唯一的數(shù)據(jù)塊編號;
將所述數(shù)據(jù)塊主本保存至當前剩余容量最大的文件服務(wù)器;
返回所述數(shù)據(jù)塊所在的文件服務(wù)器的ip地址、端口信息、該數(shù)據(jù)塊的數(shù)據(jù)塊編號和該數(shù)據(jù)塊中所包含文件的文件編號至所述元數(shù)據(jù)服務(wù)器。
優(yōu)選的,還包括步驟:
定期獲取每一文件服務(wù)器的工作狀態(tài);
當所述文件服務(wù)器宕機時,依據(jù)該文件服務(wù)器中的每一數(shù)據(jù)塊的元數(shù)據(jù)信息,在其他文件服務(wù)器中創(chuàng)建該宕機文件服務(wù)器中每一數(shù)據(jù)塊的副本。
優(yōu)選的,還包括步驟:
獲取文件訪問請求;
依據(jù)所述文件訪問請求調(diào)用待讀取文件的元數(shù)據(jù)信息;
依據(jù)所述待讀取文件的元數(shù)據(jù)調(diào)用所述待讀取文件。
優(yōu)選的,所述集群文件系統(tǒng)運行于freebsd系統(tǒng)中。
此外,為實現(xiàn)上述目的,本發(fā)明還提出一種基于集群文件系統(tǒng)的文件處理裝置,所述集群文件系統(tǒng)包括元數(shù)據(jù)服務(wù)器和至少一個文件服務(wù)器,每個所述文件服務(wù)器中運行至少一個文件服務(wù)進程,每個文件服務(wù)進程用于管理一個zfs邏輯卷,所述文件處理方法包括步驟:
第一獲取模塊,用于獲取當前每一待存儲文件的尺寸;
判斷模塊,用于依次判斷每一待存儲文件的尺寸是否不小于預(yù)設(shè)值;
第一分割模塊,用于在所述判斷模塊的判斷結(jié)果為“是”時,將該待存儲文件按預(yù)設(shè)值分割為數(shù)據(jù)塊,
第二分割模塊,用于在所述判斷模塊的判斷結(jié)果為“否”時,將多個尺寸小于所述預(yù)設(shè)值的待存儲文件打包并按預(yù)設(shè)值分割為數(shù)據(jù)塊;
存儲模塊,用于存儲所述數(shù)據(jù)塊。
優(yōu)選的,所述存儲模塊具體包括:
編號單元,用于為每個所述數(shù)據(jù)塊分配唯一的數(shù)據(jù)塊編號;
保存單元,用于將所述數(shù)據(jù)塊主本保存至當前剩余容量最大的文件服務(wù)器;
返回單元,用于返回所述數(shù)據(jù)塊所在的文件服務(wù)器的ip地址、端口信息、該數(shù)據(jù)塊的數(shù)據(jù)塊編號和該數(shù)據(jù)塊中所包含文件的文件編號至所述元數(shù)據(jù)服務(wù)器。
優(yōu)選的,還包括:
第二獲取模塊,用于定期獲取每一文件服務(wù)器的工作狀態(tài);
創(chuàng)建模塊,用于在所述文件服務(wù)器宕機時,依據(jù)該文件服務(wù)器中的每一數(shù)據(jù)塊的元數(shù)據(jù)信息,在其他文件服務(wù)器中創(chuàng)建該宕機文件服務(wù)器中每一數(shù)據(jù)塊的副本。
優(yōu)選的,還包括:
第三獲取模塊,用于獲取文件訪問請求;
第一調(diào)用模塊,用于依據(jù)所述文件訪問請求調(diào)用待讀取文件的元數(shù)據(jù)信息;
第二調(diào)用模塊,用于依據(jù)所述待讀取文件的元數(shù)據(jù)調(diào)用所述待讀取文件。
優(yōu)選的,所述集群文件系統(tǒng)運行于freebsd系統(tǒng)中。
本發(fā)明的技術(shù)方案中,集群文件系統(tǒng)包括元數(shù)據(jù)服務(wù)器和至少一個文件服務(wù)器,所述文件處理方法包括步驟:獲取當前每一待存儲文件的尺寸;依次判斷每一待存儲文件的尺寸是否不小于預(yù)設(shè)值;若是,則將該待存儲文件按預(yù)設(shè)值分割為數(shù)據(jù)塊,若否,則將多個尺寸小于所述預(yù)設(shè)值的待存儲文件打包并按預(yù)設(shè)值分割為數(shù)據(jù)塊;存儲所述數(shù)據(jù)塊。本發(fā)明的技術(shù)方案通過將大文件按照預(yù)設(shè)尺寸劃分為數(shù)據(jù)塊,使得存儲于文件服務(wù)器中的文件數(shù)據(jù)塊尺寸全部相同,提高了對文件服務(wù)器的利用率和文件的存儲讀取速度。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖示出的結(jié)構(gòu)獲得其他的附圖。
圖1為本發(fā)明集群文件系統(tǒng)實施例的結(jié)構(gòu)示意圖;
圖2為本發(fā)明基于集群文件系統(tǒng)的文件處理方法第一實施例的流程圖;
圖3為本發(fā)明基于集群文件系統(tǒng)的文件處理方法第二實施例流程圖;
圖4為本發(fā)明基于集群文件系統(tǒng)的文件處理裝置第一實施例的功能模塊圖;
圖5為本發(fā)明基于集群文件系統(tǒng)的文件處理裝置第二實施例的模塊結(jié)構(gòu)圖。
本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結(jié)合實施例,參照附圖做進一步說明。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明的一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明提出一種基于集群文件系統(tǒng)的文件處理方法。
如圖1所示,在一實施例中,所述集群文件系統(tǒng)包括元數(shù)據(jù)服務(wù)器10和至少一個文件服務(wù)器20,每個所述文件服務(wù)器20中運行至少一個文件服務(wù)進程21,每個文件服務(wù)進程21用于管理一個zfs(zettabytefilesystem,字節(jié)文件系統(tǒng),也叫dynamicfilesystem,動態(tài)文件系統(tǒng))邏輯卷。元數(shù)據(jù)服務(wù)器10中的所有元數(shù)據(jù)都保存在所述元數(shù)據(jù)服務(wù)器10的內(nèi)存中,而不進行持久化存儲。每次所述元數(shù)據(jù)啟動后,會將保存在每一文件服務(wù)進程21中的元數(shù)據(jù)信息讀取到元數(shù)據(jù)服務(wù)器10的內(nèi)存中,當元數(shù)據(jù)信息發(fā)生變化時,先寫入內(nèi)存然后寫入元數(shù)據(jù)服務(wù)器10的本地的日志,最后再寫入文件服務(wù)器20中相應(yīng)的文件服務(wù)進程21。
如圖2所示,在一實施例中所述文件處理方法包括步驟:
s100、獲取當前每一待存儲文件的尺寸。
本實施例的技術(shù)方案是基于集群文件系統(tǒng)實現(xiàn)的,集群文件系統(tǒng)針對的是大型網(wǎng)絡(luò)環(huán)境,因此其數(shù)據(jù)吞吐量始終處于一個較高的水平,本實施例中,在接收到文件的存儲請求后,先獲取每一個待存儲文件的尺寸。
s200、依次判斷每一待存儲文件的尺寸是否不小于預(yù)設(shè)值,若是,則執(zhí)行s300步驟,若否,則執(zhí)行s400步驟。
應(yīng)當理解的是,如果在文件存儲過程中,每次存儲的文件尺寸過大,則該存儲進程會耗費較長的時間,一旦中斷,則整個文件需要重新存儲,同時會積壓過多的待處理文檔,如果每次存儲的文件過小,則需要多個存儲進程,會耗費較多的系統(tǒng)資源,因此應(yīng)當根據(jù)具體使用情況具體調(diào)節(jié)該預(yù)設(shè)值的大小,該預(yù)設(shè)值可以是4mb、8mb、16mb等任意大小。本實施例中,以該預(yù)設(shè)值為128mb為例。
s300、將該待存儲文件按預(yù)設(shè)值分割為數(shù)據(jù)塊并重新執(zhí)行s200步驟。
本實施例中,當待存儲文件的大于或等于128mb的時候,則從待存儲文件中分割出若干個大小為128mb的數(shù)據(jù)塊,如果待存儲文件無法被恰好分割完成,則剩余部分的屬性仍待存儲文件。
s400、將多個尺寸小于所述預(yù)設(shè)值的待存儲文件打包并按預(yù)設(shè)值分割為數(shù)據(jù)塊并執(zhí)行s500步驟。
當多個待存儲文件的大小均小于128mb的時候,本實施例中將所述多個尺寸小于128mb的待存儲文件打包合并,并從打包合并之后的文件中繼續(xù)分割大小為128mb的數(shù)據(jù)塊,而劃分之后仍不足128mb的部分,則與其他不足128mb的文件繼續(xù)打包分割。
s500、存儲所述數(shù)據(jù)塊。
在將文件分割后,獲得的多個大小為128mb的數(shù)據(jù)塊被保存至文件服務(wù)器20,實現(xiàn)了對待存儲文件的保存。
本實施例的技術(shù)方案通過將待存儲文件全部劃分為預(yù)設(shè)大小的數(shù)據(jù)塊,使得文件服務(wù)器20始終處理和存儲相同大小的數(shù)據(jù)塊,防止產(chǎn)生內(nèi)存和硬盤碎片,同時,也使系統(tǒng)負載處于一個相對平穩(wěn)的水平,減少了波動,有助于提高系統(tǒng)的穩(wěn)定性。
請參閱圖3,進一步的,在本發(fā)明方法的又一實施例中,所述存儲所述數(shù)據(jù)塊具體包括步驟:
s501、為每個所述數(shù)據(jù)塊分配唯一的數(shù)據(jù)塊編號;
s502、將所述數(shù)據(jù)塊主本保存至當前剩余容量最大的文件服務(wù)器20;
s503、返回所述數(shù)據(jù)塊所在的文件服務(wù)器20的ip地址、端口信息、該數(shù)據(jù)塊的數(shù)據(jù)塊編號和該數(shù)據(jù)塊中所包含文件的文件編號至所述元數(shù)據(jù)服務(wù)器10。
本實施例的技術(shù)方案中,每一文件服務(wù)器20及設(shè)置于每一文件服務(wù)器20中的文件服務(wù)進程21在連接至元數(shù)據(jù)服務(wù)器10時,均會未其中的數(shù)據(jù)塊分配其唯一對應(yīng)的數(shù)據(jù)塊編號,記為blockid。本實施例中,每一文件服務(wù)進程21中事先存儲一定數(shù)量的數(shù)據(jù)塊序列號,例如1萬個,沒當有新的數(shù)據(jù)塊被寫入該文件服務(wù)器20中,則為其分配一個數(shù)據(jù)塊編號,當數(shù)據(jù)塊編號的數(shù)量不足時,例如小于2000,則重新想元數(shù)據(jù)服務(wù)器10申請新的數(shù)據(jù)塊編號。而每一數(shù)據(jù)塊中的文件也有其對應(yīng)的隨機編號,在全局系統(tǒng)中,以blockid+隨機編號作為每一文件的文件編號。通過blockid可以確認該文件所在的數(shù)據(jù)塊,并進一步通過隨機編號確認該文件。如果元數(shù)據(jù)中記錄了某一初始文件被分割后保存在若干個數(shù)據(jù)塊中,則可以通過該初始文件的每一部分的文件編號訪問相應(yīng)的數(shù)據(jù)塊中的文件,并合并獲得原初始文件。
優(yōu)選的,還包括步驟:
s600、定期獲取每一文件服務(wù)器20的工作狀態(tài);
s700、當所述文件服務(wù)器20宕機時,依據(jù)該文件服務(wù)器20中的每一數(shù)據(jù)塊的元數(shù)據(jù)信息,在其他文件服務(wù)器20中創(chuàng)建該宕機文件服務(wù)器20中每一數(shù)據(jù)塊的副本。
為了確保數(shù)據(jù)安全,每一文件都應(yīng)當在其他文件創(chuàng)建相應(yīng)的文件副本。本實施例中,文件副本的數(shù)量優(yōu)選為三個。在所述元數(shù)據(jù)服務(wù)器10啟動時會發(fā)出檢查請求,當文件服務(wù)器20收到檢查請求后,會檢查每個數(shù)據(jù)塊的副本數(shù)是否滿足配置的副本要求,如果不滿足則在其他文件服務(wù)器20中創(chuàng)建該宕機文件服務(wù)器20中每一數(shù)據(jù)塊的副本,提高了數(shù)據(jù)的安全性,防止丟失。
為了進一步保證系統(tǒng)運行的穩(wěn)定,本實施例中進一步應(yīng)當設(shè)置多個元數(shù)據(jù)服務(wù)器10,其中一個元數(shù)據(jù)服務(wù)器10擁有管理員權(quán)限,其他元數(shù)據(jù)服務(wù)器10作為備份,如果具有管理員權(quán)限的元數(shù)據(jù)服務(wù)器10宕機或出現(xiàn)其他故障,則由其他元數(shù)據(jù)服務(wù)器10投票選出新的元數(shù)據(jù)服務(wù)器10接管管理員權(quán)限。
優(yōu)選的,還包括步驟:
s800、獲取文件訪問請求;
s900、依據(jù)所述文件訪問請求調(diào)用待讀取文件的元數(shù)據(jù)信息;
s1000、依據(jù)所述待讀取文件的元數(shù)據(jù)調(diào)用所述待讀取文件。
當客戶端讀取文件時,元數(shù)據(jù)服務(wù)器10首先根據(jù)文件名解析出文件所在的塊信息,并將該數(shù)據(jù)塊的主本、副本所有文件服務(wù)器20列表返回給客戶端,客戶端根據(jù)該信息優(yōu)先從數(shù)據(jù)塊主本所在文件服務(wù)器20中讀取該文件,如果讀取失敗則從數(shù)據(jù)塊副本所在的文件服務(wù)器20中中讀取。確保了文件不會丟失。
優(yōu)選的,所述集群文件系統(tǒng)運行于freebsd(免費bsd,bsd為berkeleysoftwaredistribution的縮寫,伯克利軟件套件,一種操作系統(tǒng)的名稱)系統(tǒng)中。
freebsd是一種類unix(尤尼斯,一種操作系統(tǒng)的名稱)操作系統(tǒng),是由經(jīng)過bsd、386bsd和4.4bsd發(fā)展而來的unix的一個重要分支,可以為不同架構(gòu)的計算機系統(tǒng)提供了不同程度的支持。其在內(nèi)部結(jié)構(gòu)和系統(tǒng)api上和unix有很大的兼容性,其網(wǎng)絡(luò)出了性能也高于unix和windows(視窗,一種操作系統(tǒng)的名稱)操作系統(tǒng),更適合運行集群文件系統(tǒng)。經(jīng)過測試,本發(fā)明實施例的技術(shù)方案在基于freebsd的系統(tǒng)中的運行速度和效率相對于其他系統(tǒng)提高了5%以上。
此外,為實現(xiàn)上述目的,本發(fā)明還提出一種基于集群文件系統(tǒng)的文件處理裝置。
如圖1所示,在一實施例中,所述集群文件系統(tǒng)包括元數(shù)據(jù)服務(wù)器10和至少一個文件服務(wù)器20,每個所述文件服務(wù)器20中運行至少一個文件服務(wù)進程21,每個文件服務(wù)進程21用于管理一個zfs邏輯卷。元數(shù)據(jù)服務(wù)器10中的所有元數(shù)據(jù)都保存在所述元數(shù)據(jù)服務(wù)器10的內(nèi)存中,而不進行持久化存儲。每次所述元數(shù)據(jù)啟動后,會將保存在每一文件服務(wù)進程21中的元數(shù)據(jù)信息讀取到元數(shù)據(jù)服務(wù)器10的內(nèi)存中,當元數(shù)據(jù)信息發(fā)生變化時,先寫入內(nèi)存然后寫入元數(shù)據(jù)服務(wù)器10的本地的日志,最后再寫入文件服務(wù)器20中相應(yīng)的文件服務(wù)進程21。
如圖4所示,在一實施例中,所述文件處理方法包括步驟:
第一獲取模塊100,用于獲取當前每一待存儲文件的尺寸。
本實施例的技術(shù)方案是基于集群文件系統(tǒng)實現(xiàn)的,集群文件系統(tǒng)針對的是大型網(wǎng)絡(luò)環(huán)境,因此其數(shù)據(jù)吞吐量始終處于一個較高的水平,本實施例中,在接收到文件的存儲請求后,先獲取每一個待存儲文件的尺寸。
判斷模塊200,用于依次判斷每一待存儲文件的尺寸是否不小于預(yù)設(shè)值。
應(yīng)當理解的是,如果在文件存儲過程中,每次存儲的文件尺寸過大,則該存儲進程會耗費較長的時間,一旦中斷,則整個文件需要重新存儲,同時會積壓過多的待處理文檔,如果每次存儲的文件過小,則需要多個存儲進程,會耗費較多的系統(tǒng)資源,因此應(yīng)當根據(jù)具體使用情況具體調(diào)節(jié)該預(yù)設(shè)值的大小,該預(yù)設(shè)值可以是4mb、8mb、16mb等任意大小。本實施例中,以該預(yù)設(shè)值為128mb為例。
第一分割模塊300,用于在所述判斷模塊200的判斷結(jié)果為“是”時,將該待存儲文件按預(yù)設(shè)值分割為數(shù)據(jù)塊。
本實施例中,當待存儲文件的大于或等于128mb的時候,則從待存儲文件中分割出若干個大小為128mb的數(shù)據(jù)塊,如果待存儲文件無法被恰好分割完成,則剩余部分的屬性仍待存儲文件。
第二分割模塊400,用于在所述判斷模塊200的判斷結(jié)果為“否”時,將多個尺寸小于所述預(yù)設(shè)值的待存儲文件打包并按預(yù)設(shè)值分割為數(shù)據(jù)塊。
當多個待存儲文件的大小均小于128mb的時候,本實施例中將所述多個尺寸小于128mb的待存儲文件打包合并,并從打包合并之后的文件中繼續(xù)分割大小為128mb的數(shù)據(jù)塊,而劃分之后仍不足128mb的部分,則與其他不足128mb的文件繼續(xù)打包分割。
存儲模塊500,用于存儲所述數(shù)據(jù)塊。
在將文件分割后,獲得的多個大小為128mb的數(shù)據(jù)塊被保存至文件服務(wù)器20,實現(xiàn)了對待存儲文件的保存。
本實施例的技術(shù)方案通過將待存儲文件全部劃分為預(yù)設(shè)大小的數(shù)據(jù)塊,使得文件服務(wù)器20始終處理和存儲相同大小的數(shù)據(jù)塊,防止產(chǎn)生內(nèi)存和硬盤碎片,同時,也使系統(tǒng)負載處于一個相對平穩(wěn)的水平,減少了波動,有助于提高系統(tǒng)的穩(wěn)定性。
請進一步參閱圖5,在一實施例中,優(yōu)選的,所述存儲模塊500具體包括:
編號單元501,用于為每個所述數(shù)據(jù)塊分配唯一的數(shù)據(jù)塊編號;
保存單元502,用于將所述數(shù)據(jù)塊主本保存至當前剩余容量最大的文件服務(wù)器20;
返回單元503,返回所述數(shù)據(jù)塊所在的文件服務(wù)器20的ip地址、端口信息、該數(shù)據(jù)塊的數(shù)據(jù)塊編號和該數(shù)據(jù)塊中所包含文件的文件編號至所述元數(shù)據(jù)服務(wù)器10。
本實施例的技術(shù)方案中,每一文件服務(wù)器20及設(shè)置于每一文件服務(wù)器20中的文件服務(wù)進程21在連接至元數(shù)據(jù)服務(wù)器10時,均會未其中的數(shù)據(jù)塊分配其唯一對應(yīng)的數(shù)據(jù)塊編號,記為blockid。本實施例中,每一文件服務(wù)進程21中事先存儲一定數(shù)量的數(shù)據(jù)塊序列號,例如1萬個,沒當有新的數(shù)據(jù)塊被寫入該文件服務(wù)器20中,則為其分配一個數(shù)據(jù)塊編號,當數(shù)據(jù)塊編號的數(shù)量不足時,例如小于2000,則重新想元數(shù)據(jù)服務(wù)器10申請新的數(shù)據(jù)塊編號。而每一數(shù)據(jù)塊中的文件也有其對應(yīng)的隨機編號,在全局系統(tǒng)中,以blockid+隨機編號作為每一文件的文件編號。通過blockid可以確認該文件所在的數(shù)據(jù)塊,并進一步通過隨機編號確認該文件。如果元數(shù)據(jù)中記錄了某一初始文件被分割后保存在若干個數(shù)據(jù)塊中,則可以通過該初始文件的每一部分的文件編號訪問相應(yīng)的數(shù)據(jù)塊中的文件,并合并獲得原初始文件。
優(yōu)選的,還包括:
第二獲取模塊,用于定期獲取每一文件服務(wù)器20的工作狀態(tài);
創(chuàng)建模塊,用于在所述文件服務(wù)器20宕機時,依據(jù)該文件服務(wù)器20中的每一數(shù)據(jù)塊的元數(shù)據(jù)信息,在其他文件服務(wù)器20中創(chuàng)建該宕機文件服務(wù)器20中每一數(shù)據(jù)塊的副本。
為了確保數(shù)據(jù)安全,每一文件都應(yīng)當在其他文件創(chuàng)建相應(yīng)的文件副本。本實施例中,文件副本的數(shù)量優(yōu)選為三個。在所述元數(shù)據(jù)服務(wù)器10啟動時會發(fā)出檢查請求,當文件服務(wù)器20收到檢查請求后,會檢查每個數(shù)據(jù)塊的副本數(shù)是否滿足配置的副本要求,如果不滿足則在其他文件服務(wù)器20中創(chuàng)建該宕機文件服務(wù)器20中每一數(shù)據(jù)塊的副本,提高了數(shù)據(jù)的安全性,防止丟失。
為了進一步保證系統(tǒng)運行的穩(wěn)定,本實施例中進一步應(yīng)當設(shè)置多個元數(shù)據(jù)服務(wù)器10,其中一個元數(shù)據(jù)服務(wù)器10擁有管理員權(quán)限,其他元數(shù)據(jù)服務(wù)器10作為備份,如果具有管理員權(quán)限的元數(shù)據(jù)服務(wù)器10宕機或出現(xiàn)其他故障,則由其他元數(shù)據(jù)服務(wù)器10投票選出新的元數(shù)據(jù)服務(wù)器10接管管理員權(quán)限。
優(yōu)選的,還包括:
第三獲取模塊,用于獲取文件訪問請求;
第一調(diào)用模塊,用于依據(jù)所述文件訪問請求調(diào)用待讀取文件的元數(shù)據(jù)信息;
第二調(diào)用模塊,用于依據(jù)所述待讀取文件的元數(shù)據(jù)調(diào)用所述待讀取文件。
當客戶端讀取文件時,元數(shù)據(jù)服務(wù)器10首先根據(jù)文件名解析出文件所在的塊信息,并將該數(shù)據(jù)塊的主本、副本所有文件服務(wù)器20列表返回給客戶端,客戶端根據(jù)該信息優(yōu)先從數(shù)據(jù)塊主本所在文件服務(wù)器20中讀取該文件,如果讀取失敗則從數(shù)據(jù)塊副本所在的文件服務(wù)器20中中讀取。確保了文件不會丟失。
優(yōu)選的,所述集群文件系統(tǒng)運行于freebsd系統(tǒng)中。
freebsd是一種類unix操作系統(tǒng),是由經(jīng)過bsd、386bsd和4.4bsd發(fā)展而來的unix的一個重要分支,可以為不同架構(gòu)的計算機系統(tǒng)提供了不同程度的支持。其在內(nèi)部結(jié)構(gòu)和系統(tǒng)api上和unix有很大的兼容性,其網(wǎng)絡(luò)出了性能也高于unix和windows(操作系統(tǒng),更適合運行集群文件系統(tǒng)。經(jīng)過測試,本發(fā)明實施例的技術(shù)方案在基于freebsd的系統(tǒng)中的運行速度和效率相對于其他系統(tǒng)提高了5%以上。
以上僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。