專利名稱:一種提高ext文件系統(tǒng)穩(wěn)定性的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種實現(xiàn)嵌入式文件系統(tǒng)的優(yōu)化的軟件機(jī)制方法,具體涉及一種提高ext文件系統(tǒng)穩(wěn)定性的方法。
背景技術(shù):
在這個高速發(fā)展的社會,人們的需求也越來越高,目前視頻領(lǐng)域都朝高清方向發(fā)展,雖然視頻編碼壓縮比例有優(yōu)化,但是文件不可避免得越來越大,這樣必須借助硬盤存儲;這樣導(dǎo)致各種機(jī)頂盒、工控機(jī)等對文件系統(tǒng)的可靠性要求越來越高。目前采用操作系統(tǒng)還是Iinux操作系統(tǒng),采用的文件系統(tǒng)一般是ext文件系統(tǒng) ,如EXT2、EXT3、EXT4,其中EXT2沒有日志功能,EXT3和EXT4具有日志功能。然而,硬盤在長期的使用過程中,經(jīng)常會出現(xiàn)文件系統(tǒng)崩潰、文件丟失、文件錯誤等情況,故障的表現(xiàn)形式各不相同,對于存儲著重要數(shù)據(jù)的硬盤而言,則表現(xiàn)為必須重做硬盤或者人為恢復(fù)硬盤數(shù)據(jù),這嚴(yán)重影響了產(chǎn)品質(zhì)量的可靠性。造成的原因很多,最常見的一種情況則是系統(tǒng)異常斷電導(dǎo)致,尤其是在寫數(shù)據(jù)的情況下斷電則更危險。相對于硬盤讀盤速度而言,硬盤的文件系統(tǒng)的穩(wěn)定性顯得更加重要。或者說,穩(wěn)定的文件系統(tǒng)性能是文件可讀寫的前提。硬盤是固定存儲設(shè)備,通常情況下在嵌入式系統(tǒng)上沒有任何保護(hù),因此在多次使用過程中,難免會出現(xiàn)文件系統(tǒng)崩潰、數(shù)據(jù)丟失等現(xiàn)象,這些毛病都會影響數(shù)據(jù)的讀取,從而影響整個產(chǎn)品的使用。出現(xiàn)的主要問題1)文件系統(tǒng)崩潰,所有數(shù)據(jù)丟失;2)刪除的文件斷電后會再次出現(xiàn);3)創(chuàng)建的文件斷電后又消失;4)部分文件丟失,input/output error 問題。文件系統(tǒng)的穩(wěn)定性可以從軟件和硬件兩個方面進(jìn)行改進(jìn)。硬件上常用的方法是加上UPS或者采用單片機(jī),這種技術(shù)還不是很成熟,UPS的作用是將系統(tǒng)斷電之前提醒用戶安全關(guān)機(jī)備份數(shù)據(jù),單片機(jī)的作用是在斷電之前,通過電容延時關(guān)機(jī),同時通知主板安全關(guān)機(jī)備份數(shù)據(jù),這兩種方法成本都較高。軟件上有的是采用從應(yīng)用程序?qū)哟螌τ脖P數(shù)據(jù)進(jìn)行雙機(jī)備份,有的則是采用私有文件系統(tǒng),通過一定的校驗機(jī)制進(jìn)行處理?;蛘呓柚谌焦ぞ?,如fSCk、e2fSCk等,對文件系統(tǒng)進(jìn)行自檢和修復(fù)。但這種工具對文件系統(tǒng)會造成一定的破壞,且修復(fù)時間很長?,F(xiàn)有技術(shù)在掛載磁盤分區(qū)只進(jìn)行一次嘗試,缺乏相應(yīng)的容錯處理機(jī)制從而導(dǎo)致磁盤文件系統(tǒng)的穩(wěn)定性很差;此外,目前基于目前的EXT的磁盤文件系統(tǒng)由于異常斷電等原因?qū)е碌奈募到y(tǒng)崩潰,所有數(shù)據(jù)丟失;刪除的文件斷電后會再次出現(xiàn);創(chuàng)建的文件斷電后又消失;部分文件丟失,輸入輸出等問題也頻頻發(fā)生。
發(fā)明內(nèi)容
本發(fā)明的目的在于,為克服上述問題,從而提供一種提高ext文件系統(tǒng)穩(wěn)定性的方法。為實現(xiàn)上述目的,本發(fā)明提供一種提高ext文件系統(tǒng)穩(wěn)定性的方法,該方法在磁盤驅(qū)動過程中提高ext文件系統(tǒng)的穩(wěn)定性,所述方法包含如下步驟步驟1,周期性或卸載磁盤時在該磁盤中備份磁盤文件系統(tǒng)的信息。步驟2,當(dāng)掛載磁盤分區(qū)時,如果掛載過程失敗,依據(jù)備份的信息,再一次嘗試掛載,如果再次失敗,則退出掛載流程;其中,所述文件系統(tǒng)的信息包含超級塊、組塊和root節(jié)點信息。優(yōu)化的,所述方法還包含對磁盤文件進(jìn)行讀寫操作時的同步處理步驟??蛇x的,所述同步處理步驟為對ext文件系統(tǒng)進(jìn)行讀寫操作時,實時將內(nèi)存緩沖 區(qū)中讀寫請求發(fā)給存儲媒介,即將所有存放在緩存區(qū)中未寫的數(shù)據(jù)發(fā)送到設(shè)備驅(qū)動程序,進(jìn)而發(fā)送到存儲設(shè)備,完成同步操作;其中,所述讀寫操作包含創(chuàng)建文件、刪除文件、創(chuàng)建目錄、刪除目錄、創(chuàng)建鏈接、刪除鏈接、文件重命名和目錄重命名、軟連接、硬鏈接或?qū)懳募?。進(jìn)一步優(yōu)化的,如果所述磁盤文件系統(tǒng)為日志文件系統(tǒng)時,所述同步處理還包含日志同步,即實時將存放在緩沖區(qū)中的日志信息同步到存儲媒介;且所述文件系統(tǒng)的信息還包含日志節(jié)點信息。上述技術(shù)方案中,所述步驟2進(jìn)一步包含如下步驟步驟2-1,讀取第零個塊組的超級塊,讀取成功,進(jìn)入下一步;否則從磁盤分區(qū)讀取備份超級塊信息,讀取失敗退出掛載流程;若讀取備份超級塊成功,將備份超級塊恢復(fù)到第零個塊組的超級塊位置,重新讀取第零個塊組的超級塊,讀取成功,進(jìn)入下一步,否則退出掛載流程;步驟2-2,讀取第零個塊組的組描述符,讀取成功進(jìn)入下一步;如果失敗讀取備份組描述符信息,讀取失敗退出掛載流程;成功則將備份組描述符恢復(fù)到第零個塊組內(nèi),并重新讀取第零個塊組的組描述符,讀取成功進(jìn)入下一步,否則退出掛載流程;步驟2-3,讀取第零個塊組的root節(jié)點信息,如果成功進(jìn)入下一步;否則判斷存在備份root節(jié)點信息,不存在則退出掛載流程;若存在,則將備份root節(jié)點信息恢復(fù)到第零個塊組的相應(yīng)root節(jié)點信息位置;讀取第零個塊組的root節(jié)點信息,讀取成功進(jìn)入下一步,否則退出掛載流程。優(yōu)化的,如果文件系統(tǒng)是日志文件系統(tǒng),則在上述步驟2-2和步驟2-3之間,進(jìn)一步包含如下步驟讀取第零個塊組的日志節(jié)點信息,如果成功進(jìn)入下一步;如果失敗,判斷是否存在備份日志節(jié)點信息,不存在退出;存在則將備份日志節(jié)點信息恢復(fù)到第零個塊組內(nèi),讀取第零個塊組的日志節(jié)點信息,讀取成功進(jìn)入下一步,否則退出掛載流程。上述技術(shù)方案中,所述超級塊信息、組描述信息、root節(jié)點信息的備份在磁盤的預(yù)留空間中。本發(fā)明的優(yōu)點在于,為了提高磁盤文件系統(tǒng)的穩(wěn)定性,相對于現(xiàn)有技術(shù)采用的硬件上策略,成本低,實現(xiàn)簡單,時間短;而相對于其它從軟件上解決的方法,本發(fā)明不需要專門編寫新的應(yīng)用程序,機(jī)制簡單,不需要復(fù)雜的校驗機(jī)制,只需要在原有磁盤驅(qū)動程序的基礎(chǔ)上稍作調(diào)整就可以提高磁盤文件系統(tǒng)的穩(wěn)定性;同時,也具有更大通用性,可以應(yīng)用在不同的平臺上(包含ext2和ext3、ext4);該機(jī)制大大降低了開發(fā)的難度。綜上所述,本發(fā)明提供了優(yōu)化ext文件系統(tǒng)的實現(xiàn)方法,包括文件系統(tǒng)重要數(shù)據(jù)備份機(jī)制,磁盤崩潰時也可以正常掛載,及對文件系統(tǒng)的1/0操作及時更新到磁盤中,保證了磁盤中數(shù)據(jù)的最新,并影響磁盤1/0性能很小,提供了提高嵌入式文件系統(tǒng)的穩(wěn)定性的完整方案。克服了現(xiàn)有EXT文件系統(tǒng)容易出現(xiàn)文件系統(tǒng)崩潰,文件丟失,數(shù)據(jù)損壞現(xiàn)象,實現(xiàn)文件系統(tǒng)穩(wěn)定,從驅(qū)動程序這個軟件層次提高Ext文件系統(tǒng)穩(wěn)定性的方案。
圖I是本發(fā)明linux ext3文件系統(tǒng)掛載硬盤的流程容錯處理流程圖;圖2是本發(fā)明linux ext3文件系統(tǒng)I/O操作及同步操作的流程;圖3是本發(fā)明linux ext3文件系統(tǒng)卸載硬盤的流程及備份重要數(shù)據(jù)的處理的流程圖。
具體實施例方式下面結(jié)合附圖和具體實施例對本發(fā)明作進(jìn)一步詳細(xì)描述 本發(fā)明提供一種實現(xiàn)ext文件系統(tǒng)優(yōu)化的方法,包括如下步驟I)掛載磁盤分區(qū)時,若能夠正常掛載,則返回掛載成功,退出掛載流程;若第一次掛載失敗,則從備份區(qū)域恢復(fù)超級塊、組塊信息、root節(jié)點信息和日志節(jié)點信息,再進(jìn)行掛載,掛載成功,退出掛載流程,返回掛載成功;否則返回掛載失敗,停止再次掛載嘗試;2)對文件的I/O操作加入同步處理操作;3)定時或卸載硬盤時備份超級塊、組塊信息、root節(jié)點信息、日志節(jié)點信息,該步驟是為所述步驟I)在第一次掛失敗時進(jìn)行重新掛載嘗試所需的信息。上述方案中,所述步驟I)和步驟3)是有必然聯(lián)系的。在步驟3)中進(jìn)行備份操作,才能夠在步驟I)中,出現(xiàn)錯誤時,進(jìn)行復(fù)原。本實施例提供的提高ext文件系統(tǒng)穩(wěn)定性的實現(xiàn)方法,包括掛載磁盤分區(qū)過程中的容錯處理機(jī)制,該機(jī)制又進(jìn)一步基于對定時或卸載磁盤時,對磁盤超級塊等信息進(jìn)行備份處理策略;對磁盤文件進(jìn)行讀寫操作時的同步處理機(jī)制。對于ext文件系統(tǒng)來說,硬盤分區(qū)被劃分為一個個的block,一個ext文件系統(tǒng)上的每個block都是一樣大小的,但是對于不同的ext文件系統(tǒng),block的大小可以有區(qū)別。典型的block大小是1024bytes或者4096bytes。這個大小在創(chuàng)建ext文件系統(tǒng)的時候被決定,它可以由系統(tǒng)管理員指定,也可以由文件系統(tǒng)的創(chuàng)建程序根據(jù)硬盤分區(qū)的大小,自動選擇一個較合理的值。分區(qū)開始的1024bytes存放引導(dǎo)程序boot,接下來的1024bytes存放超級塊(super block),組描述字(group descriptors)起始于一個新塊,并單獨占用一個塊空間,和之后的所有塊被組織成塊組,塊組才是真正存放文件的場所。超級塊(superblock)含有整個文件系統(tǒng)的一些全局參數(shù),如卷名、全局唯一標(biāo)識符、狀態(tài)、塊大小、總塊數(shù)、每組inode數(shù),總i節(jié)點數(shù)、每組塊數(shù)等等,super block在文件mount時被讀入內(nèi)存,直到umount時被釋放,超級塊對于文件系統(tǒng)來說至關(guān)重要。詳見以下表格
權(quán)利要求
1.一種提高ext文件系統(tǒng)穩(wěn)定性的方法,該方法在磁盤驅(qū)動過程中提高ext文件系統(tǒng)的穩(wěn)定性,所述方法包含如下步驟 步驟1,周期性或卸載磁盤時在該磁盤中備份磁盤文件系統(tǒng)的信息; 步驟2,當(dāng)掛載磁盤分區(qū)時,如果掛載過程失敗,依據(jù)備份的信息,再一次嘗試掛載,如果再次失敗,則退出掛載流程;其中,所述文件系統(tǒng)的信息包含超級塊、組塊和root節(jié)點信息。
2.根據(jù)權(quán)利要求I所述的提高ext文件系統(tǒng)穩(wěn)定性的方法,其特征在于,所述方法還包含對磁盤文件進(jìn)行讀寫操作時的同步處理步驟。
3.根據(jù)權(quán)利要求2所述的提高ext文件系統(tǒng)穩(wěn)定性的方法,其特征在于,所述同步處理步驟為對ext文件系統(tǒng)進(jìn)行讀寫操作時,實時將內(nèi)存緩沖區(qū)中讀寫請求發(fā)給存儲媒介,即將所有存放在緩存區(qū)中未寫的數(shù)據(jù)發(fā)送到設(shè)備驅(qū)動程序,進(jìn)而發(fā)送到存儲設(shè)備,完成同步操作; 其中,所述讀寫操作包含創(chuàng)建文件、刪除文件、創(chuàng)建目錄、刪除目錄、創(chuàng)建鏈接、刪除鏈接、文件重命名和目錄重命名、軟連接、硬鏈接或?qū)懳募?br>
4.根據(jù)權(quán)利要求2或3所述的提高ext文件系統(tǒng)穩(wěn)定性的方法,其特征在于,如果所述磁盤文件系統(tǒng)為日志文件系統(tǒng)時,所述同步處理還包含日志同步,即實時將存放在緩沖區(qū)中的日志信息同步到存儲媒介。
5.根據(jù)權(quán)利要求1、2或3所述的提高ext文件系統(tǒng)穩(wěn)定性的方法,其特征在于,如果所述磁盤文件系統(tǒng)為日志文件系統(tǒng),所述文件系統(tǒng)的信息還包含日志節(jié)點信息。
6.根據(jù)權(quán)利要求1、2或3所述的提高ext文件系統(tǒng)穩(wěn)定性的方法,其特征在于,所述步驟2進(jìn)一步包含如下步驟 步驟2-1,讀取第零個塊組的超級塊,讀取成功,進(jìn)入下一步;否則從磁盤分區(qū)讀取備份超級塊信息,讀取失敗退出掛載流程;若讀取備份超級塊成功,將備份超級塊恢復(fù)到第零個塊組的超級塊位置,重新讀取第零個塊組的超級塊,讀取成功,進(jìn)入下一步,否則退出掛載流程; 步驟2-2,讀取第零個塊組的組描述符,驗證成功進(jìn)入下一步;如果失敗讀取備份組描述符信息,讀取失敗退出掛載流程;成功則將備份組描述符恢復(fù)到第零個塊組內(nèi),并重新讀取第零個塊組的組描述符,讀取成功進(jìn)入下一步,否則退出掛載流程; 步驟2-3,讀取第零個塊組的root節(jié)點信息,如果成功進(jìn)入下一步;否則判斷備份標(biāo)識,看備份root節(jié)點信息是否存在,,不存在則退出掛載流程;若存在,則將備份root節(jié)點信息恢復(fù)到第零個塊組的相應(yīng)root節(jié)點信息位置;讀取第零個塊組的root節(jié)點信息,讀取成功進(jìn)入下一步,否則退出掛載流程。
7.根據(jù)權(quán)利要求6所述的提高ext文件系統(tǒng)穩(wěn)定性的方法,其特征在于,如果文件系統(tǒng)是日志文件系統(tǒng),則在上述步驟2-2和步驟2-3之間,進(jìn)一步包含如下步驟 讀取第零個塊組的日志節(jié)點信息,如果成功進(jìn)入下一步;如果失敗,判斷備份標(biāo)識,看備份日志節(jié)點信息是否存在,不存在退出;存在則將備份日志節(jié)點信息恢復(fù)到第零個塊組內(nèi),讀取第零個塊組的日志節(jié)點信息,讀取成功進(jìn)入下一步,否則退出掛載流程。
8.根據(jù)權(quán)利要求1、2、3或7所述的提高ext文件系統(tǒng)穩(wěn)定性的方法,其特征在于,所述超級塊信息、組描述信息、root節(jié)點信息的備份在磁盤的預(yù)留空間中。
全文摘要
本發(fā)明提供了一種提高ext文件系統(tǒng)穩(wěn)定性的方法,該方法在磁盤驅(qū)動過程中提高ext文件系統(tǒng)的穩(wěn)定性,所述方法包含如下步驟周期性或卸載磁盤時在該磁盤中備份磁盤文件系統(tǒng)的信息;當(dāng)掛載磁盤分區(qū)時,如果掛載過程失敗,依據(jù)備份的信息,再一次嘗試掛載,如果再次失敗,則結(jié)束掛載流程;其中,所述文件系統(tǒng)的信息包含超級塊、組塊和root節(jié)點信息。所述方法還包含對磁盤文件進(jìn)行讀寫操作時的同步處理步驟。所述同步處理步驟為對磁盤文件系統(tǒng)進(jìn)行讀寫操作時,實時將內(nèi)存緩沖區(qū)中讀寫請求發(fā)給存儲媒介,即將所有存放在緩存區(qū)中未寫的數(shù)據(jù)發(fā)送到設(shè)備驅(qū)動程序,進(jìn)而發(fā)送到存儲設(shè)備,完成同步操作;其中,讀寫操作包含創(chuàng)建文件或刪除文件等。
文檔編號G06F17/30GK102955720SQ20111024722
公開日2013年3月6日 申請日期2011年8月25日 優(yōu)先權(quán)日2011年8月25日
發(fā)明者齊向東, 胡建良, 姜京梅, 潘梁, 邱延萍 申請人:北京中科智網(wǎng)科技有限公司