Ext文件系統(tǒng)的超級塊修復(fù)方法和裝置、智能設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本公開涉及智能終端技術(shù),特別涉及一種ext文件系統(tǒng)的超級塊修復(fù)方法和裝置、智能設(shè)備。
【背景技術(shù)】
[0002]EXT文件系統(tǒng)是常用的用于管理文件的系統(tǒng),例如,Android手機(jī)的分區(qū)的文件管理就是使用EXT文件系統(tǒng)。該文件系統(tǒng)包括多個系統(tǒng)版本,例如,EXT2、EXT3和EXT4等,通過索引節(jié)點inode和數(shù)據(jù)塊block來進(jìn)行對文件的管理。在文件系統(tǒng)中,存在“超級塊”(Superblock),該超級塊中記錄了文件系統(tǒng)的全局信息,比如數(shù)據(jù)塊的數(shù)量、索引節(jié)點的數(shù)量、數(shù)據(jù)庫的大小等,對文件數(shù)據(jù)的讀寫操作,需要根據(jù)超級塊的信息實現(xiàn)。
【發(fā)明內(nèi)容】
[0003]本公開提供一種ext文件系統(tǒng)的超級塊修復(fù)方法和裝置、智能設(shè)備,以在超級塊損壞時自動修復(fù)超級塊,避免無法通過文件系統(tǒng)讀取文件。
[0004]根據(jù)本公開實施例的第一方面,提供一種ext文件系統(tǒng)的超級塊修復(fù)方法,包括:
[0005]獲取文件系統(tǒng)中的備份超級塊;
[0006]讀取所述備份超級塊的數(shù)據(jù),寫入待修復(fù)的所述主超級塊。
[0007]可選的,所述獲取文件系統(tǒng)中的備份超級塊,包括:遍歷所述文件系統(tǒng),由所述文件系統(tǒng)中的至少一個備份超級塊中,選擇其中一個備份超級塊,確定為待讀取數(shù)據(jù)的目標(biāo)備份超級塊。通過該方式可以得到用戶修復(fù)超級塊的備份超級塊,以備從該備份超級塊中讀取數(shù)據(jù)。
[0008]可選的,所述遍歷所述文件系統(tǒng),由所述文件系統(tǒng)中的至少一個備份超級塊中,選擇其中一個備份超級塊,確定為待讀取數(shù)據(jù)的目標(biāo)備份超級塊,包括:遍歷所述文件系統(tǒng),得到所述文件系統(tǒng)中的至少一個備份超級塊的塊號;根據(jù)所述塊號,逐個讀取所述至少一個備份超級塊的數(shù)據(jù);當(dāng)?shù)玫絤agic值等于0xEF53的第一個備份超級塊時,確定所述備份超級塊為所述目標(biāo)備份超級塊,停止繼續(xù)讀取剩余未讀取的備份超級塊。通過該方式可以節(jié)省系統(tǒng)的處理資源,盡快結(jié)束對備份超級塊的查找。
[0009]可選的,在所述獲取文件系統(tǒng)中的備份超級塊之前,還包括:讀取所述主超級塊中的magic值,并判斷所述magic值是否等于0xEF53 ;在所述magic值不等于0xEF53時,確定所述主超級塊故障。通過該方式可以有效的對超級塊是否故障進(jìn)行判定。
[0010]可選的,在所述獲取文件系統(tǒng)中的備份超級塊之前,還包括:卸載所述文件系統(tǒng)所在的分區(qū);將所述分區(qū)的數(shù)據(jù)進(jìn)行備份。通過該方式可以提高對文件系統(tǒng)數(shù)據(jù)的可靠性保障,防止在修復(fù)超級塊的過程中造成數(shù)據(jù)損壞。
[0011]根據(jù)本公開實施例的第二方面,提供一種ext文件系統(tǒng)的超級塊修復(fù)裝置,包括:
[0012]備份確定模塊,用于獲取文件系統(tǒng)中的備份超級塊;
[0013]數(shù)據(jù)修復(fù)模塊,用于讀取所述備份超級塊的數(shù)據(jù),寫入待修復(fù)的所述主超級塊。
[0014]可選的,所述備份確定模塊,用于遍歷所述文件系統(tǒng),由所述文件系統(tǒng)中的至少一個備份超級塊中,選擇其中一個備份超級塊,確定為待讀取數(shù)據(jù)的目標(biāo)備份超級塊。
[0015]可選的,所述備份確定模塊包括:遍歷子模塊,用于遍歷所述文件系統(tǒng),得到所述文件系統(tǒng)中的至少一個備份超級塊的塊號;確定子模塊,用于根據(jù)所述塊號,逐個讀取所述至少一個備份超級塊的數(shù)據(jù);當(dāng)?shù)玫絤agic值等于0xEF53的第一個備份超級塊時,確定所述備份超級塊為所述目標(biāo)備份超級塊,停止繼續(xù)讀取剩余未讀取的備份超級塊。
[0016]可選的,所述裝置還包括:故障判斷模塊,用于在所述備份確定模塊獲取文件系統(tǒng)中的備份超級塊之前,讀取所述主超級塊中的magic值,并判斷所述magic值是否等于0xEF53 ;在所述magic值不等于0xEF53時,確定所述主超級塊故障。
[0017]可選的,所述裝置還包括:數(shù)據(jù)備份模塊,用于卸載所述文件系統(tǒng)所在的分區(qū);將所述分區(qū)的數(shù)據(jù)進(jìn)行備份。
[0018]根據(jù)本公開實施例的第三方面,提供一種智能設(shè)備,包括:
[0019]處理器;
[0020]用于存儲處理器可執(zhí)行指令的存儲器;
[0021]其中,所述處理器被配置為:獲取文件系統(tǒng)中的備份超級塊;讀取所述備份超級塊的數(shù)據(jù),寫入待修復(fù)的所述主超級塊。
[0022]本公開的實施例提供的技術(shù)方案可以包括以下有益效果:通過從文件系統(tǒng)中獲取備份超級塊,并利用該備份超級塊的數(shù)據(jù)進(jìn)行主超級塊的修復(fù),使得在超級塊損壞時能夠自動修復(fù)超級塊,避免無法通過文件系統(tǒng)讀取文件。
[0023]應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
【附圖說明】
[0024]此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實施例,并與說明書一起用于解釋本公開的原理。
[0025]圖1是根據(jù)一示例性實施例示出的一種EXT文件系統(tǒng)的結(jié)構(gòu);
[0026]圖2是根據(jù)一示例性實施例示出的一種ext文件系統(tǒng)的超級塊修復(fù)方法的流程圖;
[0027]圖3是根據(jù)一示例性實施例示出的另一種ext文件系統(tǒng)的超級塊修復(fù)方法的流程圖;
[0028]圖4是根據(jù)一示例性實施例示出的又一種ext文件系統(tǒng)的超級塊修復(fù)方法的流程圖;
[0029]圖5是根據(jù)一示例性實施例示出的一種ext文件系統(tǒng)的超級塊修復(fù)裝置的結(jié)構(gòu)圖;
[0030]圖6是根據(jù)一示例性實施例示出的另一種ext文件系統(tǒng)的超級塊修復(fù)裝置的結(jié)構(gòu)圖;
[0031]圖7是根據(jù)一示例性實施例示出的一種智能設(shè)備的框圖。
【具體實施方式】
[0032]這里將詳細(xì)地對示例性實施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本公開相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本公開的一些方面相一致的裝置和方法的例子。
[0033]EXT文件系統(tǒng)是常用的用于管理文件的系統(tǒng),例如,Android手機(jī)中可以包括多個分區(qū),如用于存放應(yīng)用程序的DATA分區(qū)、用于存放底層應(yīng)用、硬件驅(qū)動等的SYSTEM分區(qū)等。各個分區(qū)都可以通過一個文件系統(tǒng)來管理該分區(qū)的文件,例如,本公開中使用EXT文件系統(tǒng)進(jìn)行文件管理。
[0034]參見圖1的示例,簡單示例了一個EXT文件系統(tǒng)的結(jié)構(gòu),可以包括多個塊組(BlockGroup),例如圖1中的塊組O、塊組1、塊組2等,每個塊組中可以包括多個數(shù)據(jù)塊block,可以用于存儲文件的數(shù)據(jù)。其中,在圖1中,僅示出了塊組中包括的超級塊,未示出塊組中包括的其他信息。
[0035]例如,在塊組O中包括主超級塊(Primary Superblock),該主超級塊中可以包括該文件系統(tǒng)的全局信息,比如,文件系統(tǒng)中的每個數(shù)據(jù)塊(block)的大小,每個塊組有多少個數(shù)據(jù)塊等。在讀寫文件系統(tǒng)的文件時,需要用到該主超級塊,比如,將主超級塊的信息讀取到內(nèi)存,根據(jù)主超級塊中的超級塊的大小等信息進(jìn)行文件讀取。
[0036]基于上述,超級塊的信息很重要,如果主超級塊發(fā)生損壞,那么將導(dǎo)致文件系統(tǒng)故障,無法正常的讀取文件系統(tǒng)所在的分區(qū)的文件數(shù)據(jù)。因此,在文件系統(tǒng)中,還存儲有備份超級塊(Backup Superblock),例如圖1中所示的,塊組I中的備份超級塊11、以及塊組2中的備份超級塊22等。
[0037]本公開的ext文件系統(tǒng)的超級塊修復(fù)方法,提供了一種在主超級塊損壞時(例如,Android手機(jī)出現(xiàn)宕機(jī)事故造成超級塊損壞)能夠自動修復(fù)主超級塊的方法,以盡快修復(fù)主超級塊,使得文件系統(tǒng)恢復(fù)正常。如圖2所示,該方法可以包括如下步驟:
[0038]在步驟201中,獲取文件系統(tǒng)中的備份超級塊。
[0039]在步驟202中,讀取備份超級塊的數(shù)據(jù),寫入待修復(fù)的主超級塊。
[0040]在圖2所示的流程中,也就是要將文件系統(tǒng)中的備份超級塊中的數(shù)據(jù),用于修復(fù)主超級塊,寫入主超級塊中。其中,當(dāng)文件系統(tǒng)中包括多個備份超級塊時,可以讀取任一備份超級塊的數(shù)據(jù)。通