分布式文件系統(tǒng)、文件訪問方法以及客戶端的制作方法
【專利摘要】本申請?zhí)峁┝朔植际轿募到y(tǒng)、文件訪問方法以及客戶端。其中,該方法包括:訪問主服務(wù)器Master?Server存儲的文件目錄,并從Master?Server獲取與需要訪問的文件相關(guān)聯(lián)的元信息服務(wù)器Meta?Server的路由信息;利用獲取的路由信息訪問Meta?Server,并從該Meta?Server中獲取需要訪問的文件的元信息,利用獲取的元信息從多個節(jié)點服務(wù)器Node?Server上訪問需要訪問的文件。
【專利說明】分布式文件系統(tǒng)、文件訪問方法以及客戶端
【技術(shù)領(lǐng)域】
[0001]本申請涉及數(shù)據(jù)存儲技術(shù),特別涉及分布式文件系統(tǒng)、文件訪問方法以及客戶端?!颈尘凹夹g(shù)】
[0002]目前,在工業(yè)界具有典型代表性的分布式文件系統(tǒng)是Google公司的分布式文件系統(tǒng),簡稱GFS。該GFS主要由一個主服務(wù)器(Master Server)和眾多塊服務(wù)器(ChunkServer)。其中,Master Server主要負(fù)責(zé)存儲文件目錄、以及文件目錄中各文件的元(meta)信息。這里,meta信息主要包括:文件的大小、文件被分成的數(shù)據(jù)塊的數(shù)量、文件被分成的數(shù)據(jù)塊所處的Chunk Server等;Chunk Server主要負(fù)責(zé)存儲文件被分成的數(shù)據(jù)塊。通常,一個文件會按照一定大小劃分為多個數(shù)據(jù)塊,每一個數(shù)據(jù)塊稱為一個Chunk,這些數(shù)據(jù)塊分散存儲在不同的Chunk Server。
[0003]但是,由于GFS只有一個Master Server提供文件目錄和文件meta信息的查詢,這會限制文件的并發(fā)訪問,并且,因單一 Master Server的內(nèi)存限制,也會限制GFS的文件數(shù)目。
【發(fā)明內(nèi)容】
[0004]本申請?zhí)峁┝朔植际轿募到y(tǒng)、文件訪問方法以及客戶端,以提高單一集群的文件數(shù)目以及文件的并發(fā)訪問量。
[0005]本申請?zhí)峁┑募夹g(shù)方案包括:
[0006]—種分布式文件系統(tǒng),包括:
[0007]主服務(wù)器Master Server,用于存儲文件目錄、以及與文件目錄中各文件相關(guān)聯(lián)的Meta Server的路由信息;
[0008]Meta Server,用于存儲相關(guān)聯(lián)的文件的元信息,Meta Server的數(shù)量大于等于I ;
[0009]節(jié)點服務(wù)器Node Server,用于存儲文件被劃分成的數(shù)據(jù)塊和/或數(shù)據(jù)塊的備份,Node Server的數(shù)量大于等于I ;
[0010]所述Master Server在存儲的文件目錄中存在客戶端需要訪問的文件時,從存儲的路由信息中找到與該文件相關(guān)聯(lián)的Meta Server的路由信息并提供給客戶端,以使客戶端利用所述Master Server提供的路由信息訪問Meta Server,所述Meta Server接收到客戶端的訪問時,提供該客戶端需要訪問的文件的元信息給客戶端,以使客戶端利用所述Meta Server提供的元信息從Node Server訪問需要訪問的文件。
[0011 ] 一種文件訪問方法,包括:
[0012]訪問主服務(wù)器Master Server存儲的文件目錄,并從Master Server獲取與需要訪問的文件相關(guān)聯(lián)的元信息服務(wù)器Meta Server的路由信息;
[0013]利用獲取的路由信息訪問Meta Server,并從該Meta Server中獲取需要訪問的文件的元信息;
[0014]利用獲取的元信息從多個節(jié)點服務(wù)器Node Server上訪問需要訪問的文件。[0015]一種應(yīng)用于文件訪問的客戶端,包括:
[0016]第一訪問單元,用于訪問主服務(wù)器Master Server存儲的文件目錄,并從MasterServer獲取與本客戶端需要訪問的文件相關(guān)聯(lián)的元信息服務(wù)器Meta Server的路由信息;
[0017]第二訪問單元,用于利用所述第一訪問單元獲取的路由信息訪問Meta Server,并從該Meta Server中獲取本客戶端需要訪問的文件的元信息;
[0018]第三訪問單元,用于利用獲取的元信息從多個節(jié)點服務(wù)器Node Server上訪問需要訪問的文件。
[0019]由以上技術(shù)方案可以看出,本發(fā)明中,文件目錄和文件元信息分開存儲,S卩,客戶端只在Master Server訪問文件目錄和文件目錄中各文件相關(guān)聯(lián)的Meta Server的路由信息,而去Meta Server訪問具體文件的元信息,這相比單個Master Server既要提供文件目錄訪問,又要提供文件元信息的訪問而言,能提供更高的每秒訪問次數(shù)(QPS),也能提供更高的并發(fā)訪問,同時由于本發(fā)明中Master Server只存儲文件目錄,這能保證本發(fā)明中的分布式文件系統(tǒng)存儲更多的文件數(shù)目。
【專利附圖】
【附圖說明】
[0020]圖1為本發(fā)明實施例提供的分布式文件系統(tǒng)結(jié)構(gòu)圖;
[0021]圖2為本發(fā)明實施例提供的文件訪問方法流程圖;
[0022]圖3為本發(fā)明實施例提供的客戶端結(jié)構(gòu)圖。
【具體實施方式】
[0023]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖和具體實施例對本發(fā)明進(jìn)行詳細(xì)描述。
[0024]本發(fā)明提供的分布式文件系統(tǒng)具有圖1所示的結(jié)構(gòu),其包括:一個主服務(wù)器(Master Server)、至少一個元信息服務(wù)器(Meta Server)、以及至少一個節(jié)點服務(wù)器(NodeServer)o其中,Meta Server、以及Node Server的數(shù)量可根據(jù)集群規(guī)模設(shè)置,本發(fā)明并不具體限定。
[0025]從圖1所示的分布式系統(tǒng)可以看出,本發(fā)明提供的分布式系統(tǒng)采用了三層架構(gòu),其中,最上層為Master Server,次上層為至少一個Meta Server,最下層為至少一個NodeServer,基于此,本發(fā)明提供的分布式系統(tǒng)可稱為三層架構(gòu)的分布式文件系統(tǒng)。
[0026]另外,由于本發(fā)明提供的分布式文件系統(tǒng)中,Meta Server、以及Node Server的數(shù)量可根據(jù)集群規(guī)模設(shè)置,當(dāng)根據(jù)需求需要擴(kuò)展集群規(guī)模時,該Meta Server,以及NodeServer的數(shù)量也需要擴(kuò)展,基于此,還可將本發(fā)明提供的分布式系統(tǒng)稱為擴(kuò)展的分布式文件系統(tǒng),簡稱 XFS (extensible File System)。
[0027]正常情況下,文件元信息的存儲量會比文件目錄的存儲量大很多,為了擴(kuò)展分布式文件系統(tǒng),本發(fā)明將文件目錄和文件元信息分開存儲,具體為:將文件目錄單獨用MasterServer存儲,而將文件元信息用Meta Server存儲,其中,為了將文件目錄中的文件與MetaServer存儲的該文件的元信息關(guān)聯(lián)起來,還需要在Master Server中存儲與文件目錄中各文件相關(guān)聯(lián)的Meta Server的路由信息。
[0028]下面對圖1所示分布式文件系統(tǒng)中各個功能單元進(jìn)行描述:[0029]Master Server,用于存儲文件目錄、以及與文件目錄中各文件相關(guān)聯(lián)的MetaServer的路由信息;
[0030]而每一 Meta Server,用于存儲其相關(guān)聯(lián)的文件的元信息,所述文件的元信息至少包括:文件的長度、文件被劃分成的數(shù)據(jù)塊的數(shù)量、文件被劃分成的各數(shù)據(jù)塊、以及各數(shù)據(jù)塊的備份所處的Node Server ;優(yōu)選地,本發(fā)明中,所述文件的元信息還可進(jìn)一步包括:文件創(chuàng)建時間、文件創(chuàng)建者、文件被劃分成的各個數(shù)據(jù)塊的摘要信息等,本發(fā)明并不具體限定。
[0031]而每一 Node Server,用于存儲數(shù)據(jù)塊和/或數(shù)據(jù)塊的備份。
[0032]其中,每一Node Server可以僅存儲同一文件被劃分成的一個或多個數(shù)據(jù)塊,但禁止同時存儲同一文件被劃分成的某一數(shù)據(jù)塊和該數(shù)據(jù)塊的備份。也就是說,一個數(shù)據(jù)塊不能和其備份同時存儲在同一 Node Server上。
[0033]以圖1所示分布式文件系統(tǒng)為例,則,針對Master Server存儲的文件目錄中的文件(記為文件I ),如果該文件I被劃分成5個數(shù)據(jù)塊,其中,文件I如何被劃分成數(shù)據(jù)塊可依據(jù)現(xiàn)有劃分方式,本發(fā)明不贅述,則為了提高系統(tǒng)的容錯能力,還需要針對這5個數(shù)據(jù)塊進(jìn)行備份,基于上面描述的Node Server存儲數(shù)據(jù)塊及數(shù)據(jù)塊的備份的特點,本發(fā)明中,可將該5個數(shù)據(jù)塊和其備份分散放在不同的Node Server上即可。
[0034]本發(fā)明中,一個數(shù)據(jù)塊可存在多個備份,針對一個數(shù)據(jù)塊的多個備份,為了提高系統(tǒng)容錯能力,優(yōu)選地,本發(fā)明并不將該多個備份同時存放在同一個Node Server,而是分散存放在不同的Node Server上,即同一數(shù)據(jù)塊的所有備份不存放在同一 Node Server。并且,針對同一文件被劃分成的不同數(shù)據(jù)塊的備份,基于容錯能力的考慮,也不存放在同一個Node Server。
[0035]基于上述Master Server^Meta Server以及Node Server存儲的信息,則,當(dāng)客戶端需要訪問一文件時,Master Server在存儲的文件目錄中存在客戶端需要訪問的文件時,從存儲的路由信息中找到與該文件相關(guān)聯(lián)的Meta Server的路由信息并提供給客戶端,以使客戶端利用所述Master Server提供的路由信息訪問Meta Server ;而當(dāng)Meta Server接收到客戶端的訪問時,提供該客戶端需要訪問的文件的元信息給客戶端,以使客戶端利用所述Meta Server提供的元信息訪問需要訪問的文件。
[0036]如此,即可完成客戶端的文件訪問??梢钥闯?,客戶端只在Master Server訪問文件目錄和文件目錄中各文件相關(guān)聯(lián)的Meta Server的路由信息,而去Meta Server訪問具體文件的元信息,這相比單個Master Server既要提供文件目錄訪問,又要提供文件元信息的訪問而言,能提供更高的每秒訪問次數(shù)(QPS),也能提供更高的并發(fā)訪問,同時由于Master Server進(jìn)存儲文件目錄,這能夠擴(kuò)展該Master Server存儲的文件目錄,保證本發(fā)明提供的分布式文件系統(tǒng)存儲更多的文件。
[0037]需要說明的是,本發(fā)明中,由于Master Server僅存儲文件目錄和文件目錄中各文件相關(guān)聯(lián)的Meta Server的路由信息,并不存儲文件的元信息,這相比單個Master Server既要提供文件目錄,又要提供文件元信息而言,不再因單一Master Server的內(nèi)存有限而限制集群的文件數(shù)目,而是可以靈活擴(kuò)展文件數(shù)目,也可相應(yīng)靈活擴(kuò)展Meta Server和NodeServer的數(shù)量。
[0038]以根據(jù)需求需要擴(kuò)展Meta Server的數(shù)量為例,該擴(kuò)展的每一 Meta Server與分布式文件系統(tǒng)原有的Meta Server功能類似,比如,假如當(dāng)前擴(kuò)展的Meta Server記為Serverl 和 Server2,以 Serverl 為例,Server2 原理類似,則,
[0039]該Serverl可以存儲其相關(guān)聯(lián)的文件的元信息,其中,Serverl相關(guān)聯(lián)的文件可為Master Server的文件目錄中已存在的文件,以Serverl相關(guān)聯(lián)的文件為Master Server的文件目錄中已存在的一文件(記為文件I)為例,則Serverl存儲文件I的元信息,其中,Serverl存儲文件I的元信息,能夠為已存儲了文件I元信息的Meta Server提供備份,以提聞系統(tǒng)容錯能力。
[0040]當(dāng)然,作為本發(fā)明實施例的擴(kuò)展,該Serverl相關(guān)聯(lián)的文件也為Master Server的文件目錄中不存在的一文件,而是根據(jù)需求需要擴(kuò)展的文件?;诖?,Serverl就存儲該需要擴(kuò)展的文件的元信息。相應(yīng)地,Master Server還用于在文件目錄中添加與擴(kuò)展的MetaServer比如Serverl相關(guān)聯(lián)的文件,以及接收并存儲該新添加的文件與該擴(kuò)展的MetaServer比如Serverl之間的路由信息。
[0041]至于本發(fā)明中根據(jù)需求擴(kuò)展的每一 Node Server,其與分布式文件系統(tǒng)已有的Node Server功能類似,用于存儲文件被劃分的數(shù)據(jù)塊和/或數(shù)據(jù)塊的備份。其中,擴(kuò)展的每一 Node Server存儲的數(shù)據(jù)塊可為Master Server的文件目錄中已存在的一文件被劃分的數(shù)據(jù)塊或數(shù)據(jù)塊備份,也可為新擴(kuò)展的一文件被劃分的數(shù)據(jù)塊或數(shù)據(jù)塊備份,具體如何存放數(shù)據(jù)塊,可依據(jù)當(dāng)前實際情況設(shè)定,這里不再贅述。
[0042]還有,本發(fā)明中,由于Master Server只存儲文件目錄和與文件目錄中各個文件相關(guān)聯(lián)的Meta Server的路由信息,而該文件目錄和與文件目錄中各個文件相關(guān)聯(lián)的MetaServer的路由信息占用的存儲空間不大,尤其是當(dāng)文件目錄中文件的名稱簡短比如為簡短的數(shù)字或字符編碼時,這能夠保證Master Server存儲更多的文件目錄和與文件相關(guān)聯(lián)的Meta Server的路由信息,擴(kuò)展集群規(guī)模。另外,作為本發(fā)明實施例的一個擴(kuò)展,本發(fā)明中,還可將Master Server上的文件目錄、以及與文件目錄中各文件相關(guān)聯(lián)的Meta Server的路由信息存儲至其他可快速訪問的分布系統(tǒng)上,該分布系統(tǒng)的存儲空間遠(yuǎn)大于MasterServer,這保證更多的文件目錄、以及更多與文件相關(guān)聯(lián)的Meta Server的路由信息存儲,整個集群的并發(fā)訪問能力將進(jìn)一步提升。
[0043]另外,本發(fā)明中,因Meta Server的數(shù)量并非唯一,這樣,若其中一個或多個MetaServer出現(xiàn)故障,不影響其他正常Meta Server,部分文件仍能讀寫,容錯能力更強。
[0044]至此,完成圖1所示分布式文件系統(tǒng)的描述。
[0045]下面對本發(fā)明提供的方法進(jìn)行描述:
[0046]基于圖1所示的分布式文件系統(tǒng),本發(fā)明提供了一種文件訪問方法。參見圖2,圖2為本發(fā)明實施例提供的文件訪問方法流程圖。該圖2所示的流程可由客戶端執(zhí)行,具體如圖2所示,包括以下步驟:
[0047]步驟201,訪問Master Server存儲的文件目錄,并從Master Server獲取與需要訪問的文件相關(guān)聯(lián)的Meta Server的路由信息;
[0048]步驟202,利用獲取的路由信息訪問Meta Server,并從該Meta Server中獲取需要訪問的文件的元信息。
[0049]優(yōu)選地,本發(fā)明中,所述文件的元信息至少包括:文件的長度、文件被劃分成的數(shù)據(jù)塊的數(shù)量、文件被劃分成的各數(shù)據(jù)塊、以及各數(shù)據(jù)塊的備份所處的Node Server0[0050]步驟203,利用獲取的元信息從多個Node Server上訪問需要訪問的文件。
[0051]至此,完成圖2所示方法的描述。從圖2所示流程可以看出,客戶端只在MasterServer訪問文件目錄和文件目錄中各文件相關(guān)聯(lián)的Meta Server的路由信息,而去MetaServer訪問具體文件的元信息,這相比單個Master Server既要提供文件目錄訪問,又要提供文件元信息的訪問而言,能提供更高的每秒訪問次數(shù)(QPS),也能提供更高的并發(fā)訪問。
[0052]優(yōu)選地,本發(fā)明還提供了 一種應(yīng)用于文件訪問的客戶端。
[0053]參見圖3,圖3為本發(fā)明實施例提供的客戶端結(jié)構(gòu)圖。如圖3所示,所述客戶端包括:
[0054]第一訪問單元,用于訪問Master Server存儲的文件目錄,并從Master Server獲取與本客戶端需要訪問的文件相關(guān)聯(lián)的Meta Server的路由信息;
[0055]第二訪問單元,用于利用所述第一訪問單元獲取的路由信息訪問Meta Server,并從該Meta Server中獲取本客戶端需要訪問的文件的元信息。其中,所述文件的元信息至少包括:文件的長度、文件被劃分成的數(shù)據(jù)塊的數(shù)量、文件被劃分成的各數(shù)據(jù)塊、以及各數(shù)據(jù)塊的備份所處的Node Server ;
[0056]第三訪問單元,用于利用獲取的元信息從多個Node Server上訪問需要訪問的文件。
[0057]至此,完成圖3所示的客戶端描述。
[0058]由以上技術(shù)方案可以看出,本發(fā)明中,文件目錄和文件元信息分開存儲,即,客戶端只在Master Server訪問文件目錄和文件目錄中各文件相關(guān)聯(lián)的Meta Server的路由信息,而去Meta Server訪問具體文件的元信息,這相比單個Master Server既要提供文件目錄訪問,又要提供文件元信息的訪問而言,能提供更高的QPS,也能提供更高的并發(fā)訪問。
[0059]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
【權(quán)利要求】
1.一種分布式文件系統(tǒng),其特征在于,所述分布式文件系統(tǒng)包括: 主服務(wù)器Master Server,用于存儲文件目錄、以及與文件目錄中各文件相關(guān)聯(lián)的元信息服務(wù)器Meta Server的路由信息; Meta Server,用于存儲相關(guān)聯(lián)的文件的元信息,Meta Server的數(shù)量大于等于I ; 節(jié)點服務(wù)器Node Server,用于存儲文件被劃分成的數(shù)據(jù)塊和/或數(shù)據(jù)塊的備份,NodeServer的數(shù)量大于等于I ; 所述Master Server在存儲的文件目錄中存在客戶端需要訪問的文件時,從存儲的路由信息中找到與該文件相關(guān)聯(lián)的Meta Server的路由信息并提供給客戶端,以使客戶端利用所述Master Server提供的路由信息訪問Meta Server,所述Meta Server接收到客戶端的訪問時,提供該客戶端需要訪問的文件的元信息給客戶端,以使客戶端利用所述MetaServer提供的元信息從Node Server訪問需要訪問的文件。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述文件的元信息至少包括:文件的長度、文件被劃分成的數(shù)據(jù)塊的數(shù)量、文件被劃分成的各數(shù)據(jù)塊、以及各數(shù)據(jù)塊的備份所處的Node Server。
3.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,每一Node Server禁止同時存儲數(shù)據(jù)塊和該數(shù)據(jù)塊的備份;和/或, 每一 Node Server禁止同時存儲同一數(shù)據(jù)塊的所有備份。
4.根據(jù)權(quán)利要求1至3任一所述的系統(tǒng),其特征在于,所述分布式文件系統(tǒng)進(jìn)一步包括根據(jù)需求擴(kuò)展的Meta Server和/或Node Server ; Master Server還用于在文件目錄中添加與擴(kuò)展的Meta Server相關(guān)聯(lián)的文件,以及接收并存儲該新添加的文件與該擴(kuò)展的Meta Server之間的路由信息; 擴(kuò)展的每一 Meta Server用于存儲相關(guān)聯(lián)的文件的元信息; 擴(kuò)展的每一 Node Server用于根據(jù)需求存放數(shù)據(jù)塊和/或數(shù)據(jù)塊的備份。
5.一種文件訪問方法,其特征在于,該方法包括: 訪問主服務(wù)器Master Server存儲的文件目錄,并從Master Server獲取與需要訪問的文件相關(guān)聯(lián)的元信息服務(wù)器Meta Server的路由信息; 利用獲取的路由信息訪問Meta Server,并從該Meta Server中獲取需要訪問的文件的元信息; 利用獲取的元信息從多個節(jié)點服務(wù)器Node Server上訪問需要訪問的文件。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述文件的元信息至少包括:文件的長度、文件被劃分成的數(shù)據(jù)塊的數(shù)量、文件被劃分成的各數(shù)據(jù)塊、以及各數(shù)據(jù)塊的備份所處的Node Server。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,每一NodeServer禁止同時存儲數(shù)據(jù)塊和該數(shù)據(jù)塊的備份;和/或, 每一 Node Server禁止同時存儲同一數(shù)據(jù)塊的所有備份。
8.一種應(yīng)用于文件訪問的客戶端,其特征在于,所述客戶端包括: 第一訪問單元,用于訪問主服務(wù)器Master Server存儲的文件目錄,并從MasterServer獲取與本客戶端需要訪問的文件相關(guān)聯(lián)的元信息服務(wù)器Meta Server的路由信息; 第二訪問單元,用于利用所述第一訪問單元獲取的路由信息訪問Meta Server,并從該Meta Server中獲取本客戶端需要訪問的文件的元信息; 第三訪問單元,用于利用獲取的元信息從多個節(jié)點服務(wù)器Node Server上訪問需要訪問的文件。
9.根據(jù)權(quán)利要求8所述的客戶端,其特征在于,所述文件的元信息至少包括:文件的長度、文件被劃分成的數(shù)據(jù)塊的數(shù)量、文 件被劃分成的各數(shù)據(jù)塊、以及各數(shù)據(jù)塊的備份所處的Node Server。
【文檔編號】H04L29/08GK103581229SQ201210261331
【公開日】2014年2月12日 申請日期:2012年7月26日 優(yōu)先權(quán)日:2012年7月26日
【發(fā)明者】伍海君, 朱會燦, 鄧大付, 李銳, 鄒永強, 董乘宇, 闕太富, 王磊, 楊紹鵬, 張書鑫, 趙大勇, 劉暢, 陳曉東, 張銀鋒 申請人:騰訊科技(深圳)有限公司