本發(fā)明涉及元數(shù)據(jù)管理技術(shù)領(lǐng)域,尤其涉及一種日志段管理方法,還涉及一種日志段管理裝置。
背景技術(shù):
現(xiàn)有文件系統(tǒng)主要分為兩大部分:元數(shù)據(jù)管理、數(shù)據(jù)管理。其中,元數(shù)據(jù)的請(qǐng)求是文件系統(tǒng)所有請(qǐng)求的50%以上,所以提升元數(shù)據(jù)請(qǐng)求的處理性能,可以有效提升整個(gè)文件系統(tǒng)的性能。
為了保證元數(shù)據(jù)節(jié)點(diǎn)存儲(chǔ)內(nèi)容的可恢復(fù)性,元數(shù)據(jù)節(jié)點(diǎn)的每次操作都會(huì)以日志事件的形式記錄在日志段里。每個(gè)日志段能存放一定大小的(具體大小和磁盤條帶有關(guān),下文以4M為例說(shuō)明)或者一定數(shù)量(可以配置,下文以1024為例說(shuō)明)日志事件,當(dāng)把日志事件記錄到日志段后,會(huì)判斷日志段里包含的日志事件總量。如果日志段中日志事件總大小超出4M或者總量超過(guò)1024個(gè)時(shí),此日志段結(jié)束,元數(shù)據(jù)節(jié)點(diǎn)會(huì)重新構(gòu)造一個(gè)日志段準(zhǔn)備存儲(chǔ)下一條日志事件。而每個(gè)日志段的默認(rèn)起始事件就是子樹(shù)事件,事件里記錄了系統(tǒng)當(dāng)前元數(shù)據(jù)節(jié)點(diǎn)目錄結(jié)構(gòu)的子樹(shù)根、子樹(shù)根邊界等內(nèi)容。
在多個(gè)元數(shù)據(jù)節(jié)點(diǎn)的系統(tǒng)里,每個(gè)元數(shù)據(jù)節(jié)點(diǎn)都有自己負(fù)責(zé)的目錄結(jié)構(gòu)。在動(dòng)態(tài)子樹(shù)情況下,新建的目錄可以根據(jù)集群元數(shù)據(jù)熱度分給相對(duì)空閑的元數(shù)據(jù)節(jié)點(diǎn),以達(dá)到平衡元數(shù)據(jù)負(fù)載,提升文件系統(tǒng)性能的目的。
如果新建的目錄和其父目錄不是同一個(gè)元數(shù)據(jù)節(jié)點(diǎn)負(fù)責(zé),那新建的目錄需要作為子樹(shù)根被所屬的元數(shù)據(jù)節(jié)點(diǎn)記錄。基于剛才所述的日志事件存儲(chǔ)機(jī)制:元數(shù)據(jù)節(jié)點(diǎn)負(fù)責(zé)的子樹(shù)根越多,日志段里記錄的子樹(shù)事件越大。在現(xiàn)有的機(jī)制下,當(dāng)子樹(shù)根達(dá)到一定數(shù)量級(jí),子樹(shù)事件大小就可以超過(guò)4M。導(dǎo)致任意元數(shù)據(jù)操作,比如對(duì)文件增刪改、重命名,即便操作本身需要存儲(chǔ)的內(nèi)容很小,但是由于過(guò)大的子樹(shù)事件,仍然要重新構(gòu)造日志段,而新日志段的起始又是過(guò)大的子樹(shù)事件。頻繁的構(gòu)造日志段和構(gòu)造過(guò)大的子樹(shù)事件引發(fā)元數(shù)據(jù)性能直線下降。
因此,對(duì)于本領(lǐng)域技術(shù)人員而言,在支持多個(gè)元數(shù)據(jù)節(jié)點(diǎn)的系統(tǒng)中,如何防止過(guò)于頻繁的構(gòu)造日志段而引發(fā)元數(shù)據(jù)性能下降為亟需解決的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
基于背景技術(shù)存在的技術(shù)問(wèn)題,本發(fā)明提出了一種日志段管理方法,包括以下步驟:
S1:寫(xiě)入日志事件;
S2:判定S1中寫(xiě)入日志事件是否為子樹(shù)事件;若是,則將該日志事件大小忽略且不計(jì)入日志事件總大小,并更新事件數(shù)量值;若否,則獲取該日志事件大小信息且計(jì)入日志事件總大小,并更新事件數(shù)量值和事件大小值;
S3:判定事件數(shù)量值是否達(dá)到日志事件數(shù)量閾值和判定事件大小值是否達(dá)到日志事件大小閾值;若事件數(shù)量值未達(dá)到日志事件數(shù)量閾值且事件大小值未達(dá)到日志事件大小閾值,則轉(zhuǎn)入S1;否則,轉(zhuǎn)入S4;
S4:構(gòu)造日志段,轉(zhuǎn)入S1。
優(yōu)選地,在步驟S1之前,還包括步驟:設(shè)定日志事件數(shù)量閾值和日志事件大小閾值。
優(yōu)選地,日志事件數(shù)量閾值為1024,和/或,日志事件大小閾值為4M。
本發(fā)明還提出了一種日志段管理方法,包括以下步驟:
判斷所寫(xiě)入日志事件是否為子樹(shù)事件;
將子樹(shù)事件放入第一日志事件池,將非子樹(shù)事件放入第二日志事件池;
統(tǒng)計(jì)第一日志事件池和第二日志事件池中日志事件總數(shù)量并作為事件數(shù)量值,統(tǒng)計(jì)第二日志事件池中日志事件總大小并作為事件大小值;
事件數(shù)量值小于日志段事件數(shù)量閾值且事件大小值小于日志段事件大小閾值,則在當(dāng)前日志段寫(xiě)入日志事件,否則,構(gòu)造新日志段寫(xiě)入日志事件。
優(yōu)選地,包括以下步驟:設(shè)定日志事件數(shù)量閾值和日志事件大小閾值。
優(yōu)選地,日志事件數(shù)量閾值為1024,和/或,日志事件大小閾值為4M。
本發(fā)明中提供的兩種日志段管理方法,關(guān)鍵點(diǎn)均在于對(duì)日志事件進(jìn)行判定并區(qū)分為子樹(shù)事件和非子樹(shù)事件,子樹(shù)事件計(jì)入日志事件總數(shù)量且容量大小不計(jì)入日志事件總大小,非子樹(shù)事件計(jì)入日志事件總數(shù)量且容量大小計(jì)入日志事件總大小,從而避免子樹(shù)事件過(guò)大引起日志段的頻繁構(gòu)造;上述方法至少具有以下優(yōu)點(diǎn):
1、不會(huì)由于過(guò)大子樹(shù)事件導(dǎo)致頻繁的構(gòu)造日志段,避免了過(guò)大子樹(shù)事件引發(fā)的元數(shù)據(jù)性能直線下降,可以提升元數(shù)據(jù)集群性能;
2、適用于可以支持多個(gè)元數(shù)據(jù)節(jié)點(diǎn)的文件系統(tǒng),與現(xiàn)有元數(shù)據(jù)集群動(dòng)態(tài)子樹(shù)目錄結(jié)構(gòu)兼容性好,可廣泛應(yīng)用于云存儲(chǔ)系統(tǒng)、分布式文件系統(tǒng)等。
本發(fā)明還提出了日志段管理裝置,包括:
事件寫(xiě)入模塊,用于向當(dāng)前日志段中寫(xiě)入日志事件;
第一判斷模塊,判定日志事件是否為子樹(shù)事件;
管理模塊,用于統(tǒng)計(jì)當(dāng)前日志段中日志事件總數(shù)量作為事件數(shù)量值;還用于統(tǒng)計(jì)非子樹(shù)事件的大小之和作為事件大小值;
第二判斷模塊,用于在事件數(shù)量值達(dá)到日志事件數(shù)量閾值時(shí),生成觸發(fā)信號(hào);還用于在事件大小值達(dá)到日志事件大小閾值是,生成觸發(fā)信號(hào);
日志段生成模塊,用于在第二判斷模塊生成觸發(fā)信號(hào)時(shí),構(gòu)造日志段。
優(yōu)選地,還包括:賦值模塊,用于設(shè)定日志事件數(shù)量閾值和日志事件大小閾值。
本發(fā)明提出的日志段管理裝置,其有益效果與日志段管理方法的有益效果基本類似,此處不再贅述。
附圖說(shuō)明
圖1為本發(fā)明提出的一種日志段管理方法中一種實(shí)施例的流程示意圖;
圖2為本發(fā)明提出的一種日志段管理方法中另一種實(shí)施例的流程示意圖;
圖3為本發(fā)明提出的一種日志段管理裝置的一種實(shí)施例的結(jié)構(gòu)框圖。
具體實(shí)施方式
如圖1-3所示,圖1為本發(fā)明提出的一種日志段管理方法中一種實(shí)施例的流程示意圖;圖2為本發(fā)明提出的一種日志段管理方法中另一種實(shí)施例的流程示意圖;圖3為本發(fā)明提出的一種日志段管理裝置的一種實(shí)施例的結(jié)構(gòu)框圖。
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)的描述。
實(shí)施例1
參考圖1,本發(fā)明所公開(kāi)的一種日志段管理方法,包括以下步驟:
S0:設(shè)定日志事件數(shù)量閾值為1024和日志事件大小閾值4M;
S1:寫(xiě)入日志事件;
S2:判定S1中寫(xiě)入日志事件是否為子樹(shù)事件;若是,則將該日志事件大小忽略且不計(jì)入日志事件總大小,并更新事件數(shù)量值;若否,則獲取該日志事件大小信息且計(jì)入日志事件總大小,并更新事件數(shù)量值和事件大小值;
S3:判定事件數(shù)量值是否達(dá)到1024和判定事件大小值是否達(dá)到4M;若事件數(shù)量值未達(dá)到1024且事件大小值未達(dá)到4M,則轉(zhuǎn)入S1;否則,轉(zhuǎn)入S4;
S4:構(gòu)造日志段,轉(zhuǎn)入S1。
在上述實(shí)施例1中,我們可以獲知,先進(jìn)行寫(xiě)入日志事件是否為子樹(shù)事件,若是則忽略該事件大小僅計(jì)入事件數(shù)量,從而有效防止子樹(shù)事件過(guò)大導(dǎo)致日志段的構(gòu)造,避免了過(guò)大子樹(shù)事件引發(fā)的元數(shù)據(jù)性能直線下降。
實(shí)施例2
參考圖2,本發(fā)明所公開(kāi)的一種日志段管理方法,包括以下步驟:
設(shè)定日志事件數(shù)量閾值1024和日志事件大小閾值4M;
判斷所寫(xiě)入日志事件是否為子樹(shù)事件;
將子樹(shù)事件放入第一日志事件池,將非子樹(shù)事件放入第二日志事件池;
統(tǒng)計(jì)第一日志事件池和第二日志事件池中日志事件總數(shù)量并作為事件數(shù)量值,統(tǒng)計(jì)第二日志事件池中日志事件總大小并作為事件大小值;
事件數(shù)量值小于日志段事件數(shù)量閾值且事件大小值小于日志段事件大小閾值,則在當(dāng)前日志段寫(xiě)入日志事件,否則,構(gòu)造新日志段寫(xiě)入日志事件。
在上述實(shí)施例2中,我們可以獲知,實(shí)施例2采用的是判定日志事件是否為子樹(shù)事件后,將子樹(shù)事件與非子樹(shù)事件劃分為兩部分,在統(tǒng)計(jì)日志事件總數(shù)量時(shí),兩部分都進(jìn)行統(tǒng)計(jì),在統(tǒng)計(jì)日志事件總大小時(shí),則僅統(tǒng)計(jì)非子樹(shù)事件部分;可以有效防止子樹(shù)事件過(guò)大導(dǎo)致日志段的構(gòu)造,避免了過(guò)大子樹(shù)事件引發(fā)的元數(shù)據(jù)性能直線下降。
參考圖3,本發(fā)明所公開(kāi)的一種日志段管理裝置,包括:
事件寫(xiě)入模塊,用于向當(dāng)前日志段中寫(xiě)入日志事件;
第一判斷模塊,判定日志事件是否為子樹(shù)事件;
管理模塊,用于統(tǒng)計(jì)當(dāng)前日志段中日志事件總數(shù)量作為事件數(shù)量值;還用于統(tǒng)計(jì)非子樹(shù)事件的大小之和作為事件大小值;
第二判斷模塊,用于在事件數(shù)量值達(dá)到日志事件數(shù)量閾值時(shí),生成觸發(fā)信號(hào);還用于在事件大小值達(dá)到日志事件大小閾值是,生成觸發(fā)信號(hào);
日志段生成模塊,用于在第二判斷模塊生成觸發(fā)信號(hào)時(shí),構(gòu)造日志段;
賦值模塊,用于設(shè)定日志事件數(shù)量閾值和日志事件大小閾值。
上述日志段管理裝置,其有益效果與日志段管理方法的有益效果基本類似,此處不再贅述。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),根據(jù)本發(fā)明的技術(shù)方案及其發(fā)明構(gòu)思加以等同替換或改變,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。