本公開涉及分布式文件處理技術(shù)領(lǐng)域,尤其涉及應(yīng)用于分布式文件系統(tǒng)的日志重演方法、裝置及終端。
背景技術(shù):
分布式文件系統(tǒng)一般通過事務(wù)機制來保證文件系統(tǒng)元數(shù)據(jù)的一致性。該機制通常使用journal的方式實現(xiàn),即對文件系統(tǒng)的元數(shù)據(jù)的修改操作,先記錄到一個編輯日志(editlog)里頭,然后再進行實際(in-place)的元數(shù)據(jù)修改操作。這樣可以保證任何一個對文件系統(tǒng)的元數(shù)據(jù)的修改要么全部完成要么什么都不做,從而就保證了文件系統(tǒng)元數(shù)據(jù)之間的一致性。在系統(tǒng)宕機,例如掉電、軟件錯誤等等,之后后重啟的過程中,編輯日志中存在中針對各中文件系統(tǒng)操作的記錄,需要對那些存在于編輯日志中但并沒有做或者只做了一部分實際修改的記錄重新進行in-place更新(re-dolog),這個過程叫做文件系統(tǒng)的恢復(fù),即日志重演(logreplay)。
相關(guān)技術(shù)中,在編輯日志中各記錄之間往往有依賴關(guān)系。比如編輯日志中具有有這樣四條記錄:(1)創(chuàng)建文件/tmp/file1;(2)為文件/user/xyz/file分配一個數(shù)據(jù)塊;(3)修改文件/tmp/file1的讀寫權(quán)限;(4)設(shè)置文件/user/xyz/file的長度和最后修改時間。這四個記錄中,記錄3依賴于記錄1,記錄4依賴于記錄2,就是說記錄3記錄4必須等到記錄1記錄2的in-place更新完成之后才能做它們自身的in-place更新。從而現(xiàn)有技術(shù)中,都采用單線程的方式來完成日志重演,即采用單線程針對各項記錄依次進行in-place更新,完成日志重演。
然而相關(guān)技術(shù)中,單線程對各項記錄依次進行in-place更新,完成日志重演的方式,由于是一項項的一次對各記錄進行in-place更新,會導(dǎo)致日志重演的速度很慢,日志重演的過程較長,會導(dǎo)致分布式文件系統(tǒng)不可用的時間變長。
技術(shù)實現(xiàn)要素:
為克服相關(guān)技術(shù)中存在的問題,本公開提供一種應(yīng)用于分布式文件系統(tǒng)的日志重演方法、裝置及終端,用于解決現(xiàn)有技術(shù)中單線程對各項記錄依次進行in-place更新,完成日志重演的方式,由于是一項項的一次對各記錄進行in-place更新,會導(dǎo)致日志重演的速度很慢,日志重演的過程較長,會導(dǎo)致分布式文件系統(tǒng)不可用的時間變長的問題。
根據(jù)本公開實施例的第一方面,提供一種應(yīng)用于分布式文件系統(tǒng)的日志重演方法,包括:
根據(jù)編輯日志中各記錄的文件標(biāo)識,將各記錄分為至少一類記錄,其中,每一類記錄為具有依賴關(guān)系的記錄;
根據(jù)劃分出的記錄的類數(shù),確定用于日志重演的線程數(shù)量;
采用確定出的線程數(shù)量的各線程,對與各線程一一對應(yīng)的各類記錄進行日志重演。
進一步地,所述根據(jù)編輯日志中各記錄的文件標(biāo)識,將各記錄分為至少一類記錄,包括:
根據(jù)所述編輯日志中的各記錄,確定所述編輯日志中的各同步點;
將相鄰的同步點之間的各記錄,確定為同時處理的各記錄;
根據(jù)確定為同時處理的各記錄的文件標(biāo)識,將確定為同時處理的各記錄分為至少一類記錄。
進一步地,所述根據(jù)劃分出的記錄的類數(shù),確定用于日志重演的線程數(shù)量,包括:
對各相鄰的同步點之間的各類記錄,確定各相鄰的同步點之間的線程數(shù)量。
進一步地,所述采用確定出的線程數(shù)量的各線程,對與各線程一一對應(yīng)的各類記錄進行日志重演,包括:
重復(fù)以下過程,直至對所述編輯日志中的所有記錄完成日志重演:
采用相鄰的同步點之間的線程數(shù)量的線程,對于各線程一一對應(yīng)的各類記錄進行日志重演;
對同步點進行日志重演。
進一步地,所述同步點為所述編輯日志中的rename操作。
進一步地,所述文件標(biāo)識為文件路徑前綴。
本公開的實施例提供的技術(shù)方案可以包括以下有益效果:通過根據(jù)編輯日志中各記錄的文件標(biāo)識,將各記錄分為至少一類記錄,其中,每一類記錄為具有依賴關(guān)系的記錄;根據(jù)劃分出的記錄的類數(shù),確定用于日志重演的線程數(shù)量;采用確定出的線程數(shù)量的各線程,對與各線程一一對應(yīng)的各類記錄進行日志重演。從而可以依據(jù)編輯日志中的各記錄的文件路徑前綴,對各記錄進行分類,可以保證每一類記錄中的各記錄的依賴關(guān)系;進而可以采用多個線程并發(fā)的重演每個記錄類別里頭的紀(jì)錄,加快日志重演的速度,可以保證縮短分布式文件系統(tǒng)不可用的時間;并且,編輯日志中的各記錄中的時序關(guān)系也沒有被打破。
根據(jù)本公開實施例的第二方面,提供一種一種應(yīng)用于分布式文件系統(tǒng)的日志重演裝置,包括:
分類模塊,被配置為根據(jù)編輯日志中各記錄的文件標(biāo)識,將各記錄分為至少一類記錄,其中,每一類記錄為具有依賴關(guān)系的記錄;
確定模塊,被配置為根據(jù)劃分出的記錄的類數(shù),確定用于日志重演的線程數(shù)量;
重演模塊,被配置為采用確定出的線程數(shù)量的各線程,對與各線程一一對應(yīng)的各類記錄進行日志重演。
進一步地,所述分類模塊,被具體配置為:
根據(jù)所述編輯日志中的各記錄,確定所述編輯日志中的各同步點;
將相鄰的同步點之間的各記錄,確定為同時處理的各記錄;
根據(jù)確定為同時處理的各記錄的文件標(biāo)識,將確定為同時處理的各記錄分為至少一類記錄。
進一步地,所述確定模塊,被具體配置為:
對各相鄰的同步點之間的各類記錄,確定各相鄰的同步點之間的線程數(shù)量。
進一步地,所述重演模塊,被具體配置為:
重復(fù)以下過程,直至對所述編輯日志中的所有記錄完成日志重演:
采用相鄰的同步點之間的線程數(shù)量的線程,對于各線程一一對應(yīng)的各類記錄進行日志重演;
對同步點進行日志重演。
進一步地,所述同步點為所述編輯日志中的rename操作。
進一步地,所述文件標(biāo)識為文件路徑前綴。
本公開的實施例提供的技術(shù)方案可以包括以下有益效果:通過根據(jù)編輯日志中各記錄的文件標(biāo)識,將各記錄分為至少一類記錄,其中,每一類記錄為具有依賴關(guān)系的記錄;根據(jù)劃分出的記錄的類數(shù),確定用于日志重演的線程數(shù)量;采用確定出的線程數(shù)量的各線程,對與各線程一一對應(yīng)的各類記錄進行日志重演。從而可以依據(jù)編輯日志中的各記錄的文件路徑前綴,對各記錄進行分類,可以保證每一類記錄中的各記錄的依賴關(guān)系;進而可以采用多個線程并發(fā)的重演每個記錄類別里頭的紀(jì)錄,加快日志重演的速度,可以保證縮短分布式文件系統(tǒng)不可用的時間;并且,編輯日志中的各記錄中的時序關(guān)系也沒有被打破。
根據(jù)本公開實施例的第三方面,提供一種終端,包括:
處理器,以及用于存儲處理器可執(zhí)行指令的存儲器;
其中,所述處理器被配置為:根據(jù)編輯日志中各記錄的文件標(biāo)識,將各記錄分為至少一類記錄,其中,每一類記錄為具有依賴關(guān)系的記錄;根據(jù)劃分出的記錄的類數(shù),確定用于日志重演的線程數(shù)量;采用確定出的線程數(shù)量的各線程,對與各線程一一對應(yīng)的各類記錄進行日志重演。
本公開的實施例提供的技術(shù)方案可以包括以下有益效果:通過根據(jù)編輯日志中各記錄的文件標(biāo)識,將各記錄分為至少一類記錄,其中,每一類記錄為具有依賴關(guān)系的記錄;根據(jù)劃分出的記錄的類數(shù),確定用于日志重演的線程數(shù)量;采用確定出的線程數(shù)量的各線程,對與各線程一一對應(yīng)的各類記錄進行日志重演。從而可以依據(jù)編輯日志中的各記錄的文件路徑前綴,對各記錄進行分類,可以保證每一類記錄中的各記錄的依賴關(guān)系;進而可以采用多個線程并發(fā)的重演每個記錄類別里頭的紀(jì)錄,加快日志重演的速度,可以保證縮短分布式文件系統(tǒng)不可用的時間;并且,編輯日志中的各記錄中的時序關(guān)系也沒有被打破。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
附圖說明
此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本發(fā)明的實施例,并與說明書一起用于解釋本發(fā)明的原理。
圖1是根據(jù)一示例性實施例示出的一種應(yīng)用于分布式文件系統(tǒng)的日志重演方法實施例一的流程圖;
圖2是根據(jù)一示例性實施例示出的一種應(yīng)用于分布式文件系統(tǒng)的日志重演方法實施例二的流程圖;
圖3是根據(jù)一示例性實施例示出的一種應(yīng)用推薦裝置實施例三的框圖;
圖4是根據(jù)一示例性實施例示出的一種終端的實體的框圖;
圖5是根據(jù)一示例性實施例示出的一種終端設(shè)備800的框圖。
具體實施方式
這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本發(fā)明相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。
圖1是根據(jù)一示例性實施例示出的一種應(yīng)用于分布式文件系統(tǒng)的日志重演方法實施例一的流程圖,如圖1所示,應(yīng)用于分布式文件系統(tǒng)的日志重演方法用于終端中,該方法包括以下步驟。
在步驟s11中,根據(jù)編輯日志中各記錄的文件標(biāo)識,將各記錄分為至少一類記錄,其中,每一類記錄為具有依賴關(guān)系的記錄。
其中,所述文件標(biāo)識為文件路徑前綴。
在本步驟中,確定編輯日志中各記錄的文件標(biāo)識,該文件標(biāo)識可以采用文件路徑前綴,從而可以依據(jù)編輯日志中各記錄的文件標(biāo)識,將各記錄分為多類記錄,每一類記錄為具有依賴關(guān)系的記錄。
具體來說,在編輯日志的各記錄中包括了具有依賴關(guān)系的記錄,在采用多線程并發(fā)的日志重演logreplay的時候,同樣需要保證編輯日志editlog里頭有依賴關(guān)系的各個記錄項重演replay的時序關(guān)系。假設(shè)編輯日志editlog里頭有四條記錄:(1)創(chuàng)建文件/tmp/file1;(2)為文件/user/xyz/file分配一個數(shù)據(jù)塊;(3)修改文件/tmp/file1的讀寫權(quán)限;(4)設(shè)置文件/user/xyz/file的長度和最后修改時間??芍?,依賴關(guān)系為重演replay記錄1之后重演replay記錄3,重演replay記錄2之后重演replay記錄4,從而在日志重演的時候,需要保證記錄1重演replay完了之后才能重演replay記錄3,同樣必須保證記錄2重演replay完了之后才能重演replay記錄4。采用單線程的時候,重演replay會按照記錄1、記錄2、記錄3、記錄4的順序進行,從而前述的兩個時序關(guān)系可以得到了保證。但是只是單純的采用兩個多個線程進行日志重演logreplay的時候,如果記錄1、記錄3被分配給兩個不同的線程做重演replay,由于沒有辦法確保兩個線程調(diào)度和運行的時序,因此也就沒有辦法確保記錄1一定在記錄3之前重演replay,同樣也沒有辦法保證記錄2一定在記錄4之前重演replay。
從而解決這一個問題,由于具有相同的文件路徑前綴的記錄具有依賴關(guān)系,可以先按各記錄的文件路徑前綴將編輯日志中的各記錄進行分類,將文件路徑前綴相同的日志分為同一類記錄,那么文件路徑前綴不同的記錄類別之間就不會有依賴關(guān)系,從而不同類別的記錄就可以使用不同線程進行重演replay。
舉例來說,一個日志log里頭有這樣一些記錄:(1)創(chuàng)建目錄/user/a;(2)給文件/tmp/file分配數(shù)據(jù)塊;(3)創(chuàng)建文件/user/a/file;(4)修改文件/tmp/file的文件長度;(5)給文件/user/a/file分配數(shù)據(jù)塊;(6)修改文件/tmp/file的文件主(owner);(7)修改文件/user/a/file的文件長度。其中,共有兩種文件路徑前綴“/user/a”和“/tmp/file”,根據(jù)這兩個文件路徑前綴可以將日志log里頭的記錄分為兩類,第一類記錄里頭包含記錄1、3、5、7,第二類記錄里頭包含記錄2、4、6,每一類記錄中的各記錄具有依賴關(guān)系,并且這兩類記錄之間互相沒有依賴關(guān)系。
在步驟s12中,根據(jù)劃分出的記錄的類數(shù),確定用于日志重演的線程數(shù)量。
在本步驟中,根據(jù)劃分出的記錄的類數(shù),可以確定出用于日志重演的線程數(shù)量。
舉例來說,舉例來說,一個日志log里頭有這樣一些記錄:(1)創(chuàng)建目錄/user/a;(2)給文件/tmp/file分配數(shù)據(jù)塊;(3)創(chuàng)建文件/user/a/file;(4)修改文件/tmp/file的文件長度;(5)給文件/user/a/file分配數(shù)據(jù)塊;(6)修改文件/tmp/file的文件主(owner);(7)修改文件/user/a/file的文件長度。其中,共有兩種文件路徑前綴“/user/a”和“/tmp/file”,根據(jù)這兩個文件路徑前綴可以將日志log里頭的記錄分為兩類,第一類記錄里頭包含記錄1、3、5、7,第二類記錄里頭包含記錄2、4、6,每一類記錄中的各記錄具有依賴關(guān)系,并且這兩類記錄之間互相沒有依賴關(guān)系。從而將各記錄分為兩類,可以確定用于日志重演的線程數(shù)量為2。
在步驟s13中,采用確定出的線程數(shù)量的各線程,對與各線程一一對應(yīng)的各類記錄進行日志重演。
在本步驟中,可以具有確定出的線程數(shù)量的各線程,分別對與各線程一一對應(yīng)的各類記錄進行日志重演。在每個線程里頭,日志重演logreplay按照記錄在編輯log里頭出現(xiàn)的順序進行重演replay,因此這些記錄由于依賴關(guān)系導(dǎo)致的時序會被保證。
舉例來說,將各記錄分為兩類,可以確定用于日志重演的線程數(shù)量為2,可以使用兩個不同的線程進行重演replay。采用第一個線程對第一類記錄中的記錄1、3、5、7依次進行重演replay,同時,采用第二線程對第二類記錄里頭中的記錄2、4、6依次進行重演replay。
本實施例通過根據(jù)編輯日志中各記錄的文件標(biāo)識,將各記錄分為至少一類記錄,其中,每一類記錄為具有依賴關(guān)系的記錄;根據(jù)劃分出的記錄的類數(shù),確定用于日志重演的線程數(shù)量;采用確定出的線程數(shù)量的各線程,對與各線程一一對應(yīng)的各類記錄進行日志重演。從而可以依據(jù)編輯日志中的各記錄的文件路徑前綴,對各記錄進行分類,可以保證每一類記錄中的各記錄的依賴關(guān)系;進而可以采用多個線程并發(fā)的重演每個記錄類別里頭的紀(jì)錄,加快日志重演的速度,可以保證縮短分布式文件系統(tǒng)不可用的時間;并且,編輯日志中的各記錄中的時序關(guān)系也沒有被打破。
在上述圖1所示的實施例的基礎(chǔ)上,圖2是根據(jù)一示例性實施例示出的一種應(yīng)用于分布式文件系統(tǒng)的日志重演方法實施例二的流程圖,如圖2所示,步驟s11,具體包括:
根據(jù)所述編輯日志中的各記錄,確定所述編輯日志中的各同步點;將相鄰的同步點之間的各記錄,確定為同時處理的各記錄;根據(jù)確定為同時處理的各記錄的文件標(biāo)識,將確定為同時處理的各記錄分為至少一類記錄。
其中,所述同步點為所述編輯日志中的rename操作。
在本步驟中,可以首先根據(jù)編輯日志中的各記錄,確定出編輯日志中的各同步點;其中,同步點可以為編輯日志中的rename操作;然后,將相鄰的同步點之間的各記錄,確定為同時處理的各記錄;進而,就可以根據(jù)確定為同時處理的各記錄的文件標(biāo)識,將確定為同時處理的各記錄分為至少一類記錄。
具體來說,在文件系統(tǒng)rename操作中,會牽涉到兩個文件路徑,一個是源路徑,一個是目標(biāo)路徑,從而包含rename的紀(jì)錄無法單純的使用實施例一的處理方案。在本實施例中,可以將rename操作作為同步點,即將兩個rename操作中間的紀(jì)錄使用實施例一種的方式進行重演replay,然后重演replayrename操作,然后下一段記錄再按照上述方式進行重演replay。舉例來說,假定編輯日志editlog里頭有以下記錄:(1)創(chuàng)建文件/user/xyz/file;(2)創(chuàng)建文件/tmp/file;(3)rename/user/xyz/abc到/tmp/abc;(4)修改/user/xyz/file的訪問權(quán)限;(5)修改文件/tmp/file的owner;(6)編輯/user/xyz/file的數(shù)據(jù);(7)rename/a/b/c到/d/e/f;(8)給文件/user/xyc/file分配新數(shù)據(jù)塊;(9)刪除文件/tmp/file。從而,可以確定同步點為記錄3、記錄7,將記錄1、2確定為同時處理的各記錄,將記錄4、5、6確定為同時處理的各記錄,將記錄8、9確定為同時處理的各記錄,然后根據(jù)記錄的文件路徑前綴,可以將記錄4和記錄6分為同一類記錄。
步驟s12,具體包括:
對各相鄰的同步點之間的各類記錄,確定各相鄰的同步點之間的線程數(shù)量。
在本步驟中,可以針對各相鄰的同步點之間的各類記錄,確定各相鄰的同步點之間的線程數(shù)量。
舉例來說,假定編輯日志editlog里頭有以下記錄:(1)創(chuàng)建文件/user/xyz/file;(2)創(chuàng)建文件/tmp/file;(3)rename/user/xyz/abc到/tmp/abc;(4)修改/user/xyz/file的訪問權(quán)限;(5)修改文件/tmp/file的owner;(6)編輯/user/xyz/file的數(shù)據(jù);(7)rename/a/b/c到/d/e/f;(8)給文件/user/xyc/file分配新數(shù)據(jù)塊;(9)刪除文件/tmp/file。從而,可以確定同步點為記錄3、記錄7,將記錄1、2確定為同時處理的各記錄,將記錄4、5、6確定為同時處理的各記錄,將記錄8、9確定為同時處理的各記錄,然后根據(jù)記錄的文件路徑前綴,可以將記錄4和記錄6分為同一類記錄。然后,可以確定針對記錄1、2,可以分別采用兩個線程分別處理記錄1、2;可以確定針對記錄3,可以采用一個線程處理記錄3;可以確定針對記錄4、5、6,可以分別采用一個處理記錄4和6,另一個線程的處理記錄5;可以確定針對記錄7,可以采用一個線程處理記錄7;可以確定針對記錄8、9,可以分別采用兩個線程分別處理記錄8、9。從而可以確定出8個線程。
步驟s13,具體包括:
重復(fù)以下過程,直至對所述編輯日志中的所有記錄完成日志重演:采用相鄰的同步點之間的線程數(shù)量的線程,對于各線程一一對應(yīng)的各類記錄進行日志重演;對同步點進行日志重演。
在本步驟中,針對相鄰的同步點之間的線程數(shù)量的線程,對于各線程一一對應(yīng)的各類記錄進行日志重演;然后對同步點進行日志重演。重復(fù)以上過程,直至對編輯日志中的所有記錄完成日志重演。
舉例來說,假定編輯日志editlog里頭有以下記錄:(1)創(chuàng)建文件/user/xyz/file;(2)創(chuàng)建文件/tmp/file;(3)rename/user/xyz/abc到/tmp/abc;(4)修改/user/xyz/file的訪問權(quán)限;(5)修改文件/tmp/file的owner;(6)編輯/user/xyz/file的數(shù)據(jù);(7)rename/a/b/c到/d/e/f;(8)給文件/user/xyc/file分配新數(shù)據(jù)塊;(9)刪除文件/tmp/file。從而,可以確定同步點為記錄3、記錄7,將記錄1、2確定為同時處理的各記錄,將記錄4、5、6確定為同時處理的各記錄,將記錄8、9確定為同時處理的各記錄,然后根據(jù)記錄的文件路徑前綴,可以將記錄4和記錄6分為同一類記錄。然后,可以確定針對記錄1、2,可以分別采用兩個線程分別處理記錄1、2;可以確定針對記錄3,可以采用一個線程處理記錄3;可以確定針對記錄4、5、6,可以分別采用一個處理記錄4和6,另一個線程的處理記錄5;可以確定針對記錄7,可以采用一個線程處理記錄7;可以確定針對記錄8、9,可以分別采用兩個線程分別處理記錄8、9。從而可以確定出8個線程。然后,重演replay的過程會是這樣:第一步,對于記錄1、2、3,由于3是一個rename操作,所以它是一個同步點,因此對于3之前的記錄會使用兩個線程分別重演replay記錄1和記錄2;第二步重演replay記錄3;第三步,對于記錄4、5、6、7,由于7是一個rename操作,所以它是一個同步點,并且,記錄4和記錄6為同一類記錄,記錄5為另一類記錄,因此對于記錄7之前的記錄會使用兩個線程分別重演replay記錄4和5,另一個線程重演replay記錄6;第四步重演replay記錄7;第五步使用兩個線程分別重演replay記錄8和記錄9。整個過程有5個步驟,如果采用單線程的方式共需要9個步驟。
本實施例通過根據(jù)編輯日志中的各記錄,確定編輯日志中的各同步點;將相鄰的同步點之間的各記錄,確定為同時處理的各記錄;根據(jù)確定為同時處理的各記錄的文件標(biāo)識,將確定為同時處理的各記錄分為至少一類記錄。對各相鄰的同步點之間的各類記錄,確定各相鄰的同步點之間的線程數(shù)量。重復(fù)以下過程,直至對編輯日志中的所有記錄完成日志重演:采用相鄰的同步點之間的線程數(shù)量的線程,對于各線程一一對應(yīng)的各類記錄進行日志重演;對同步點進行日志重演。從而將相鄰的同步點rename操作之間的各記錄,確定為同時處理的各記錄,然后可以依據(jù)編輯日志中的各記錄的文件路徑前綴,對各記錄進行分類,可以保證每一類記錄中的各記錄的依賴關(guān)系;進而可以采用多個線程并發(fā)的重演每個記錄類別里頭的紀(jì)錄,加快日志重演的速度,可以保證縮短分布式文件系統(tǒng)不可用的時間;并且,編輯日志中的各記錄中的時序關(guān)系也沒有被打破。
圖3是根據(jù)一示例性實施例示出的一種應(yīng)用推薦裝置實施例三的框圖。參照圖3,該裝置包括:
分類模塊31,被配置為根據(jù)編輯日志中各記錄的文件標(biāo)識,將各記錄分為至少一類記錄,其中,每一類記錄為具有依賴關(guān)系的記錄;
確定模塊32,被配置為根據(jù)劃分出的記錄的類數(shù),確定用于日志重演的線程數(shù)量;
重演模塊33,被配置為采用確定出的線程數(shù)量的各線程,對與各線程一一對應(yīng)的各類記錄進行日志重演。
其中,所述文件標(biāo)識為文件路徑前綴。
所述分類模塊31,被具體配置為:
根據(jù)所述編輯日志中的各記錄,確定所述編輯日志中的各同步點;
將相鄰的同步點之間的各記錄,確定為同時處理的各記錄;
根據(jù)確定為同時處理的各記錄的文件標(biāo)識,將確定為同時處理的各記錄分為至少一類記錄。
所述確定模塊32,被具體配置為:
對各相鄰的同步點之間的各類記錄,確定各相鄰的同步點之間的線程數(shù)量。
所述重演模塊33,被具體配置為:
重復(fù)以下過程,直至對所述編輯日志中的所有記錄完成日志重演:
采用相鄰的同步點之間的線程數(shù)量的線程,對于各線程一一對應(yīng)的各類記錄進行日志重演;
對同步點進行日志重演。
其中,所述同步點為所述編輯日志中的rename操作。
關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明。
本實施例通過根據(jù)編輯日志中的各記錄,確定編輯日志中的各同步點;將相鄰的同步點之間的各記錄,確定為同時處理的各記錄;根據(jù)確定為同時處理的各記錄的文件標(biāo)識,將確定為同時處理的各記錄分為至少一類記錄。對各相鄰的同步點之間的各類記錄,確定各相鄰的同步點之間的線程數(shù)量。重復(fù)以下過程,直至對編輯日志中的所有記錄完成日志重演:采用相鄰的同步點之間的線程數(shù)量的線程,對于各線程一一對應(yīng)的各類記錄進行日志重演;對同步點進行日志重演。從而將相鄰的同步點rename操作之間的各記錄,確定為同時處理的各記錄,然后可以依據(jù)編輯日志中的各記錄的文件路徑前綴,對各記錄進行分類,可以保證每一類記錄中的各記錄的依賴關(guān)系;進而可以采用多個線程并發(fā)的重演每個記錄類別里頭的紀(jì)錄,加快日志重演的速度,可以保證縮短分布式文件系統(tǒng)不可用的時間;并且,編輯日志中的各記錄中的時序關(guān)系也沒有被打破。
圖4是根據(jù)一示例性實施例示出的一種終端的實體的框圖。參照圖4,該終端可以具體實現(xiàn)為:處理器71,以及被配置為存儲處理器可執(zhí)行指令的存儲器72;
其中,所述處理器71被配置為:根據(jù)編輯日志中各記錄的文件標(biāo)識,將各記錄分為至少一類記錄,其中,每一類記錄為具有依賴關(guān)系的記錄;根據(jù)劃分出的記錄的類數(shù),確定用于日志重演的線程數(shù)量;采用確定出的線程數(shù)量的各線程,對與各線程一一對應(yīng)的各類記錄進行日志重演。
在上述實施例中,應(yīng)理解,該處理器可以是中央處理單元(英文:centralprocessingunit,簡稱:cpu),還可以是其他通用處理器、數(shù)字信號處理器(英文:digitalsignalprocessor,簡稱:dsp)、專用集成電路(英文:applicationspecificintegratedcircuit,簡稱:asic)等。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等,而前述的存儲器可以是只讀存儲器(英文:read-onlymemory,縮寫:rom)、隨機存取存儲器(英文:randomaccessmemory,簡稱:ram)、快閃存儲器、硬盤或者固態(tài)硬盤。sim卡也稱為用戶身份識別卡、智能卡,數(shù)字移動電話機必須裝上此卡方能使用。即在電腦芯片上存儲了數(shù)字移動電話客戶的信息,加密的密鑰以及用戶的電話簿等內(nèi)容。結(jié)合本發(fā)明實施例所公開的方法的步驟可以直接體現(xiàn)為硬件處理器執(zhí)行完成,或者用處理器中的硬件及軟件模塊組合執(zhí)行完成。
關(guān)于上述實施例中的終端,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法和裝置的實施例中進行了詳細描述,此處將不做詳細闡述說明。
本實施例通過根據(jù)編輯日志中各記錄的文件標(biāo)識,將各記錄分為至少一類記錄,其中,每一類記錄為具有依賴關(guān)系的記錄;根據(jù)劃分出的記錄的類數(shù),確定用于日志重演的線程數(shù)量;采用確定出的線程數(shù)量的各線程,對與各線程一一對應(yīng)的各類記錄進行日志重演。從而可以依據(jù)編輯日志中的各記錄的文件路徑前綴,對各記錄進行分類,可以保證每一類記錄中的各記錄的依賴關(guān)系;進而可以采用多個線程并發(fā)的重演每個記錄類別里頭的紀(jì)錄,加快日志重演的速度,可以保證縮短分布式文件系統(tǒng)不可用的時間;并且,編輯日志中的各記錄中的時序關(guān)系也沒有被打破。
圖5是根據(jù)一示例性實施例示出的一種終端設(shè)備800的框圖。例如,終端設(shè)備800可以是移動電話,計算機,數(shù)字廣播終端,消息收發(fā)設(shè)備,游戲控制臺,平板設(shè)備,醫(yī)療設(shè)備,健身設(shè)備,個人數(shù)字助理等。
參照圖5,終端設(shè)備800可以包括以下一個或多個組件:處理組件802,存儲器804,電源組件806,多媒體組件808,音頻組件810,輸入/輸出(i/o)的接口812,傳感器組件814,以及通信組件816。
處理組件802通??刂平K端設(shè)備800的整體操作,諸如與顯示,電話呼叫,數(shù)據(jù)通信,相機操作和記錄操作相關(guān)聯(lián)的操作。處理組件802可以包括一個或多個處理器820來執(zhí)行指令,以完成上述的方法的全部或部分步驟。此外,處理組件802可以包括一個或多個模塊,便于處理組件802和其他組件之間的交互。例如,處理組件802可以包括多媒體模塊,以方便多媒體組件808和處理組件802之間的交互。
存儲器804被配置為存儲各種類型的數(shù)據(jù)以支持在終端設(shè)備800的操作。這些數(shù)據(jù)的示例包括用于在終端設(shè)備800上操作的任何應(yīng)用程序或方法的指令,聯(lián)系人數(shù)據(jù),電話簿數(shù)據(jù),消息,圖片,視頻等。存儲器804可以由任何類型的易失性或非易失性存儲設(shè)備或者它們的組合實現(xiàn),如靜態(tài)隨機存取存儲器(sram),電可擦除可編程只讀存儲器(eeprom),可擦除可編程只讀存儲器(eprom),可編程只讀存儲器(prom),只讀存儲器(rom),磁存儲器,快閃存儲器,磁盤或光盤。
電源組件806為終端設(shè)備800的各種組件提供電力。電源組件806可以包括電源管理系統(tǒng),一個或多個電源,及其他與為終端設(shè)備800生成、管理和分配電力相關(guān)聯(lián)的組件。
多媒體組件808包括在所述終端設(shè)備800和用戶之間的提供一個輸出接口的屏幕。在一些實施例中,屏幕可以包括液晶顯示器(lcd)和觸摸面板(tp)。如果屏幕包括觸摸面板,屏幕可以被實現(xiàn)為觸摸屏,以接收來自用戶的輸入信號。觸摸面板包括一個或多個觸摸傳感器以感測觸摸、滑動和觸摸面板上的手勢。所述觸摸傳感器可以不僅感測觸摸或滑動動作的邊界,而且還檢測與所述觸摸或滑動操作相關(guān)的持續(xù)時間和壓力。在一些實施例中,多媒體組件808包括一個前置攝像頭和/或后置攝像頭。當(dāng)終端設(shè)備800處于操作模式,如拍攝模式或視頻模式時,前置攝像頭和/或后置攝像頭可以接收外部的多媒體數(shù)據(jù)。每個前置攝像頭和后置攝像頭可以是一個固定的光學(xué)透鏡系統(tǒng)或具有焦距和光學(xué)變焦能力。
音頻組件810被配置為輸出和/或輸入音頻信號。例如,音頻組件810包括一個麥克風(fēng)(mic),當(dāng)終端設(shè)備800處于操作模式,如呼叫模式、記錄模式和語音識別模式時,麥克風(fēng)被配置為接收外部音頻信號。所接收的音頻信號可以被進一步存儲在存儲器804或經(jīng)由通信組件816發(fā)送。在一些實施例中,音頻組件810還包括一個揚聲器,用于輸出音頻信號。
i/o接口812為處理組件802和外圍接口模塊之間提供接口,上述外圍接口模塊可以是鍵盤,點擊輪,按鈕等。這些按鈕可包括但不限于:主頁按鈕、音量按鈕、啟動按鈕和鎖定按鈕。
傳感器組件814包括一個或多個傳感器,用于為終端設(shè)備800提供各個方面的狀態(tài)評估。例如,傳感器組件814可以檢測到終端設(shè)備800的打開/關(guān)閉狀態(tài),組件的相對定位,例如所述組件為終端設(shè)備800的顯示器和小鍵盤,傳感器組件814還可以檢測終端設(shè)備800或終端設(shè)備800一個組件的位置改變,用戶與終端設(shè)備800接觸的存在或不存在,終端設(shè)備800方位或加速/減速和終端設(shè)備800的溫度變化。傳感器組件814可以包括接近傳感器,被配置用來在沒有任何的物理接觸時檢測附近物體的存在。傳感器組件814還可以包括光傳感器,如cmos或ccd圖像傳感器,用于在成像應(yīng)用中使用。在一些實施例中,該傳感器組件814還可以包括加速度傳感器,陀螺儀傳感器,磁傳感器,壓力傳感器或溫度傳感器。
通信組件816被配置為便于終端設(shè)備800和其他設(shè)備之間有線或無線方式的通信。終端設(shè)備800可以接入基于通信標(biāo)準(zhǔn)的無線網(wǎng)絡(luò),如wifi,2g或3g,或它們的組合。在一個示例性實施例中,通信組件816經(jīng)由廣播信道接收來自外部廣播管理系統(tǒng)的廣播信號或廣播相關(guān)信息。在一個示例性實施例中,所述通信組件816還包括近場通信(nfc)模塊,以促進短程通信。例如,在nfc模塊可基于射頻識別(rfid)技術(shù),紅外數(shù)據(jù)協(xié)會(irda)技術(shù),超寬帶(uwb)技術(shù),藍牙(bt)技術(shù)和其他技術(shù)來實現(xiàn)。
在示例性實施例中,終端設(shè)備800可以被一個或多個應(yīng)用專用集成電路(asic)、數(shù)字信號處理器(dsp)、數(shù)字信號處理設(shè)備(dspd)、可編程邏輯器件(pld)、現(xiàn)場可編程門陣列(fpga)、控制器、微控制器、微處理器或其他電子元件實現(xiàn),用于執(zhí)行上述方法。
在示例性實施例中,還提供了一種包括指令的非臨時性計算機可讀存儲介質(zhì),例如包括指令的存儲器804,上述指令可由終端設(shè)備800的處理器820執(zhí)行以完成上述方法。例如,所述非臨時性計算機可讀存儲介質(zhì)可以是rom、隨機存取存儲器(ram)、cd-rom、磁帶、軟盤和光數(shù)據(jù)存儲設(shè)備等。
一種非臨時性計算機可讀存儲介質(zhì),當(dāng)所述存儲介質(zhì)中的指令由移動終端的處理器執(zhí)行時,使得移動終端能夠執(zhí)行一種應(yīng)用于分布式文件系統(tǒng)的日志重演方法,所述方法包括:
根據(jù)編輯日志中各記錄的文件標(biāo)識,將各記錄分為至少一類記錄,其中,每一類記錄為具有依賴關(guān)系的記錄;
根據(jù)劃分出的記錄的類數(shù),確定用于日志重演的線程數(shù)量;
采用確定出的線程數(shù)量的各線程,對與各線程一一對應(yīng)的各類記錄進行日志重演。
本領(lǐng)域技術(shù)人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本發(fā)明的其它實施方案。本申請旨在涵蓋本發(fā)明的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本發(fā)明的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本發(fā)明的真正范圍和精神由下面的權(quán)利要求指出。
應(yīng)當(dāng)理解的是,本發(fā)明并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進行各種修改和改變。本發(fā)明的范圍僅由所附的權(quán)利要求來限制。