專利名稱:一種海量文件的存儲(chǔ)方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于數(shù)據(jù)處理領(lǐng)域,尤其涉及一種海量文件的存儲(chǔ)方法及系統(tǒng)。
背景技術(shù):
文件系統(tǒng)(File System,F(xiàn)S)是操作系統(tǒng)(Operating System,OS)的一部分,用于管理各種系統(tǒng)文件和用戶文件。隨著分布式技術(shù)的發(fā)展,以及海量數(shù)據(jù)存儲(chǔ)的需求(例如Web搜索引擎、海量用戶資料存儲(chǔ)、大型Web網(wǎng)站等),產(chǎn)生了分布式文件系統(tǒng)。
分布式文件系統(tǒng)將文件存儲(chǔ)在一個(gè)或多個(gè)文件服務(wù)器上,一般不在客戶機(jī)上冗余存儲(chǔ),客戶機(jī)可以像訪問(wèn)本地普通文件一樣訪問(wèn),且文件可被大量客戶機(jī)并發(fā)使用。簡(jiǎn)言之,分布式文件系統(tǒng)是物理上分布、邏輯上集中統(tǒng)一的一種文件管理系統(tǒng)。分布式文件系統(tǒng)的優(yōu)點(diǎn)在于對(duì)于海量數(shù)據(jù)存儲(chǔ),只需要在文件服務(wù)器上提供海量的存儲(chǔ)空間即可,每個(gè)客戶機(jī)不再需要大量的磁盤空間;分布式文件系統(tǒng)可以很容易實(shí)現(xiàn)文檔的共享操作,對(duì)系統(tǒng)的管理相對(duì)簡(jiǎn)單。評(píng)估一個(gè)分布式文件系統(tǒng)的設(shè)計(jì)指標(biāo)主要包括以下六個(gè)方面各種情景下,文件讀寫的吞吐量以及延遲;磁盤存儲(chǔ)利用率;可靠性以及可用性指標(biāo);數(shù)據(jù)一致性指標(biāo);安全性指標(biāo);可移植性、可維護(hù)性。
現(xiàn)有的分布式文件系統(tǒng)中,典型的有Google文件系統(tǒng)(Google File System,GFS)。GFS中包括一臺(tái)主控機(jī)(Master),多個(gè)數(shù)據(jù)塊服務(wù)器(Chunk Server)。主控機(jī)中存儲(chǔ)了三種重要的元數(shù)據(jù)文件和數(shù)據(jù)塊的命名空間、文件到數(shù)據(jù)塊的映射表、數(shù)據(jù)塊及其備份的位置信息。為了提高文件存儲(chǔ)的可靠性,GFS一般將同一份數(shù)據(jù)存儲(chǔ)在三個(gè)不同的主機(jī)上,因此每一個(gè)數(shù)據(jù)塊就有兩個(gè)分布在其他主機(jī)上的備份。關(guān)于GFS的詳細(xì)內(nèi)容,可參考以下文獻(xiàn)余一嬌所著的《Google LinuxCluster的系統(tǒng)結(jié)構(gòu)分析》;Chris Mellor所著的《Google’s Storage Strategy》,可在http://www.techworld.com搜索查閱;以及《Google′s cluster》,可在http://www.beowulf.org搜索查閱。
現(xiàn)有技術(shù)的文件系統(tǒng)能夠?qū)崿F(xiàn)海量文件存儲(chǔ),但是搜索引擎對(duì)文件系統(tǒng)中的文件進(jìn)行讀寫等各項(xiàng)操作時(shí),其執(zhí)行效率仍有待改進(jìn)。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種海量文件存儲(chǔ)方法,旨在解決搜索引擎對(duì)文件系統(tǒng)中的海量文件進(jìn)行讀寫等操作時(shí)執(zhí)行效率低的問(wèn)題。
本發(fā)明的另一目的在于提供一種海量文件存儲(chǔ)系統(tǒng),以更好地解決上述問(wèn)題。
為了實(shí)現(xiàn)發(fā)明目的,所述方法包括以下步驟將所述海量文件的文件相關(guān)控制信息組織成以文件對(duì)象為存儲(chǔ)單元連接起來(lái)的第一層鏈表;將所述海量文件的數(shù)據(jù)塊相關(guān)控制信息組織成以數(shù)據(jù)塊對(duì)象為存儲(chǔ)單元連接起來(lái)的第二層鏈表;將所述海量文件的文件服務(wù)器相關(guān)控制信息組織成以文件服務(wù)器對(duì)象為存儲(chǔ)單元連接起來(lái)的第三層鏈表;所述第一層鏈表、第二層鏈表和第三層鏈表以層遞的形式關(guān)聯(lián)為三層鏈表式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),與所述海量文件的數(shù)據(jù)塊形成映射關(guān)系。
所述三層鏈表式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)內(nèi)部采用數(shù)組下標(biāo)進(jìn)行連接。
所述方法在所有步驟之前還包括以下步驟初始化所述三層鏈表式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)中的空閑鏈,以及第一層鏈表的根節(jié)點(diǎn)。
為了更好地實(shí)現(xiàn)發(fā)明目的,所述系統(tǒng)包括所述海量文件的存儲(chǔ)系統(tǒng),包括控制服務(wù)器子系統(tǒng)、文件服務(wù)器子系統(tǒng)和客戶機(jī)子系統(tǒng),所述控制服務(wù)器子系統(tǒng)中包括控制服務(wù)器,所述文件服務(wù)器子系統(tǒng)中包括文件服務(wù)器,用于存儲(chǔ)和維護(hù)所述海量文件的數(shù)據(jù)塊,所述客戶機(jī)子系統(tǒng)中包括客戶機(jī),所述控制服務(wù)器接收所述文件服務(wù)器上報(bào)的狀態(tài)信息,并根據(jù)所述客戶機(jī)上應(yīng)用程序執(zhí)行的操作對(duì)所述文件服務(wù)器發(fā)送控制指令,其特征在于,所述控制服務(wù)器包括數(shù)據(jù)管理模塊,用于存儲(chǔ)和維護(hù)所述海量文件的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu);所述海量文件的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)為三層鏈表式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),包括文件對(duì)象鏈表、數(shù)據(jù)塊對(duì)象鏈表和文件服務(wù)器對(duì)象鏈表,與所述文件服務(wù)器中存儲(chǔ)的數(shù)據(jù)塊形成映射關(guān)系。
所述系統(tǒng)進(jìn)一步包括公共平臺(tái),用于實(shí)現(xiàn)以下功能線程和線程池管理、互聯(lián)網(wǎng)進(jìn)程連接管理、定時(shí)器管理、加鎖解鎖管理、緩存管理;所述公共平臺(tái)存在于控制服務(wù)器、文件服務(wù)器和客戶機(jī)的任何一者或多者之中或獨(dú)立存在。
所述控制服務(wù)器進(jìn)一步包括日志管理模塊、備份管理模塊;所述日志管理模塊用于進(jìn)行日志管理,其接收所述數(shù)據(jù)管理模塊和備份管理模塊上報(bào)的消息,并上報(bào)消息給公共平臺(tái);所述備份管理模塊用于進(jìn)行主備控制服務(wù)器之間的心跳維護(hù)和故障恢復(fù),其上報(bào)消息給日志管理模塊及公共平臺(tái)。
所述控制服務(wù)器為雙機(jī)備份,包括主用控制服務(wù)器和備用控制服務(wù)器。
所述文件服務(wù)器進(jìn)一步包括文件服務(wù)器數(shù)據(jù)塊管理模塊、文件服務(wù)器心跳管理模塊;所述文件服務(wù)器數(shù)據(jù)塊管理模塊用于對(duì)文件服務(wù)器上的數(shù)據(jù)進(jìn)行存儲(chǔ)和維護(hù),其接收所述文件服務(wù)器心跳管理模塊上報(bào)的消息,并上報(bào)消息給公共平臺(tái);所述文件服務(wù)器心跳管理模塊用于文件服務(wù)器的心跳管理和故障恢復(fù),其上報(bào)消息給所述文件服務(wù)器數(shù)據(jù)塊管理模塊以及公共平臺(tái)。
所述文件服務(wù)器為多機(jī)備份。
所述客戶機(jī)進(jìn)一步包括客戶機(jī)文件描述符管理模塊、客戶機(jī)應(yīng)用編程接口模塊;所述客戶機(jī)文件描述符管理模塊用于執(zhí)行文件相關(guān)操作,其接收客戶機(jī)應(yīng)用編程接口模塊提供的接口封裝,并上報(bào)消息給公共平臺(tái);所述客戶機(jī)應(yīng)用編程接口模塊用于為所述客戶機(jī)上的應(yīng)用程序提供接口封裝。
所述文件存儲(chǔ)系統(tǒng)采取雙平面?zhèn)浞莸慕M網(wǎng)結(jié)構(gòu)所述控制服務(wù)器和文件服務(wù)器均配置有綁定為負(fù)載均衡模式的雙網(wǎng)卡,與每個(gè)平面的核心交換機(jī)相連。
本發(fā)明通過(guò)構(gòu)建一個(gè)海量文件存儲(chǔ)系統(tǒng),并在該系統(tǒng)中采用特殊的海量文件存儲(chǔ)方法,從而在實(shí)現(xiàn)海量文件存儲(chǔ)的同時(shí)提高了搜索引擎對(duì)海量文件進(jìn)行讀寫等各項(xiàng)操作的執(zhí)行效率。
圖1是本發(fā)明中海量文件的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)圖;圖2是本發(fā)明中海量文件存儲(chǔ)系統(tǒng)的結(jié)構(gòu)圖;圖3是本發(fā)明中海量文件存儲(chǔ)系統(tǒng)的組網(wǎng)結(jié)構(gòu)圖;圖4是本發(fā)明的海量文件存儲(chǔ)系統(tǒng)中控制服務(wù)器的內(nèi)部結(jié)構(gòu)圖;
圖5是本發(fā)明的海量文件存儲(chǔ)系統(tǒng)中文件服務(wù)器的內(nèi)部結(jié)構(gòu)圖;圖6是本發(fā)明的海量文件存儲(chǔ)系統(tǒng)中客戶機(jī)的內(nèi)部結(jié)構(gòu)圖。
具體實(shí)施例方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明的文件系統(tǒng)基于現(xiàn)有OS(如Windows/Linux)的文件系統(tǒng)FS,在服務(wù)器中增加與文件、數(shù)據(jù)塊管理相關(guān)的功能模塊,構(gòu)建了一個(gè)海量文件存儲(chǔ)系統(tǒng),進(jìn)行文件的存儲(chǔ)、維護(hù),同時(shí)采用獨(dú)特的數(shù)據(jù)結(jié)構(gòu)作為文件的存儲(chǔ)方法,從而在實(shí)現(xiàn)海量文件存儲(chǔ)的同時(shí)保證了搜索引擎對(duì)該文件系統(tǒng)中的海量文件進(jìn)行各項(xiàng)操作的執(zhí)行效率。
圖1示出了本發(fā)明中海量文件的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)。該數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)是指在海量文件存儲(chǔ)系統(tǒng)(一般包括控制服務(wù)器、文件服務(wù)器和客戶機(jī))中由控制服務(wù)器存儲(chǔ)并維護(hù)的控制信息,主要由文件節(jié)點(diǎn)、數(shù)據(jù)塊節(jié)點(diǎn)和文件服務(wù)器節(jié)點(diǎn)三種文件信息對(duì)象組成,因此可組成如圖1所示的由文件對(duì)象鏈表、數(shù)據(jù)塊(chunk)對(duì)象鏈表和文件服務(wù)器對(duì)象鏈表組成的三層鏈表式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)。該三層鏈表式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)與所述文件服務(wù)器中存儲(chǔ)的數(shù)據(jù)塊形成映射關(guān)系,則當(dāng)客戶機(jī)上的應(yīng)用程序發(fā)起針對(duì)某個(gè)文件的某種操作時(shí),首先發(fā)送請(qǐng)求給控制服務(wù)器,控制服務(wù)器根據(jù)該三層鏈表式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)與文件服務(wù)器中數(shù)據(jù)塊的映射關(guān)系,在文件服務(wù)器中查找到對(duì)應(yīng)文件的數(shù)據(jù)塊,最后客戶機(jī)直接訪問(wèn)文件服務(wù)器中存儲(chǔ)的數(shù)據(jù),并執(zhí)行各項(xiàng)操作。
為了滿足大容量存儲(chǔ),本發(fā)明把所有文件服務(wù)器上的存儲(chǔ)空間劃分為一個(gè)線性的數(shù)據(jù)塊空間,每一個(gè)數(shù)據(jù)塊的粒度為64兆,例如在系統(tǒng)中需要存儲(chǔ)一個(gè)256兆的文件,則至少需要4個(gè)數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊中存放64兆的數(shù)據(jù)。與此對(duì)應(yīng)的,所有數(shù)據(jù)塊相關(guān)的控制信息則以數(shù)據(jù)塊對(duì)象為存儲(chǔ)單元在控制服務(wù)器中存儲(chǔ),也即,每個(gè)數(shù)據(jù)塊對(duì)象中包含與該數(shù)據(jù)塊相關(guān)的所有控制信息,如讀寫鎖、數(shù)據(jù)塊屬性、文件ID(Identification)、數(shù)據(jù)塊ID、相鄰的下一個(gè)數(shù)據(jù)塊ID、版本信息、本數(shù)據(jù)塊中存放的數(shù)據(jù)在文件中的偏移、數(shù)據(jù)塊的容量、實(shí)際使用的空間、數(shù)據(jù)備份數(shù)量、讀寫調(diào)度標(biāo)示、存儲(chǔ)備份數(shù)據(jù)的文件服務(wù)器列表等??刂品?wù)器中的所有這些數(shù)據(jù)塊對(duì)象連接成一個(gè)靜態(tài)鏈表,即數(shù)據(jù)塊對(duì)象鏈表。
與此類似,文件相關(guān)的控制信息則被組織成由所有文件對(duì)象連接起來(lái)的一個(gè)靜態(tài)鏈表,即文件對(duì)象鏈表。其中每個(gè)文件對(duì)象中包含與該文件相關(guān)的所有控制信息,如讀寫鎖、文件名稱、文件屬性、復(fù)制系數(shù)、訪問(wèn)客戶數(shù)、文件ID、存儲(chǔ)開始位置(數(shù)據(jù)塊ID)、存儲(chǔ)結(jié)束位置(數(shù)據(jù)塊ID)等。
同樣地,文件服務(wù)器相關(guān)的控制信息被組織成由所有文件對(duì)象連接起來(lái)的一個(gè)靜態(tài)鏈表,即文件服務(wù)器對(duì)象鏈表。
出于備份的考慮,這些鏈表采用數(shù)組的下標(biāo)而非指針進(jìn)行連接,這樣不會(huì)因?yàn)橹羔樖?dǎo)致備份和存儲(chǔ)失效。如文件對(duì)象鏈表中,其中一個(gè)文件指向下一個(gè)文件ID,所述文件ID即文件對(duì)象鏈表中的數(shù)組下標(biāo),其他鏈表與此類似。
在具體實(shí)現(xiàn)上,本發(fā)明的海量文件存儲(chǔ)方法包括以下步驟首先,控制服務(wù)器在第一次運(yùn)行時(shí)初始化以上所述的三個(gè)鏈表的空閑鏈,即申請(qǐng)了所有文件節(jié)點(diǎn)、數(shù)據(jù)塊節(jié)點(diǎn)和文件服務(wù)器節(jié)點(diǎn)的內(nèi)存,然后放入空閑鏈,同時(shí)初始化文件對(duì)象鏈表中的根節(jié)點(diǎn)。使用時(shí)從空閑鏈申請(qǐng)一個(gè),釋放時(shí)放回空閑鏈。之后控制服務(wù)器的每次啟動(dòng),都首先利用檢驗(yàn)點(diǎn)在內(nèi)存中重建上述的文件信息鏈表,通過(guò)上述鏈表進(jìn)行各種操作,快速有效。
在完成初始化之后,則將海量文件的文件相關(guān)控制信息組織成以文件對(duì)象為存儲(chǔ)單元連接起來(lái)的第一層鏈表;將海量文件的數(shù)據(jù)塊相關(guān)控制信息組織成以數(shù)據(jù)塊對(duì)象為存儲(chǔ)單元連接起來(lái)的第二層鏈表;將海量文件的文件服務(wù)器相關(guān)控制信息組織成以文件服務(wù)器對(duì)象為存儲(chǔ)單元連接起來(lái)的第三層鏈表;這樣,第一層鏈表、第二層鏈表和第三層鏈表以層遞的形式關(guān)聯(lián)為三層鏈表式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),與所述海量文件的數(shù)據(jù)塊形成映射關(guān)系。
正是由于本發(fā)明采取了上述的三層鏈表式的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)對(duì)海量文件進(jìn)行存儲(chǔ),才在實(shí)現(xiàn)海量文件存儲(chǔ)的同時(shí),保證了搜索引擎等對(duì)本發(fā)明的海量文件進(jìn)行各種操作(如搜索、讀寫等)時(shí)的執(zhí)行效率。
圖2示出了本發(fā)明中海量文件存儲(chǔ)系統(tǒng)的結(jié)構(gòu),該系統(tǒng)包括三個(gè)子系統(tǒng),即控制服務(wù)器(Control Server)子系統(tǒng)100、文件服務(wù)器(File Server)子系統(tǒng)200以及客戶機(jī)(Client)子系統(tǒng)300。該海量文件存儲(chǔ)系統(tǒng)在組網(wǎng)結(jié)構(gòu)上為雙平面?zhèn)浞荩瑘D3示出了其組網(wǎng)結(jié)構(gòu)。其中,每臺(tái)服務(wù)器(包括主用控制服務(wù)器101、備用控制服務(wù)器102,以及文件服務(wù)器201、文件服務(wù)器202、文件服務(wù)器203等)都配置雙網(wǎng)卡,分別連接到每個(gè)平面的核心交換機(jī)上,由此可避免因核心交換機(jī)發(fā)生故障而導(dǎo)致的網(wǎng)絡(luò)徹底中斷。該雙網(wǎng)卡綁定為負(fù)載均衡模式,用以提供負(fù)載均衡能力,可以提供更高的網(wǎng)絡(luò)帶寬,且這一冗余機(jī)制對(duì)應(yīng)用程序是完全透明的,所述負(fù)載均衡模式可通過(guò)操作系統(tǒng)進(jìn)行設(shè)置。本發(fā)明將雙平面?zhèn)浞莸慕M網(wǎng)技術(shù)運(yùn)用到海量文件存儲(chǔ)系統(tǒng),增強(qiáng)了其應(yīng)用于搜索引擎時(shí)的執(zhí)行效率以及故障恢復(fù)能力。
以下將對(duì)這三個(gè)子系統(tǒng)進(jìn)行詳細(xì)闡述為增強(qiáng)可靠性,控制服務(wù)器子系統(tǒng)100采用多機(jī)備份的形式,本發(fā)明的一個(gè)實(shí)施例中采用了雙機(jī)備份的形式,即包括主用控制服務(wù)器101和備用控制服務(wù)器102,兩臺(tái)控制服務(wù)器的內(nèi)部結(jié)構(gòu)相同。控制服務(wù)器可接收文件服務(wù)器子系統(tǒng)200上報(bào)的狀態(tài)信息并發(fā)出相應(yīng)的控制指令,并可與客戶機(jī)子系統(tǒng)300進(jìn)行信息交互。
圖4示出了以主用控制服務(wù)器101為例的內(nèi)部結(jié)構(gòu),其包括如下功能模塊數(shù)據(jù)管理模塊1011、日志管理模塊1012、備份管理模塊1013、公共平臺(tái)1014。其中,數(shù)據(jù)管理模塊1011包括文件及數(shù)據(jù)塊管理模塊10111、文件服務(wù)器管理模塊10112。文件及數(shù)據(jù)塊管理模塊10111連接文件服務(wù)器管理模塊10112,共同存儲(chǔ)和維護(hù)三層鏈表式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),并將其上的文件及數(shù)據(jù)塊管理情況上報(bào)給日志管理模塊1012,且與公共平臺(tái)進(jìn)行信息交互;文件服務(wù)器管理模塊10112用于管理文件服務(wù)器的相關(guān)控制信息,即文件服務(wù)器對(duì)象鏈表,并與文件及數(shù)據(jù)塊管理模塊10111,且與公共平臺(tái)進(jìn)行信息交互;日志管理模塊1012用于實(shí)現(xiàn)日志管理中包括的所有功能,包括記錄、存儲(chǔ)、修改日志等操作,其接收文件及數(shù)據(jù)塊管理模塊10111上報(bào)的管理情況,并與公共平臺(tái)進(jìn)行信息交互;備份管理模塊1013用于實(shí)現(xiàn)主備控制服務(wù)器之間的心跳維護(hù)和故障恢復(fù)等,并將相關(guān)管理情況上報(bào)給日志管理模塊1012,且與公共平臺(tái)進(jìn)行信息交互;公共平臺(tái)1014用于實(shí)現(xiàn)線程和線程池管理、進(jìn)程間通信(Interprocess Communication,IPC)、定時(shí)器管理、加鎖解鎖管理、緩存管理等,與主用控制服務(wù)器101中的其他所有模塊均進(jìn)行信息交互,控制各個(gè)模塊的運(yùn)作,是各個(gè)子系統(tǒng)的公用模塊,所以公共平臺(tái)1014可存在于控制服務(wù)器子系統(tǒng)100中,也可以存在于其他子系統(tǒng)中,或者獨(dú)立存在于本發(fā)明的海量文件存儲(chǔ)系統(tǒng)中。需要說(shuō)明的是,控制服務(wù)器中的上述模塊是本發(fā)明的海量文件存儲(chǔ)系統(tǒng)為滿足搜索引擎對(duì)海量文件進(jìn)行搜索而設(shè)計(jì)的模塊,但并不限定為上述模塊,若為實(shí)現(xiàn)搜索引擎的更多需求,可在此基礎(chǔ)上進(jìn)行相關(guān)功能模塊的擴(kuò)展。
為增強(qiáng)可靠性,文件服務(wù)器子系統(tǒng)200采用多機(jī)備份的形式,本發(fā)明的一個(gè)實(shí)施例中可采用三臺(tái)文件服務(wù)器作為備份,即包括文件服務(wù)器201、包括文件服務(wù)器202、包括文件服務(wù)器203,其內(nèi)部結(jié)構(gòu)相同,均對(duì)客戶機(jī)完全透明。文件服務(wù)器子系統(tǒng)200可與客戶機(jī)子系統(tǒng)300進(jìn)行信息交互,可向控制服務(wù)器子系統(tǒng)100上報(bào)狀態(tài)信息并接收控制服務(wù)器子系統(tǒng)100下發(fā)的控制指令。
圖5示出了以文件服務(wù)器201為例的內(nèi)部結(jié)構(gòu),其包括以下功能模塊文件服務(wù)器數(shù)據(jù)塊管理模塊2011、文件服務(wù)器心跳管理模塊2012、文件服務(wù)器公共平臺(tái)2013。文件服務(wù)器數(shù)據(jù)塊管理模塊2011用于存儲(chǔ)和維護(hù)數(shù)據(jù)塊,其接收文件服務(wù)器心跳管理模塊2012上報(bào)的管理情況,并向文件服務(wù)器公共平臺(tái)2013上報(bào)消息;文件服務(wù)器心跳管理模塊2012用于文件服務(wù)器子系統(tǒng)200的心跳管理和故障恢復(fù),其上報(bào)消息給文件服務(wù)器數(shù)據(jù)塊管理模塊2011和文件服務(wù)器公共平臺(tái)2013;文件服務(wù)器公共平臺(tái)2013與控制服務(wù)器子系統(tǒng)100中的公共平臺(tái)1014一樣,是各個(gè)子系統(tǒng)的公用模塊。與控制服務(wù)器類似,文件服務(wù)器中的上述模塊是本發(fā)明的海量文件存儲(chǔ)系統(tǒng)為滿足搜索引擎對(duì)海量文件進(jìn)行搜索而設(shè)計(jì)的模塊,但并不限定為上述模塊,若為實(shí)現(xiàn)搜索引擎的更多需求,可在此基礎(chǔ)上進(jìn)行相關(guān)功能模塊的擴(kuò)展。
客戶機(jī)子系統(tǒng)300提供應(yīng)用編程接口(Application Programming Interface,API),與控制服務(wù)器子系統(tǒng)100和文件服務(wù)器子系統(tǒng)200進(jìn)行信息交互??蛻魴C(jī)子系統(tǒng)300可能包含很多個(gè)客戶機(jī),如客戶機(jī)301等,每個(gè)客戶機(jī)上運(yùn)行有應(yīng)用軟件,如搜索引擎等。
圖6示出了以客戶機(jī)301為例的內(nèi)部結(jié)構(gòu),其包括以下功能模塊客戶機(jī)文件描述符管理模塊30111、客戶機(jī)應(yīng)用編程接口模塊3012、公共平臺(tái)3013。客戶機(jī)文件描述符管理模塊3011用于實(shí)現(xiàn)客戶機(jī)301和文件相關(guān)的所有功能,例如對(duì)文件的搜索、讀寫等,其接收客戶機(jī)應(yīng)用編程接口模塊3012提供的接口封裝,并向公共平臺(tái)3013上報(bào)消息??蛻魴C(jī)應(yīng)用編程接口模塊3012用于為搜索引擎應(yīng)用程序(如搜索引擎應(yīng)用程序)提供接口封裝;公共平臺(tái)3013與控制服務(wù)器子系統(tǒng)100中的公共平臺(tái)1014一樣,是各個(gè)子系統(tǒng)的公用模塊。與控制服務(wù)器類似,客戶機(jī)中的上述模塊是本發(fā)明的海量文件存儲(chǔ)系統(tǒng)為滿足搜索引擎對(duì)海量文件進(jìn)行搜索而設(shè)計(jì)的模塊,但并不限定為上述模塊,若為實(shí)現(xiàn)搜索引擎的更多需求,可在此基礎(chǔ)上進(jìn)行相關(guān)功能模塊的擴(kuò)展。
綜上所述,本發(fā)明的海量文件存儲(chǔ)系統(tǒng)中各個(gè)子系統(tǒng)協(xié)調(diào)運(yùn)作,可以滿足海量文件的存儲(chǔ)要求,同時(shí)由于采用了三層鏈表式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),以及在雙平面?zhèn)浞莸慕M網(wǎng)結(jié)構(gòu)中采用負(fù)載均衡式的網(wǎng)卡綁定方法等,在執(zhí)行效率上也優(yōu)于現(xiàn)有技術(shù)。本發(fā)明的一個(gè)實(shí)施例中,系統(tǒng)在100兆環(huán)境下測(cè)試,并發(fā)寫效率為4兆比特/秒(Mega Bytes,MB/s),單機(jī)寫效率為6MB/s;并發(fā)讀效率10MB/s,單機(jī)讀效率為10MB/s。這樣的執(zhí)行效率是現(xiàn)有技術(shù)所達(dá)不到的。除此之外,由于采用服務(wù)器的多機(jī)備份,文件服務(wù)的可靠性方面也得到了改善。
應(yīng)當(dāng)指出的是,本發(fā)明所述的海量文件存儲(chǔ)方法及系統(tǒng)并不僅限于應(yīng)用在搜索引擎,還可應(yīng)用在其他各種場(chǎng)景中,例如本發(fā)明的文件存儲(chǔ)系統(tǒng)QFS還可用于構(gòu)建其他海量數(shù)據(jù)系統(tǒng),作為其數(shù)據(jù)存儲(chǔ)子系統(tǒng)。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種海量文件的存儲(chǔ)方法,所述海量文件存儲(chǔ)在多個(gè)文件服務(wù)器中,其對(duì)應(yīng)的文件相關(guān)控制信息、數(shù)據(jù)塊相關(guān)控制信息、文件服務(wù)器相關(guān)控制信息則存儲(chǔ)在控制服務(wù)器,其特征在于,所述方法包括以下步驟將所述海量文件的文件相關(guān)控制信息組織成以文件對(duì)象為存儲(chǔ)單元連接起來(lái)的第一層鏈表;將所述海量文件的數(shù)據(jù)塊相關(guān)控制信息組織成以數(shù)據(jù)塊對(duì)象為存儲(chǔ)單元連接起來(lái)的第二層鏈表;將所述海量文件的文件服務(wù)器相關(guān)控制信息組織成以文件服務(wù)器對(duì)象為存儲(chǔ)單元連接起來(lái)的第三層鏈表;所述第一層鏈表、第二層鏈表和第三層鏈表以層遞的形式關(guān)聯(lián)為三層鏈表式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),與所述海量文件的數(shù)據(jù)塊形成映射關(guān)系。
2.如權(quán)利要求1所述的海量文件的存儲(chǔ)方法,其特征在于,所述三層鏈表式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)內(nèi)部采用數(shù)組下標(biāo)進(jìn)行連接。
3.如權(quán)利要求1所述的海量文件的存儲(chǔ)方法,其特征在于,所述方法在所有步驟之前還包括以下步驟初始化所述三層鏈表式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)中的空閑鏈,以及第一層鏈表的根節(jié)點(diǎn)。
4.一種海量文件的存儲(chǔ)系統(tǒng),包括控制服務(wù)器子系統(tǒng)、文件服務(wù)器子系統(tǒng)和客戶機(jī)子系統(tǒng),所述控制服務(wù)器子系統(tǒng)中包括控制服務(wù)器,所述文件服務(wù)器子系統(tǒng)中包括多個(gè)文件服務(wù)器,所述文件服務(wù)器包括文件服務(wù)器數(shù)據(jù)塊管理模塊,用于存儲(chǔ)和維護(hù)所述海量文件的數(shù)據(jù)塊,所述客戶機(jī)子系統(tǒng)中包括客戶機(jī),所述控制服務(wù)器接收所述文件服務(wù)器上報(bào)的狀態(tài)信息,并根據(jù)所述客戶機(jī)上應(yīng)用程序執(zhí)行的操作對(duì)所述文件服務(wù)器發(fā)送控制指令,其特征在于,所述控制服務(wù)器包括數(shù)據(jù)管理模塊,用于存儲(chǔ)和維護(hù)所述海量文件的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu);所述海量文件的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)為三層鏈表式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),包括文件對(duì)象鏈表、數(shù)據(jù)塊對(duì)象鏈表和文件服務(wù)器對(duì)象鏈表,與所述文件服務(wù)器中存儲(chǔ)的數(shù)據(jù)塊形成映射關(guān)系。
5.如權(quán)利要求4所述的海量文件的存儲(chǔ)系統(tǒng),其特征在于,所述系統(tǒng)進(jìn)一步包括公共平臺(tái),用于實(shí)現(xiàn)以下功能線程和線程池管理、互聯(lián)網(wǎng)進(jìn)程連接管理、定時(shí)器管理、加鎖解鎖管理、緩存管理;所述公共平臺(tái)存在于控制服務(wù)器、文件服務(wù)器和客戶機(jī)的任何一者或多者之中或獨(dú)立存在。
6.如權(quán)利要求4所述的海量文件的存儲(chǔ)系統(tǒng),其特征在于,所述控制服務(wù)器進(jìn)一步包括日志管理模塊、備份管理模塊;所述日志管理模塊用于進(jìn)行日志管理,其接收所述數(shù)據(jù)管理模塊和備份管理模塊上報(bào)的消息,并上報(bào)消息給公共平臺(tái);所述備份管理模塊用于進(jìn)行主備控制服務(wù)器之間的心跳維護(hù)和故障恢復(fù),其上報(bào)消息給日志管理模塊及公共平臺(tái)。
7.如權(quán)利要求4、5或6所述的海量文件的存儲(chǔ)系統(tǒng),其特征在于,所述控制服務(wù)器為雙機(jī)備份,包括主用控制服務(wù)器和備用控制服務(wù)器。
8.如權(quán)利要求4所述的海量文件的存儲(chǔ)系統(tǒng),其特征在于,所述客戶機(jī)進(jìn)一步包括客戶機(jī)文件描述符管理模塊、客戶機(jī)應(yīng)用編程接口模塊;所述客戶機(jī)文件描述符管理模塊用于執(zhí)行文件相關(guān)操作,其接收客戶機(jī)應(yīng)用編程接口模塊提供的接口封裝,并上報(bào)消息給公共平臺(tái);所述客戶機(jī)應(yīng)用編程接口模塊用于為所述客戶機(jī)上的應(yīng)用程序提供接口封裝。
9.如權(quán)利要求4所述的海量文件的存儲(chǔ)系統(tǒng),其特征在于,所述文件存儲(chǔ)系統(tǒng)采取雙平面?zhèn)浞莸慕M網(wǎng)結(jié)構(gòu)所述控制服務(wù)器和文件服務(wù)器均配置有綁定為負(fù)載均衡模式的雙網(wǎng)卡,與每個(gè)平面的核心交換機(jī)相連。
全文摘要
本發(fā)明適用于數(shù)據(jù)處理領(lǐng)域,提供了一種海量文件的存儲(chǔ)方法及系統(tǒng)。所述方法包括以下步驟將所述海量文件的文件相關(guān)控制信息組織成以文件對(duì)象為存儲(chǔ)單元連接起來(lái)的第一層鏈表;將所述海量文件的數(shù)據(jù)塊相關(guān)控制信息組織成以數(shù)據(jù)塊對(duì)象為存儲(chǔ)單元連接起來(lái)的第二層鏈表;將所述海量文件的文件服務(wù)器相關(guān)控制信息組織成以文件服務(wù)器對(duì)象為存儲(chǔ)單元連接起來(lái)的第三層鏈表;所述第一層鏈表、第二層鏈表和第三層鏈表以層遞的形式關(guān)聯(lián)為三層鏈表式數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),與所述海量文件的數(shù)據(jù)塊形成映射關(guān)系。本發(fā)明通過(guò)構(gòu)建一個(gè)海量文件存儲(chǔ)系統(tǒng),并運(yùn)用海量文件存儲(chǔ)方法,從而在實(shí)現(xiàn)海量文件存儲(chǔ)的同時(shí)提高了搜索引擎對(duì)海量文件進(jìn)行各項(xiàng)操作的執(zhí)行效率。
文檔編號(hào)G06F17/30GK101079036SQ200610061328
公開日2007年11月28日 申請(qǐng)日期2006年6月23日 優(yōu)先權(quán)日2006年6月23日
發(fā)明者余祥鑫, 楊海松, 程凱, 朱靜軒 申請(qǐng)人:騰訊科技(深圳)有限公司