本申請涉及分布式文件系統(tǒng)元數(shù)據(jù)性能優(yōu)化領(lǐng)域,特別涉及一種分布式文件系統(tǒng)子樹存儲方法及裝置。
背景技術(shù):
信息技術(shù)的高速發(fā)展,隨之而來的是更多的數(shù)據(jù)需要存儲,因此就需要文件系統(tǒng)來管理存儲數(shù)據(jù)。文件系統(tǒng)中的數(shù)據(jù)分為數(shù)據(jù)和元數(shù)據(jù),數(shù)據(jù)指的是普通文件中的實(shí)際數(shù)據(jù),而元數(shù)據(jù)指用來描述一個(gè)文件特征的系統(tǒng)數(shù)據(jù),例如訪問權(quán)限、文件擁有者以及文件的儲存的分布信息等。在集群文件系統(tǒng)中,目錄信息包括文件在磁盤上的位置以及磁盤在集群中的位置。用戶需要操作一個(gè)文件必須首先讀取到文件的元數(shù)據(jù),才能定位到文件的位置并且得到文件的內(nèi)容或相關(guān)屬性。
因此,在面對數(shù)量繁多的文件的應(yīng)用場景中,操作文件的性能就受制于元數(shù)據(jù)的讀取寫入性能。所以在讀取元數(shù)據(jù)中,通常元數(shù)據(jù)集群通常將目錄信息中的目錄劃分為多個(gè)目錄子樹,將這些子樹的負(fù)載壓力均分到元數(shù)據(jù)服務(wù)上。通過將目錄存儲壓力進(jìn)行劃分,到每個(gè)目錄子樹上,減少了部分的目錄負(fù)載壓力。
而一般元數(shù)據(jù)集群將目錄子樹信息存儲到日志中,通過日志存儲目錄子樹信息。由于日志是分段存儲的,因此每個(gè)日志端都要保存一份子樹信息,以保證子樹信息的正確性。因此當(dāng)文件數(shù)量較多時(shí),子樹信息的數(shù)量也會指數(shù)級的增加,所需要的日志數(shù)據(jù)因此變得龐大,影響日志的讀取組度,進(jìn)而影響元數(shù)據(jù)的性能。
因此,如何解決分布式文件系統(tǒng)中元數(shù)據(jù)性能問題,是本領(lǐng)域技術(shù)人員需要重點(diǎn)探討的問題。
技術(shù)實(shí)現(xiàn)要素:
本申請的目的是提供一種分布文件系統(tǒng)子樹存儲方法及裝置,通過使用ssd盤作為存儲元數(shù)據(jù)的磁盤,還有使用對象存儲的存儲文件方式,優(yōu)化了元數(shù)據(jù)中的子樹的讀取性能,加快了元數(shù)據(jù)的操作速度,使元數(shù)據(jù)的性能得到了很大的提升。
為解決上述技術(shù)問題,本申請?zhí)峁┮环N分布式文件系統(tǒng)子樹存儲方法,該方法包括:
元數(shù)據(jù)集群對目錄進(jìn)行分區(qū)處理,得到目錄子樹;
為每一個(gè)所述目錄子樹的信息和所述目錄子樹對應(yīng)的權(quán)限信息分配一個(gè)元數(shù)據(jù)服務(wù),作為子樹信息;
將所述子樹信息存儲到以ssd盤為基礎(chǔ)的元數(shù)據(jù)池。
可選的,當(dāng)所述目錄子樹變化時(shí),還包括:
以日志的形式記錄所述目錄子樹的變化,得到子樹變化日志;
當(dāng)所述子樹變化日志存盤時(shí),根據(jù)所述子樹變化日志對保存的所述子樹信息進(jìn)行更新,并將更新后的所述子樹信息存入所述元數(shù)據(jù)池的相應(yīng)對象中。
可選的,還包括:
將所述目錄對應(yīng)的數(shù)據(jù),以對象存儲的方式存儲在以sata盤為基礎(chǔ)的數(shù)據(jù)池中。
可選的,所述權(quán)限信息還包括:
訪問權(quán)限、文件擁有者以及文件數(shù)據(jù)塊的分布信息。
本申請還提供一種分布式文件系統(tǒng)子樹存儲裝置,該裝置包括:
分區(qū)處理模塊,用于元數(shù)據(jù)集群對目錄進(jìn)行分區(qū)處理,得到目錄子樹;
分配服務(wù)模塊,用于為每一個(gè)所述目錄子樹的信息和所述目錄子樹對應(yīng)的權(quán)限信息分配一個(gè)元數(shù)據(jù)服務(wù),作為子樹信息;
元數(shù)據(jù)存儲模塊,用于將所述子樹信息存儲到以ssd盤為基礎(chǔ)的元數(shù)據(jù)池。
可選的,還包括:更新模塊,其中,所述更新模塊包括:
更新獲取單元,用于以日志的形式記錄所述目錄子樹的變化,得到子樹變化日志;
更新單元,用于當(dāng)所述子樹變化日志存盤時(shí),根據(jù)所述子樹變化日志對保存的所述子樹信息進(jìn)行更新,并將更新后的所述子樹信息存入所述元數(shù)據(jù)池的相應(yīng)對象中。
可選的,還包括:
數(shù)據(jù)存儲模塊,用于將所述目錄對應(yīng)的數(shù)據(jù),以對象存儲的方式存儲在以sata盤為基礎(chǔ)的數(shù)據(jù)池中。
本申請所提供的一種分布式文件系統(tǒng)子樹存儲方法,包括步驟:元數(shù)據(jù)集群對目錄進(jìn)行分區(qū)處理,得到目錄子樹;為每一個(gè)所述目錄子樹的信息和權(quán)限信息分配一個(gè)元數(shù)據(jù)服務(wù),并保存作為子樹信息;將所述子樹信息存儲到以ssd盤為基礎(chǔ)的元數(shù)據(jù)池。
通過使用ssd盤作為存儲元數(shù)據(jù)的磁盤,可以利用ssd的快速讀取的特點(diǎn),加快文件系統(tǒng)對元數(shù)據(jù)的操作性能。由于用戶對文件的操作速度由元數(shù)據(jù)的操作速度決定,因此也提高整個(gè)文件系統(tǒng)的性能。本申請還提供一種分布式文件系統(tǒng)子樹存儲裝置,具有上述有益效果,在此不做贅述。
附圖說明
為了更清楚地說明本申請實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本申請實(shí)施例提供的分布式文件系統(tǒng)子樹存儲的流程圖;
圖2為本申請實(shí)施例提供的目錄子樹更新的流程圖;
圖3為本申請實(shí)施例提供的分布式文件系統(tǒng)子樹存儲裝置的框圖;
圖4為本申請實(shí)施例提供的更新模塊與數(shù)據(jù)存儲模塊的框圖;
圖5為本申請實(shí)施例提供的一種具體的子樹分區(qū)概念圖;
圖6為本申請實(shí)施例提供的一種具體的子樹存儲示意圖。
具體實(shí)施方式
本申請的核心是提供一種分布式文件系統(tǒng)子樹存儲方法及裝置,可以提高文件系統(tǒng)的性能。
為使本申請實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請實(shí)施例中的附圖,對本申請實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本申請一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾堉械膶?shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請保護(hù)的范圍。
請參考圖1,圖1為本申請實(shí)施例提供的分布式文件系統(tǒng)子樹存儲的流程圖。
本方法實(shí)施例,可以包括步驟:
s100,元數(shù)據(jù)集群對目錄進(jìn)行分區(qū)處理,得到目錄子樹;
s200,為每一個(gè)所述目錄子樹的信息和所述目錄子樹對應(yīng)的權(quán)限信息分配一個(gè)元數(shù)據(jù)服務(wù),作為子樹信息;
s300,將所述子樹信息存儲到以ssd盤為基礎(chǔ)的元數(shù)據(jù)池。
在步驟s100中,需要說明的是,元數(shù)據(jù)集群擁有元數(shù)據(jù)管理功能,也可以看作是元數(shù)據(jù)管理器的集合。通常在面對大量數(shù)據(jù)文件時(shí)目錄樹信息會顯得龐大臃腫,因此將目錄樹劃分為目錄子樹來管理,并且可以將子樹的壓力負(fù)載均分到元數(shù)據(jù)服務(wù)上,而劃分子樹的數(shù)量可以根據(jù)文件目錄的大小來決定,在本實(shí)施例中不做限定。
通過ssd盤為基礎(chǔ)的元數(shù)據(jù)池處理元數(shù)據(jù)io,通過sata盤為基礎(chǔ)的數(shù)據(jù)池處理數(shù)據(jù)io,可以在成本可控下達(dá)到較優(yōu)的數(shù)據(jù)處理方案。同時(shí),元數(shù)據(jù)io通過元數(shù)據(jù)集群進(jìn)行劃分等其他處理,再存儲至元數(shù)據(jù)池中,因此可以將元數(shù)據(jù)集群看作元數(shù)據(jù)的管理器的集合。通過元數(shù)據(jù)集群處理,目錄被劃分為子樹信息存至元數(shù)據(jù)池,同時(shí)目錄中的其他元數(shù)據(jù)也被存至元數(shù)據(jù)池。
其中,其他元數(shù)據(jù),也可以叫做其他信息包括訪問權(quán)限、文件擁有者以及文件數(shù)據(jù)塊的分布信息,在本實(shí)施例中只列出如上信息,可以根據(jù)存儲的內(nèi)容對所存儲的信息進(jìn)行增減,在此不做限定。
本申請實(shí)施例提供了一種分布式文件系統(tǒng)子樹存儲方法,可以通過將決定數(shù)據(jù)性能的元數(shù)據(jù)遷移到ssd磁盤中進(jìn)行讀寫操作,具有較快的讀寫速度,同時(shí)提高文件系統(tǒng)的性能。
請參考圖2,圖2為本申請實(shí)施例提供的目錄子樹更新的流程圖。
基于上述實(shí)施例,本實(shí)施例在目錄子樹發(fā)生變化時(shí),還可以包括:
s410,以日志的形式記錄所述目錄子樹的變化,得到子樹變化日志;
s420,當(dāng)所述子樹變化日志存盤時(shí),根據(jù)所述子樹變化日志對保存的所述子樹信息進(jìn)行更新,并將更新后的所述子樹信息存入所述元數(shù)據(jù)池的相應(yīng)對象中。
在文件系統(tǒng)子樹發(fā)生變化時(shí),首先寫入的是元數(shù)據(jù)池的日志盤,當(dāng)日志盤落盤時(shí)重新計(jì)算子樹信息。將新的子樹信息落到元數(shù)據(jù)池的特定對象中。
基于上述實(shí)施例,本實(shí)施例還可以包括:
將該目錄對應(yīng)的數(shù)據(jù),以對象存儲的方式存儲在以sata盤為基礎(chǔ)的數(shù)據(jù)池中。
文件系統(tǒng)會把存儲的文件數(shù)據(jù)分為元數(shù)據(jù)和數(shù)據(jù),其中,目錄對應(yīng)的數(shù)據(jù)指的是該數(shù)據(jù),也就是元數(shù)據(jù)中目錄指向的數(shù)據(jù)。而對于該數(shù)據(jù)的存儲方式一般有快存儲方式和文件存儲方式,但是快存儲雖然讀寫速度較快但不利于數(shù)據(jù)的共享,而文件存儲利于數(shù)據(jù)的共享但讀寫速度較慢,因此本實(shí)施例選用對象存儲方式,具有較快的讀寫速度同時(shí)利于共享。同時(shí)提供文件系統(tǒng)讀寫對象接口,方便子樹發(fā)生時(shí)立即更新子樹信息。
本申請實(shí)施例提供了一種分布式文件系統(tǒng)子樹存儲方法,可以通過上述方法能夠提高文件系統(tǒng)的子樹的存儲讀取的效率,從而提高文件系統(tǒng)的運(yùn)行性能。
下面對本申請實(shí)施例提供的分布式文件系統(tǒng)子樹存儲裝置進(jìn)行介紹,下文描述的分布式文件系統(tǒng)子樹存儲裝置與上文描述的分布式文件系統(tǒng)子樹存儲方法可相互對應(yīng)參照。
請參考圖3,圖3為本申請實(shí)施例提供的分布式文件系統(tǒng)子樹存儲裝置的框圖。
本裝置實(shí)施例,可以包括:
分區(qū)處理模塊100,用于元數(shù)據(jù)集群對目錄進(jìn)行分區(qū)處理,得到目錄子樹;
分配服務(wù)模塊200,用于為每一個(gè)所述目錄子樹的信息和所述目錄子樹對應(yīng)的權(quán)限信息分配一個(gè)元數(shù)據(jù)服務(wù),作為子樹信息;
元數(shù)據(jù)存儲模塊300,用于將所述子樹信息存儲到以ssd盤為基礎(chǔ)的元數(shù)據(jù)池。
請參考圖4,圖4為本申請實(shí)施例提供的更新模塊與數(shù)據(jù)存儲模塊的框圖。
基于上述實(shí)施例,本實(shí)施例還可以包括更新模塊400,所述更新模塊400包括:
更新獲取單元410,用于以日志的形式記錄所述目錄子樹的變化,得到子樹變化日志;
更新單元420,用于當(dāng)所述子樹變化日志存盤時(shí),根據(jù)所述子樹變化日志對保存的所述子樹信息進(jìn)行更新,并將更新后的所述子樹信息存入所述元數(shù)據(jù)池的相應(yīng)對象中。
基于上述實(shí)施例,本實(shí)施例還可以包括:
數(shù)據(jù)存儲模塊500,用于將所述目錄對應(yīng)的數(shù)據(jù),以對象存儲的方式存儲在以sata盤為基礎(chǔ)的數(shù)據(jù)池中。
下面,請參考圖5,圖5提供了一種具體的子樹分區(qū)概念圖。
如圖,根據(jù)目錄的結(jié)構(gòu)將目錄分為圖中的多個(gè)目錄子樹,每個(gè)目錄子樹有一個(gè)子樹根,子樹根目錄是每個(gè)目錄子樹的重要標(biāo)記,用于區(qū)分不同的目錄子樹。該目錄子樹的信息也包括子樹根的信息。同時(shí)目錄子樹信息對應(yīng)了相關(guān)的權(quán)限信息,也同時(shí)和目錄子樹的信息分配一個(gè)元數(shù)據(jù)服務(wù)。
圖6為提供了一種具體的子樹存儲示意圖。
如圖中所示,劃分目錄子樹隨后,將目錄子樹以及分配的其他信息和元數(shù)據(jù)服務(wù),作為子樹信息存儲到元數(shù)據(jù)池,在本實(shí)施例中元數(shù)據(jù)池使用ssd磁盤作為存儲介質(zhì),ssd盤又叫做固態(tài)硬盤,相比起一般的sata磁盤具有較高的讀取和寫入速度,因此在對元數(shù)據(jù)進(jìn)行操作時(shí)可以保持較高性能,以及較高的每秒操作次數(shù)。
說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
專業(yè)人員還可以進(jìn)一步意識到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本申請的范圍。
結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲器(ram)、內(nèi)存、只讀存儲器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動(dòng)磁盤、cd-rom、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
以上對本申請所提供的分布文件系統(tǒng)子樹存儲方法及系統(tǒng)進(jìn)行了詳細(xì)介紹。本文中應(yīng)用了具體個(gè)例對本申請的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本申請的方法及其核心思想。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本申請?jiān)淼那疤嵯拢€可以對本申請進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本申請權(quán)利要求的保護(hù)范圍內(nèi)。