欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

延遲驗(yàn)證數(shù)據(jù)完整性的文件系統(tǒng)的制作方法

文檔序號(hào):6559659閱讀:229來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):延遲驗(yàn)證數(shù)據(jù)完整性的文件系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明大體涉及在計(jì)算機(jī)、嵌入式控制器等中使用的文件系統(tǒng)。更具體地,本發(fā)明涉及基于事務(wù)的文件系統(tǒng),其中在文件系統(tǒng)啟動(dòng)過(guò)程中對(duì)文件系統(tǒng)的特定部分的完整性進(jìn)行驗(yàn)證,但延遲對(duì)文件系統(tǒng)的其它部分的完整性的驗(yàn)證。
背景技術(shù)
計(jì)算機(jī)、嵌入式控制器和基于其它微處理器的系統(tǒng)通常由各種不同硬件組件構(gòu)成。硬件組件可包括處理器、I/O裝置、人機(jī)接口裝置等等。另外,這樣的系統(tǒng)使用內(nèi)存存儲(chǔ)單元以保持系統(tǒng)中使用的數(shù)據(jù)。內(nèi)存存儲(chǔ)單元可具有各種不同形式,包括但不限于硬盤(pán)驅(qū)動(dòng)器、軟盤(pán)驅(qū)動(dòng)器、隨機(jī)存取存儲(chǔ)器、閃存等等。
這樣的系統(tǒng)中執(zhí)行的高級(jí)應(yīng)用程序必須經(jīng)常與包括內(nèi)存存儲(chǔ)單元的這些硬件組件無(wú)縫地相互作用。為了該目的,許多系統(tǒng)運(yùn)行擔(dān)當(dāng)應(yīng)用程序與系統(tǒng)硬件之間接口的操作系統(tǒng)??砂ㄎ募到y(tǒng)軟件作為操作系統(tǒng)的一部分,或可提供它作為與操作系統(tǒng)相互作用的輔助軟件組件。在任一情況下,文件系統(tǒng)軟件對(duì)內(nèi)存存儲(chǔ)單元內(nèi)的數(shù)據(jù)進(jìn)行組織,用于處理器和處理器執(zhí)行的高級(jí)應(yīng)用程序的即時(shí)訪(fǎng)問(wèn)。
由于實(shí)現(xiàn)文件系統(tǒng)有許多方式,因此存在許多不同文件系統(tǒng)分類(lèi)。例如,基于事務(wù)的文件系統(tǒng)是一個(gè)這樣的系統(tǒng),文件系統(tǒng)總保持一致性,由于對(duì)文件系統(tǒng)結(jié)構(gòu)和數(shù)據(jù)的所有更新都被作為事務(wù)記錄在事務(wù)文件中。更具體地,對(duì)文件系統(tǒng)做的所有更新都作為事務(wù)在事務(wù)文件中做出,通過(guò)成功應(yīng)用已提交的所有事務(wù)動(dòng)態(tài)地重構(gòu)文件系統(tǒng)的內(nèi)容。
事務(wù)文件中的事務(wù)或已提交或還未完成。例如,如果文件系統(tǒng)的操作中斷,如由于停電,則可通過(guò)查閱事務(wù)文件的內(nèi)容來(lái)恢復(fù)文件系統(tǒng)的狀態(tài)。文件系統(tǒng)使用任何提交的事務(wù),未完成的任何事務(wù)被重新運(yùn)行,在試圖更新之前將文件系統(tǒng)恢復(fù)到原來(lái)的狀態(tài)。
恢復(fù)文件系統(tǒng)到一致?tīng)顟B(tài)要求文件系統(tǒng)軟件執(zhí)行預(yù)定啟動(dòng)處理。在典型的啟動(dòng)處理中,存儲(chǔ)在事務(wù)文件中的每個(gè)事務(wù)的完整性在其成為文件系統(tǒng)的一部分之前完成驗(yàn)證。另外的文件系統(tǒng)操作也可在啟動(dòng)處理中執(zhí)行。然而,文件系統(tǒng)中斷之后執(zhí)行事務(wù)驗(yàn)證與其它的文件系統(tǒng)操作的傳統(tǒng)方式通常是不合標(biāo)準(zhǔn)的,因?yàn)檫@些操作在時(shí)間、處理和資源上是高強(qiáng)度的。

發(fā)明內(nèi)容
公開(kāi)了一種在實(shí)現(xiàn)基于事務(wù)的文件系統(tǒng)中所使用的計(jì)算機(jī)系統(tǒng)。該計(jì)算機(jī)系統(tǒng)包括處理器、處理器可訪(fǎng)問(wèn)的隨機(jī)存取存儲(chǔ)器和處理器同樣可訪(fǎng)問(wèn)的持久性數(shù)據(jù)存儲(chǔ)裝置。該計(jì)算機(jī)系統(tǒng)還包括文件系統(tǒng)軟件。該文件系統(tǒng)軟件由處理器執(zhí)行,并且工作以管理存儲(chǔ)在持久性數(shù)據(jù)存儲(chǔ)裝置中的文件的文件數(shù)據(jù)和文件系統(tǒng)結(jié)構(gòu)。此外,文件系統(tǒng)軟件保持包括多條事務(wù)記錄的事務(wù)文件。每條事務(wù)記錄具有標(biāo)頭部分和數(shù)據(jù)部分。每條事務(wù)記錄的標(biāo)頭部分包括一個(gè)或多個(gè)字段,指定其以存儲(chǔ)與事務(wù)記錄所表示的文件事務(wù)對(duì)應(yīng)的信息。如果文件系統(tǒng)軟件的操作中斷,則文件系統(tǒng)軟件利用啟動(dòng)處理繼續(xù)其執(zhí)行,其中在隨機(jī)存取存儲(chǔ)器中生成重構(gòu)文件系統(tǒng)。在系統(tǒng)重啟過(guò)程中,當(dāng)事務(wù)記錄滿(mǎn)足一個(gè)或多個(gè)預(yù)定標(biāo)準(zhǔn)時(shí),則啟動(dòng)處理跳過(guò)對(duì)事務(wù)記錄的數(shù)據(jù)部分的驗(yàn)證。可選地,延遲數(shù)據(jù)部分的驗(yàn)證直到文件系統(tǒng)啟動(dòng)處理已完成后的一段時(shí)間。例如,假定文件存取在文件系統(tǒng)啟動(dòng)處理完成后發(fā)生,文件系統(tǒng)軟件可在給定文件的首次或后續(xù)存取時(shí),驗(yàn)證表示給定文件的每個(gè)事務(wù)記錄的先前未驗(yàn)證的數(shù)據(jù)部分。
在一個(gè)示例中,文件系統(tǒng)啟動(dòng)處理可對(duì)僅影響文件數(shù)據(jù)的事務(wù)記錄和影響文件系統(tǒng)的元數(shù)據(jù)的事務(wù)記錄加以區(qū)別。當(dāng)在啟動(dòng)處理中發(fā)現(xiàn)事務(wù)時(shí),文件系統(tǒng)軟件可識(shí)別事務(wù)是否影響文件數(shù)據(jù)或元數(shù)據(jù)。由于僅要求元數(shù)據(jù)來(lái)確保文件系統(tǒng)在啟動(dòng)后處于一致?tīng)顟B(tài),所以可選擇與元數(shù)據(jù)有關(guān)的事務(wù)記錄作為屬于完成驗(yàn)證的事務(wù)記錄的僅有子集。例如,其它事務(wù)記錄的驗(yàn)證可限于校驗(yàn)包含在每個(gè)剩余事務(wù)記錄的標(biāo)頭部分中的信息。一旦文件系統(tǒng)啟動(dòng)處理已完成,即可在對(duì)應(yīng)文件的首次或后續(xù)存取后驗(yàn)證任何先前的未驗(yàn)證事務(wù)記錄或事務(wù)記錄部分。
例如,事務(wù)文件可存儲(chǔ)在閃存中。在這樣的情況下,可進(jìn)一步促進(jìn)啟動(dòng)處理。例如,啟動(dòng)處理可將其標(biāo)頭信息驗(yàn)證限制于閃存裝置的相同塊中的事務(wù)記錄序列的第一事務(wù)記錄。該序列的隨后事務(wù)記錄的標(biāo)頭或數(shù)據(jù)部分在啟動(dòng)過(guò)程中都沒(méi)有得到驗(yàn)證,假如有的話(huà),啟動(dòng)處理繼續(xù)處理下一個(gè)裝置塊的事務(wù)記錄。此外,啟動(dòng)處理可校驗(yàn)標(biāo)頭部分信息以確定是否已擦除或收回裝置塊中的內(nèi)存地址。如果已擦除或收回裝置塊中的內(nèi)存地址,則啟動(dòng)處理繼續(xù)下一個(gè)裝置塊。再有,一旦已完成文件系統(tǒng)啟動(dòng)處理,就可在對(duì)應(yīng)文件的首次或后續(xù)存取后,驗(yàn)證任何先前未驗(yàn)證的事務(wù)記錄或事務(wù)記錄部分。
在實(shí)施例中,文件系統(tǒng)軟件可保持表明針對(duì)給定文件的每個(gè)事務(wù)文件記錄的完整性是否已被完成驗(yàn)證的文件驗(yàn)證指示器。該文件驗(yàn)證指示器在文件系統(tǒng)啟動(dòng)處理完成后首次(或下次)存取文件時(shí)由文件系統(tǒng)軟件校驗(yàn)。如果指示器顯示文件的事務(wù)記錄尚未完成驗(yàn)證,則在此時(shí)針對(duì)該文件的事務(wù)文件記錄的驗(yàn)證可在那個(gè)時(shí)候執(zhí)行。為加快該驗(yàn)證處理,驗(yàn)證可限于文件系統(tǒng)啟動(dòng)處理中先前未驗(yàn)證的事務(wù)記錄和事務(wù)記錄部分。
在參考下面的附圖和詳細(xì)說(shuō)明之后,對(duì)于本技術(shù)領(lǐng)域的技術(shù)人員本發(fā)明而言其它系統(tǒng)、方法、特點(diǎn)和優(yōu)點(diǎn)將顯而易見(jiàn)。將所有這樣的系統(tǒng)、方法、特點(diǎn)和優(yōu)點(diǎn)包括在本說(shuō)明中,包括在本發(fā)明范圍內(nèi)和由下面權(quán)利要求對(duì)其進(jìn)行保護(hù)。


參考下文中的附圖和說(shuō)明可更好地理解本發(fā)明。圖中的組件不必須是按比例,而重點(diǎn)是在于闡述本發(fā)明的原理。此外,在圖中,相同的參考數(shù)字表示貫穿不同視圖中的相同部分。
圖1是可實(shí)現(xiàn)基于事務(wù)的文件系統(tǒng)的計(jì)算機(jī)系統(tǒng)的框圖,其中對(duì)文件系統(tǒng)完整性的啟動(dòng)驗(yàn)證進(jìn)行優(yōu)化;圖2是示出了可在基于事務(wù)的文件系統(tǒng)中實(shí)現(xiàn)的文件和目錄的排列的示例的樹(shù)圖;圖3是示出了可排列元文件的記錄以實(shí)現(xiàn)圖2所示的文件系統(tǒng)結(jié)構(gòu)的方式的框圖;圖4示出了將基于事務(wù)的文件系統(tǒng)的事務(wù)文件中的事務(wù)記錄進(jìn)行邏輯排列的一種方式;圖5示出了一種類(lèi)型的閃存(flash)介質(zhì)裝置中內(nèi)存的物理排列。
圖6和7示出了在用于基于事務(wù)的文件系統(tǒng)的閃存介質(zhì)裝置中排列事務(wù)記錄的各種方式。
圖8示出了可用于生成外延池的許多相關(guān)處理步驟,該外延池依次應(yīng)用于啟動(dòng)過(guò)程中計(jì)算機(jī)系統(tǒng)所創(chuàng)建的重構(gòu)文件系統(tǒng)中。
圖9至11涉及圖8中所示處理步驟中使用的各種記錄類(lèi)型的示例性格式。
圖12涉及重構(gòu)文件系統(tǒng)中使用的重新生成的文件層次結(jié)構(gòu)的目錄節(jié)點(diǎn)記錄的示例性格式。
圖13涉及重構(gòu)文件系統(tǒng)中使用的重新生成的文件層次結(jié)構(gòu)的文件節(jié)點(diǎn)記錄的示例性格式。
圖14示出了可用于構(gòu)建重構(gòu)文件系統(tǒng)中使用的重新生成的文件層次結(jié)構(gòu)的許多相關(guān)處理步驟。
圖15是以與應(yīng)用于圖2所示的示例性文件和目錄排列的圖8至14相關(guān)的方式而生成的重構(gòu)文件系統(tǒng)的邏輯表示。
具體實(shí)施例方式
圖1表示示例性的基于事務(wù)的計(jì)算機(jī)系統(tǒng)10中采用的部件。如所示,示例性系統(tǒng)10包括處理器15、只讀存儲(chǔ)器20和持久性存儲(chǔ)單元30。計(jì)算機(jī)系統(tǒng)10還可包括隨機(jī)訪(fǎng)問(wèn)存儲(chǔ)器35、I/O接口40和用戶(hù)接口45。在計(jì)算機(jī)系統(tǒng)10中使用的具體組件是適合于計(jì)算機(jī)系統(tǒng)10所執(zhí)行的特殊功能的。因此,除了處理器15之外,組件的存在與否取決于計(jì)算機(jī)系統(tǒng)10所要求的設(shè)計(jì)標(biāo)準(zhǔn)。例如,當(dāng)計(jì)算機(jī)系統(tǒng)10是采用嵌入式控制器等的形式時(shí),可以省略用戶(hù)接口45。
只讀存儲(chǔ)器20可包括操作系統(tǒng)代碼43,它控制由處理器15和包括存儲(chǔ)器20與35、持久性存儲(chǔ)單元30以及接口裝置40與45的各種硬件部件所執(zhí)行的高級(jí)應(yīng)用程序之間的相互作用。操作系統(tǒng)代碼43可包括用于組織在持久性存儲(chǔ)單元30上所存儲(chǔ)的文件的文件系統(tǒng)軟件。可選地,可提供文件系統(tǒng)軟件作為只與操作系統(tǒng)代碼43相互作用的單獨(dú)的軟件組件。在后者的情況下,與文件系統(tǒng)軟件對(duì)應(yīng)的代碼可存儲(chǔ)在只讀存儲(chǔ)器20、持久性存儲(chǔ)器30等中。當(dāng)計(jì)算機(jī)系統(tǒng)10通過(guò)I/O接口40與其它計(jì)算機(jī)和/或存儲(chǔ)裝置聯(lián)網(wǎng)時(shí),如有需要,可將文件系統(tǒng)軟件遠(yuǎn)程存儲(chǔ)和下載到計(jì)算機(jī)系統(tǒng)10。但是,圖1示出文件系統(tǒng)軟件47存儲(chǔ)在只讀存儲(chǔ)器20中。
持久性存儲(chǔ)器30可采用任何不同的形式。例如,持久性存儲(chǔ)器30可采用硬盤(pán)驅(qū)動(dòng)器、軟盤(pán)驅(qū)動(dòng)器等形式。它也可以是非旋轉(zhuǎn)的介質(zhì)裝置的形式,如以集成電路格式實(shí)現(xiàn)的非易失性存儲(chǔ)器(如閃存等)。另外,持久性存儲(chǔ)器單元30不需要限制于單個(gè)存儲(chǔ)器結(jié)構(gòu)。甚至,持久性存儲(chǔ)器單元30可包括多個(gè)的同一類(lèi)型的獨(dú)立存儲(chǔ)裝置(如,全部為閃存)和/或不同類(lèi)型的獨(dú)立存儲(chǔ)裝置(如一個(gè)或多個(gè)閃存單元和一個(gè)或多個(gè)硬盤(pán)驅(qū)動(dòng)器)。
在持久性存儲(chǔ)器單元30中存儲(chǔ)的文件包括根據(jù)由應(yīng)用程序或由操作系統(tǒng)代碼43所使用的預(yù)定格式而解釋的數(shù)據(jù)。例如,文件內(nèi)存儲(chǔ)的數(shù)據(jù)可構(gòu)成可執(zhí)行程序的軟件代碼、數(shù)據(jù)庫(kù)記錄的ASCII文本、與計(jì)算機(jī)系統(tǒng)10執(zhí)行(或未執(zhí)行)的事務(wù)相對(duì)應(yīng)的數(shù)據(jù)等等。
在本示例性系統(tǒng)10中,文件系統(tǒng)軟件47利用倒置的層次結(jié)構(gòu)來(lái)組織存儲(chǔ)在持久性存儲(chǔ)器單元30上的文件。圖2是表示在其中實(shí)現(xiàn)一般表示為50的該倒置層次結(jié)構(gòu)的一種方式。在許多文件系統(tǒng)采用的傳統(tǒng)的層次結(jié)構(gòu)中,文件的頂層開(kāi)始于根目錄,每個(gè)目錄向下指向文件和包含在該目錄內(nèi)的子目錄。但是,在示例性倒置層次結(jié)構(gòu)50中,子文件和包含在父目錄內(nèi)的子目錄向上指向父目錄。根據(jù)文件在何處開(kāi)始其組織,根目錄可構(gòu)成文件系統(tǒng)結(jié)構(gòu)的最底層。
示例性的倒置層次結(jié)構(gòu)50包括5個(gè)文件55、60、65、70和處在文件系統(tǒng)結(jié)構(gòu)最高層的文件75。文件55、60和65包含在目錄80內(nèi),而文件70和75包含在目錄85內(nèi)。因此,文件系統(tǒng)軟件47將文件系統(tǒng)這樣組織,以使表示子文件55、60和65的文件系統(tǒng)記錄指向其父目錄80的記錄。類(lèi)似地,表示子文件70和75的文件系統(tǒng)記錄指向其父目錄85的記錄。
在該示例性倒置層次結(jié)構(gòu)50的下一層,文件90和95以及目錄80包含在目錄100內(nèi),而目錄85包含在目錄105內(nèi)。因此,文件系統(tǒng)軟件47組織文件系統(tǒng),以使表示子目錄80和子文件90和95的文件系統(tǒng)記錄指向它們的父目錄100的記錄。同理,表示子目錄85的文件系統(tǒng)記錄指向其父目錄105的記錄。
根目錄110可形成倒置層次結(jié)構(gòu)50的干線(xiàn)。在本示例中,目錄100和105以及文件115包含在根目錄110內(nèi),因此,文件系統(tǒng)軟件47組織文件系統(tǒng),以使得表示子目錄100和105以及子文件115的文件系統(tǒng)記錄指向其的父目錄105的記錄。
在圖3中示出了表示文件系統(tǒng)軟件47組織文件系統(tǒng)的記錄以執(zhí)行倒置層次結(jié)構(gòu)的一種方式。在該文件系統(tǒng)的執(zhí)行中,文件系統(tǒng)軟件47生成一個(gè)或多個(gè)元文件,其包括與文件系統(tǒng)中使用的每個(gè)文件和目錄相對(duì)應(yīng)的記錄。圖3表示單個(gè)的元文件120和元文件120內(nèi)的記錄排列和格式化的示例性方式。在該示例中,元文件120排列為包括多個(gè)等長(zhǎng)度記錄條目(record entry)125的表。每個(gè)記錄條目125與文件系統(tǒng)使用的單個(gè)文件或目錄對(duì)應(yīng)。如在130表示的唯一的文件標(biāo)識(shí)符由文件系統(tǒng)軟件47使用,以表示元文件120的相應(yīng)的記錄125。如果每個(gè)記錄條目125具有相同的記錄長(zhǎng)度,可選擇文件標(biāo)識(shí)符130的格式,以使之可直接或間接地利用為元文件120中所需的記錄的索引。例如,文件標(biāo)識(shí)符130可構(gòu)成與元文件120的第一記錄的存儲(chǔ)器地址位置一起使用的偏移值,以計(jì)算具有所希望的目錄/文件信息的元文件記錄的第一字節(jié)的存儲(chǔ)器地址位置。
在圖3的示例中,文件標(biāo)識(shí)符130指向元文件120中的記錄135(條目7)。在圖3中所示的記錄135是與元文件120相鄰的擴(kuò)展形式。記錄135的擴(kuò)展形式還示出了用于每條記錄條目125的基本記錄格式。在該示例中,記錄135包括多個(gè)不同的字段,該字段包含與記錄所表示的文件或目錄相關(guān)的信息。其中,該信息與文件系統(tǒng)的結(jié)構(gòu)內(nèi)的文件或目錄對(duì)應(yīng)。
通過(guò)采用元文件記錄格式可實(shí)現(xiàn)文件系統(tǒng)的倒置層次結(jié)構(gòu),其中每條元文件記錄包括指向表示其父目錄的元文件記錄的指針。圖3示出了元文件記錄格式,其中每條元文件記錄包括存儲(chǔ)其父目錄的文件標(biāo)識(shí)符的父記錄標(biāo)識(shí)符字段140。在該示例中,元文件記錄135的父記錄標(biāo)識(shí)符140與用于地址記錄145(條目9)的文件標(biāo)識(shí)符對(duì)應(yīng)。反之,記錄145包括與包含著文件的目錄或由記錄135表示的目錄相關(guān)的信息。
每條元文件記錄還包括與記錄所表示的目錄或文件有關(guān)的其它信息。在記錄135的示例性的記錄格式中,采用多個(gè)不同的信息字段。這些信息字段包括模式字段150、用戶(hù)標(biāo)識(shí)字段155、組標(biāo)識(shí)字段160、存取時(shí)間字段165、修改時(shí)間字段170、創(chuàng)建時(shí)間字段175、文件長(zhǎng)度字段180和短名字字段185。模式字段150用于確定由記錄表示的文件或目錄是否是系統(tǒng)文件/目錄、隱藏文件/目錄、只讀文件/目錄等等。用戶(hù)標(biāo)識(shí)字段155和組標(biāo)識(shí)字段160包含與表示的文件或目錄的用戶(hù)和組所有權(quán)有關(guān)的信息。存取時(shí)間字段165、修改時(shí)間字段170和創(chuàng)建時(shí)間字段175分別包含與表示的文件或目錄最后存取的時(shí)間、表示的文件或目錄最后修改的時(shí)間和表示的文件或目錄創(chuàng)建的時(shí)間有關(guān)的信息。長(zhǎng)度字段185包含與記錄表示的文件長(zhǎng)度有關(guān)的信息并且對(duì)于目錄記錄其為零。最后,短名字字段185包含表示對(duì)應(yīng)文件或目錄的短文本名字的ASCII字符。例如,可按照POSIX標(biāo)準(zhǔn)選擇短名字字段185的長(zhǎng)度。此外,每條記錄可包括與短名字對(duì)應(yīng)的散列值和/或名字之和。文件系統(tǒng)軟件47可使用這些雜湊值和/或名字之和,以快速搜索特定目錄和/或文件記錄。
元文件120中的每條記錄還可包括用于擴(kuò)展記錄標(biāo)識(shí)符字段190。擴(kuò)展記錄標(biāo)識(shí)符190可用做指向元文件120中擴(kuò)展記錄的文件標(biāo)識(shí)符。擴(kuò)展記錄還可包含由記錄所表示的文件或目錄的其它信息,并且屬于特定文件或記錄的所有信息不適合在分配給單一元文件記錄的內(nèi)存空間內(nèi)的情況下特別有用。
圖3示出了可使用擴(kuò)展記錄標(biāo)識(shí)符190的一種方式。在該示例中,記錄135的擴(kuò)展記錄標(biāo)識(shí)符190與用于在元文件120中存取記錄195(條目11)的文件標(biāo)識(shí)符(fid)對(duì)應(yīng)。在圖3中示出了與記錄135的分解圖相鄰的記錄195的分解圖。該分解圖示出了可用于擴(kuò)展記錄的記錄格式。如圖所示,每條擴(kuò)展記錄可包括其自身的父標(biāo)識(shí)符字段200。然而,擴(kuò)展記錄的父標(biāo)識(shí)符字段200與指向擴(kuò)展記錄的記錄的文件標(biāo)識(shí)符對(duì)應(yīng)。在圖3所示的示例中,父標(biāo)識(shí)符字段200的內(nèi)容用于指回記錄135(條目7)。
在分配給兩個(gè)記錄條目的內(nèi)存空間不夠保存屬于文件或記錄的所有信息的情況下,擴(kuò)展記錄195利用其自身擴(kuò)展記錄標(biāo)識(shí)符還可指向更進(jìn)一步的擴(kuò)展記錄,如包括在記錄195的字段205中的擴(kuò)展記錄標(biāo)識(shí)符。盡管未顯示針對(duì)擴(kuò)展文件標(biāo)識(shí)符125指向的更進(jìn)一步地?cái)U(kuò)展記錄的格式,但更進(jìn)一步地?cái)U(kuò)展記錄同樣包括指回記錄195的父記錄標(biāo)識(shí)符。
包括在擴(kuò)展記錄中的信息類(lèi)型可在文件系統(tǒng)之間改變。在圖3中,擴(kuò)展記錄195包括長(zhǎng)名字字段210,其包含與由記錄135表示的文件或記錄的長(zhǎng)名字的文本對(duì)應(yīng)的ASCII字符。其它的字段可保留在每條擴(kuò)展記錄如記錄195的擴(kuò)展區(qū)字段215中,以存儲(chǔ)與對(duì)應(yīng)文件或目錄相關(guān)的另外的信息。
在上文中所述的示例中,文件系統(tǒng)使用的擴(kuò)展記錄存儲(chǔ)在元文件120中。然而可選地,擴(kuò)展記錄和任何更進(jìn)一步地?cái)U(kuò)展的記錄可存儲(chǔ)在獨(dú)立元文件、多重元文件等中。獨(dú)立元文件不需要與元文件120或彼此共享相同存儲(chǔ)介質(zhì)。然而,元文件可存儲(chǔ)在處理器15可訪(fǎng)問(wèn)的不同存儲(chǔ)介質(zhì)中。甚至,基本元文件記錄(不具有對(duì)應(yīng)擴(kuò)展記錄的目錄和文件記錄)可分布在多重文件和/或多重存儲(chǔ)介質(zhì)中。同樣地,盡管示例性系統(tǒng)的元文件記錄存儲(chǔ)在獨(dú)立元文件中,但可選地元文件可為在相同或不同存儲(chǔ)介質(zhì)上的多種獨(dú)立文件的形式。
通過(guò)以倒置層次結(jié)構(gòu)組織計(jì)算機(jī)系統(tǒng)10的文件和目錄,從而可能實(shí)現(xiàn)一個(gè)或多個(gè)文件系統(tǒng)優(yōu)點(diǎn)。例如,文件系統(tǒng)能夠以典型的文件和目錄事務(wù)(即,移動(dòng)文件/目錄、刪除文件/目錄、創(chuàng)建文件/目錄、復(fù)制文件/目錄)自動(dòng)隨單獨(dú)元文件記錄的改變、添加或刪除而完成的任何方式來(lái)實(shí)現(xiàn)。在這種實(shí)現(xiàn)中,例如,僅通過(guò)改變父標(biāo)識(shí)符140,將記錄135表示的文件/目錄移動(dòng)到層次中的另一個(gè)目錄,這樣,它為新的父記錄指向元文件記錄。這可利用對(duì)元文件120中記錄135的單一寫(xiě)操作來(lái)完成。
所述倒置層次結(jié)構(gòu)可用于優(yōu)化基于事務(wù)或日志的系統(tǒng)。示例性的基于事務(wù)或日志的系統(tǒng)可由圖1所示的部件構(gòu)成。在該示例中,事務(wù)文件220保持在持久性存儲(chǔ)單元30中,并用于保持與文件系統(tǒng)的每個(gè)文件和目錄相關(guān)聯(lián)的事務(wù)的記錄?;诎谑聞?wù)文件220中的事務(wù)記錄自動(dòng)提交對(duì)文件系統(tǒng)的更新。以其中最簡(jiǎn)單的形式,每條事務(wù)記錄可作為映射到持久性存儲(chǔ)單元30的物理塊或區(qū)的單一邏輯頁(yè)而存儲(chǔ)。
圖4表示了可用于對(duì)計(jì)算機(jī)系統(tǒng)10的事務(wù)記錄225進(jìn)行格式化的一種方式。一般而言,事務(wù)文件220的每條事務(wù)記錄225包括標(biāo)頭字段230和對(duì)應(yīng)數(shù)據(jù)字段230。該標(biāo)頭字段230可包括多個(gè)不同子字段。圖4中所示的子字段包括事務(wù)序列字段240、文件標(biāo)識(shí)字段245、事務(wù)狀態(tài)字段250、簇高(cluster high)字段255、簇低(cluster low)字段260和簇?cái)?shù)字段265。此外,另外的子字段可包括在標(biāo)頭230中,以驗(yàn)證事務(wù)的完整性和用于錯(cuò)誤校正。這些另外的子字段包括簇總和字段247、事務(wù)總和字段、對(duì)標(biāo)頭230進(jìn)行校驗(yàn)和校正的錯(cuò)誤校正碼字段257、對(duì)數(shù)據(jù)235進(jìn)行校驗(yàn)和校正的錯(cuò)誤校正碼字段259以及表示其中存儲(chǔ)事務(wù)記錄的內(nèi)存地址狀況的另外狀態(tài)字段262。
標(biāo)頭字段230的每個(gè)子字段對(duì)于文件系統(tǒng)軟件47都具有意義。在該示例中,事務(wù)序列字段240是由文件系統(tǒng)軟件47指派的單調(diào)性增加的事務(wù)標(biāo)識(shí)符。當(dāng)新的事務(wù)記錄添加到事務(wù)文件220時(shí),存儲(chǔ)在新記錄的事務(wù)序列字段240中的值可在按時(shí)間在前的事務(wù)記錄的事務(wù)序列字段的值之上增加預(yù)定量。因此,認(rèn)為具有較大事務(wù)標(biāo)識(shí)符值的事務(wù)記錄是在時(shí)間上晚于具有較小事務(wù)標(biāo)識(shí)符值的事務(wù)記錄而增加至事務(wù)文件220的。如由事務(wù)序列字段240的值(和在一定情況下,事務(wù)文件220的塊內(nèi)的事務(wù)記錄的位置)所表示的事務(wù)的時(shí)間順序允許文件系統(tǒng)軟件47以適當(dāng)?shù)捻樞蚨鴳?yīng)用(即,提交)事務(wù),以保持文件系統(tǒng)內(nèi)容的完整性。也可使用記錄事務(wù)時(shí)間順序的其它方式。
文件系統(tǒng)軟件47使用事務(wù)狀態(tài)字段250來(lái)確定是否提交事務(wù)記錄225的事務(wù)。一旦提交事務(wù),文件系統(tǒng)軟件47就可禁止對(duì)提交的事務(wù)記錄225再進(jìn)行更改。這確保文件系統(tǒng)的一致性,還允許文件系統(tǒng)將事務(wù)文件220存儲(chǔ)到如一次寫(xiě)入、閃存介質(zhì)等中。
標(biāo)頭230的文件標(biāo)識(shí)字段245識(shí)別事務(wù)記錄225所影響的文件??蛇x擇文件標(biāo)識(shí)字段245的格式,這樣它與元文件記錄中使用的文件標(biāo)識(shí)符是相同的。簇高字段255和簇低字段260由文件系統(tǒng)軟件47使用,以確定要寫(xiě)入到標(biāo)識(shí)文件中的數(shù)據(jù)235所在的起始地址(或偏移量),而簇?cái)?shù)字段265用于確定由數(shù)據(jù)235重寫(xiě)的標(biāo)識(shí)文件的簇的數(shù)目。
如上所述,持久性存儲(chǔ)單元30可包括一個(gè)或多個(gè)閃存裝置。閃存裝置將信息存儲(chǔ)在邏輯門(mén)中,該邏輯門(mén)被稱(chēng)為“存儲(chǔ)單元”,其中每個(gè)邏輯門(mén)通常存儲(chǔ)一比特的信息。閃存技術(shù)的最近進(jìn)展也使得這樣的裝置能夠每單元存儲(chǔ)超過(guò)1比特,有時(shí)稱(chēng)之為多級(jí)單元裝置。此外,閃存是非易失性的,這是指從裝置將電源拔出時(shí),存儲(chǔ)單元的內(nèi)容是不會(huì)丟失的。
盡管閃存裝置技術(shù)不斷進(jìn)化,但主導(dǎo)技術(shù)包括NAND閃存和NOR閃存。NOR閃存裝置和NAND閃存裝置一般在每個(gè)存儲(chǔ)單元所使用的邏輯門(mén)的類(lèi)型上是不同的。圖5示出了一種類(lèi)型的NAND閃存裝置275的示例性邏輯結(jié)構(gòu)270。如圖所示,將裝置275的可用內(nèi)存組織到每個(gè)具有相等數(shù)量存儲(chǔ)單元(即,16K字節(jié))的連續(xù)物理塊280中。NAND閃存裝置275進(jìn)一步將每個(gè)連續(xù)塊280分成特定數(shù)量的物理扇區(qū)或頁(yè)290。接著,將每頁(yè)物理頁(yè)290進(jìn)一步分成數(shù)據(jù)區(qū)域295和備用區(qū)域300。通常保留數(shù)據(jù)區(qū)域295用于數(shù)據(jù)的存儲(chǔ),而通常保留備用區(qū)域300用于對(duì)與存儲(chǔ)在數(shù)據(jù)區(qū)域295中的數(shù)據(jù)相關(guān)的元信息的保持。元信息可包括,例如,用于扇區(qū)內(nèi)容的驗(yàn)證和校正的錯(cuò)誤校正碼、循環(huán)冗余校驗(yàn)數(shù)據(jù)等等。
除了每頁(yè)的備用區(qū)域位于數(shù)據(jù)區(qū)域的對(duì)側(cè)之外,NOR閃存裝置具有與圖5所示的結(jié)構(gòu)類(lèi)似的結(jié)構(gòu)。NOR閃存裝置還提供隨機(jī)存取讀和編程操作,允許在獨(dú)立內(nèi)存位置上進(jìn)行讀取或讀取獨(dú)立內(nèi)存位置。然而,一旦已寫(xiě)入塊中的內(nèi)存位置,NOR閃存裝置就不允許將該塊重寫(xiě)為一個(gè)比塊小的間隔尺寸。同樣,NOR閃存裝置不允許在比塊小的間隔尺寸進(jìn)行擦除操作。插入快速標(biāo)記保存文檔。
數(shù)據(jù)區(qū)域295和備用區(qū)域300在NOR和NAND閃存裝置中通常設(shè)置為特定長(zhǎng)度。例如,對(duì)于528字節(jié)的總頁(yè)長(zhǎng)度,圖5的示例性NAND閃存裝置275的每頁(yè)290包括512字節(jié)的數(shù)據(jù)區(qū)域295和16字節(jié)的備用區(qū)域300。NAND閃存裝置275還采用每塊280具有32頁(yè)290。其它頁(yè)長(zhǎng)度可用于計(jì)算機(jī)系統(tǒng)10并且是市售的。例如,許多NAND裝置包括具有64頁(yè)的塊,其中每頁(yè)存儲(chǔ)2112字節(jié),這樣,每頁(yè)的總數(shù)據(jù)區(qū)域是2048字節(jié),每頁(yè)的備用區(qū)域是64字節(jié)。
閃存裝置,如NAND閃存裝置275,通常每次在內(nèi)存的整個(gè)塊280上執(zhí)行擦除操作。擦除操作將塊280內(nèi)的所有比特設(shè)置為一致?tīng)顟B(tài),通常為二進(jìn)制值“1”。在閃存裝置275的擦除塊280上的編程操作只能改變整頁(yè)290的內(nèi)容(盡管可以稍微不同的方式來(lái)對(duì)NOR閃存裝置編程)。一旦NAND閃存裝置的頁(yè)290被編程,就不能對(duì)其狀態(tài)再進(jìn)行改變,直到再次擦除整個(gè)塊280。閃存裝置275的內(nèi)容的讀取還發(fā)生在頁(yè)級(jí)上。
圖6示出了可在閃存裝置如NAND閃存裝置275中組織事務(wù)記錄的一種方式。在該示例中,每個(gè)事務(wù)記錄305包括兩個(gè)或多個(gè)連接的邏輯頁(yè)315。每個(gè)邏輯頁(yè)315依次包括裝置275的塊280的兩個(gè)或多個(gè)鄰接物理頁(yè)290。將用于事務(wù)記錄310的元數(shù)據(jù)信息存儲(chǔ)在備用區(qū)域300中,且可包括一些與圖4的標(biāo)頭230有關(guān)的所述字段。依據(jù)每頁(yè)290的備用區(qū)域300的長(zhǎng)度,可將元數(shù)據(jù)信息在事務(wù)記錄310的多重備用區(qū)域330之間分配。圖6表示元數(shù)據(jù)信息在兩個(gè)連續(xù)物理頁(yè)290的備用區(qū)域300之間的分配。圖6所示的事務(wù)記錄也可這樣組織,每項(xiàng)事務(wù)310與依次由例如兩個(gè)連續(xù)物理頁(yè)290構(gòu)成的單一邏輯頁(yè)315對(duì)應(yīng)。
圖7表示存在閃存裝置275的每個(gè)邏輯頁(yè)315和物理頁(yè)290之間的一對(duì)一對(duì)應(yīng)的可選設(shè)置。本設(shè)置與圖6所示的設(shè)置之間的另一個(gè)不同是,所有元數(shù)據(jù)信息320都存儲(chǔ)在事務(wù)310的第一物理頁(yè)290的獨(dú)立備用區(qū)域300中。當(dāng)采用大容量閃存裝置時(shí),這種類(lèi)型的布置非常適用。然而,元數(shù)據(jù)信息320還可在事務(wù)記錄的兩頁(yè)連接物理頁(yè)290的備用區(qū)域300之間分配。
存儲(chǔ)在相同裝置塊290中的事務(wù)記錄310的序列標(biāo)識(shí)符可具有相同值。在這種情況下,序列標(biāo)識(shí)符提供了時(shí)間序列信息,其用于對(duì)不同裝置塊的事務(wù)記錄之間的時(shí)間關(guān)系進(jìn)行比較。存儲(chǔ)在相同塊中的事務(wù)記錄310的時(shí)間序列信息可從塊290內(nèi)事務(wù)記錄310的偏移位置而獲得,其中稍后發(fā)生的事務(wù)記錄310出現(xiàn)在較大偏移量。
在計(jì)算機(jī)系統(tǒng)10已啟動(dòng)或通電后,可通過(guò)在隨機(jī)存取存儲(chǔ)器35中生成重構(gòu)版本的文件系統(tǒng)來(lái)驗(yàn)證文件系統(tǒng)的完整性。通常利用存儲(chǔ)在事務(wù)文件220中的有效的、已提交的事務(wù)和根據(jù)存儲(chǔ)在元文件120中的文件/目錄信息來(lái)生成圖1的330所示的重構(gòu)文件系統(tǒng)。在圖1中,重構(gòu)文件系統(tǒng)330包括重生成的文件層次335和外延表340。
圖8至11表示生成外延表340的一種方式。圖8示出了可用于生成外延池340的多步相關(guān)處理步驟,而圖9至11示出了在操作中生成和使用的各種表和陣列的邏輯組織。
通過(guò)掃描事務(wù)文件220的塊而找到所有事務(wù)記錄,從而在圖8的步驟345開(kāi)始外延表340的生成。可按從最低序列塊到最高序列塊的順序來(lái)掃描塊,在其中找到提交的事務(wù)記錄。當(dāng)在塊內(nèi)找到事務(wù)時(shí),在步驟350生成識(shí)別每個(gè)具有事務(wù)記錄的裝置塊的塊記錄的陣列。
在于文件系統(tǒng)軟件47掃描事務(wù)的事務(wù)文件220的塊時(shí),作為已撤消事務(wù)的結(jié)果或由于還未分配用于文件系統(tǒng)中的多個(gè)塊,文件系統(tǒng)軟件會(huì)遇到已擦除的塊。事務(wù)標(biāo)頭可這樣建構(gòu),使得有效事務(wù)不存在,該有效事務(wù)將具有設(shè)置為擦除值通常為二進(jìn)制“1”的標(biāo)頭的所有比特。當(dāng)文件系統(tǒng)軟件47掃描事務(wù)文件220的塊時(shí),可跳過(guò)其中標(biāo)頭指示擦除塊的任何事務(wù)。當(dāng)標(biāo)頭不變量是相反的擦除值時(shí),通過(guò)使用作為指示事務(wù)被文件系統(tǒng)使用的標(biāo)志的單一比特,可執(zhí)行該標(biāo)頭不變量。在事務(wù)標(biāo)頭中找到這樣的擦除簽名值后,跳過(guò)塊中剩余頁(yè)的掃描,從而保存將另外用于存取擦除頁(yè)的時(shí)間。整個(gè)系統(tǒng)啟動(dòng)時(shí)間相應(yīng)地縮短。
圖9表示示例性塊陣列355的組織。每條塊陣列記錄360包括序列字段365、開(kāi)始事務(wù)字段370和事務(wù)數(shù)字段375。序列字段365可用于存儲(chǔ)用于存儲(chǔ)在塊中事務(wù)記錄的事務(wù)標(biāo)識(shí)符值。開(kāi)始事務(wù)字段370可用于存儲(chǔ)塊中第一事務(wù)的索引(index),事務(wù)數(shù)字段375可用于存儲(chǔ)在塊中找到的事務(wù)數(shù)。
在圖8的步驟380中,文件系統(tǒng)軟件47生成塊陣列355中每條記錄條目的事務(wù)清單表。圖9示出了可組織事務(wù)清單表385的一種方式。在該示例中,塊陣列355的每條記錄360指向事務(wù)清單表385的至少一條事務(wù)清單記錄390。更具體地,為了在給定塊陣列記錄360表示的塊中所找到的每項(xiàng)事務(wù)而生成事務(wù)清單記錄390。給定塊陣列記錄360的事務(wù)數(shù)字段375中存儲(chǔ)的值與給定塊中的事務(wù)數(shù)對(duì)應(yīng),并且指出將增加至事務(wù)清單表385的給定塊的記錄390的數(shù)目。
事務(wù)清單表385的每條事務(wù)清單記錄390可具有相同記錄長(zhǎng)度,并包括相同的記錄字段。圖9的記錄390中使用的示例字段包括文件簇偏移字段395、裝置簇索引字段400、簇?cái)?shù)字段405和文件標(biāo)識(shí)符/索引(idx)字段410。文件簇偏移字段395可用于識(shí)別塊內(nèi)事務(wù)的物理位置。裝置簇索引字段400可用于識(shí)別事務(wù)的數(shù)據(jù)在哪里開(kāi)始。簇?cái)?shù)字段405可用于識(shí)別在事務(wù)內(nèi)出現(xiàn)數(shù)據(jù)簇的數(shù)目。最后,如下文中的說(shuō)明,文件標(biāo)識(shí)符/索引字段410是多功能的。然而,初始時(shí),存儲(chǔ)在文件標(biāo)識(shí)符/索引字段410中的值用于識(shí)別將事務(wù)應(yīng)用的文件。存儲(chǔ)在字段410中的文件標(biāo)識(shí)符值可與用于參考元文件120中記錄的文件標(biāo)識(shí)符直接對(duì)應(yīng)。在步驟380完成后,例如以增加的塊順序來(lái)排列塊陣列355的記錄360,且以增加的頁(yè)順序來(lái)排列置每個(gè)塊陣列記錄360的記錄390。
在步驟415,根據(jù)存儲(chǔ)在序列字段365中的值對(duì)塊陣列355的記錄360進(jìn)行分類(lèi)。以時(shí)間順序(即,對(duì)應(yīng)事務(wù)將應(yīng)用于文件系統(tǒng)的文件的順序)設(shè)置事務(wù)清單表385的記錄390而執(zhí)行改操作。
然后利用塊陣列355和事務(wù)清單表385的分類(lèi)記錄在RAM 35中生成用于存儲(chǔ)與文件系統(tǒng)的事務(wù)記錄對(duì)應(yīng)的文件節(jié)點(diǎn)信息的臨時(shí)文件440。最終,首先將與文件系統(tǒng)的根目錄對(duì)應(yīng)的基本記錄添加到臨時(shí)文件440。用于生成臨時(shí)文件440中根目錄節(jié)點(diǎn)的信息可從與存儲(chǔ)在元文件120中的根目錄文件對(duì)應(yīng)的記錄獲得。
圖10的445通常表示設(shè)置臨時(shí)文件440中文件節(jié)點(diǎn)記錄的一種方式的邏輯表示。在該示例中,每條文件節(jié)點(diǎn)記錄450包括文件節(jié)點(diǎn)字段455和起始字段460。文件節(jié)點(diǎn)字段455的內(nèi)容用于識(shí)別事務(wù)清單表385的各種事務(wù)記錄390所鏈接的文件節(jié)點(diǎn)。為簡(jiǎn)單起見(jiàn),文件節(jié)點(diǎn)字段455的內(nèi)容可具有與用于訪(fǎng)問(wèn)元文件120的對(duì)應(yīng)記錄條目125的文件標(biāo)識(shí)符相同的格式。起始字段460的內(nèi)容可用于識(shí)別與文件節(jié)點(diǎn)字段455所標(biāo)識(shí)的文件相對(duì)應(yīng)的事務(wù)清單表385中的第一事務(wù)記錄390的位置。這樣,每條文件節(jié)點(diǎn)記錄450識(shí)別文件系統(tǒng)內(nèi)的文件及與標(biāo)識(shí)的文件相關(guān)的第一事務(wù)的位置。
在步驟420,橫向穿過(guò)塊陣列355和事務(wù)清單表385的每條分類(lèi)記錄360和390,以確定臨時(shí)文件440是否包括與存儲(chǔ)在文件標(biāo)識(shí)符/索引字段410中的文件標(biāo)識(shí)符對(duì)應(yīng)的文件節(jié)點(diǎn)記錄450。如果在臨時(shí)文件440中沒(méi)有找到與事務(wù)記錄390具有相同文件標(biāo)識(shí)符的文件節(jié)點(diǎn)記錄450,則在步驟430創(chuàng)建新的文件節(jié)點(diǎn)記錄450。一旦與事務(wù)清單記錄390對(duì)應(yīng)的文件節(jié)點(diǎn)記錄450存在于臨時(shí)文件440中,事務(wù)清單記錄390就可鏈接到文件節(jié)點(diǎn)記錄450的事務(wù)清單。在這個(gè)示例中,事務(wù)清單記錄390在圖8的步驟435鏈接到文件節(jié)點(diǎn)記錄450的事務(wù)清單。事務(wù)清單記錄390鏈接到文件節(jié)點(diǎn)的事務(wù)清單的方式可取決于事務(wù)清單記錄390是否是文件節(jié)點(diǎn)的第一事務(wù)清單記錄或文件節(jié)點(diǎn)的后續(xù)事務(wù)清單記錄。如果它是文件節(jié)點(diǎn)的第一事務(wù)清單記錄,則更新文件節(jié)點(diǎn)記錄450的起始字段460以識(shí)別該第一事務(wù)清單記錄390的起始位置。同樣地,文件節(jié)點(diǎn)記錄450的起始字段460的內(nèi)容可用于指向事務(wù)清單表385中的位置,繼而該事務(wù)清單表385包含應(yīng)用于文件的第一事務(wù)的擴(kuò)展信息。當(dāng)事務(wù)清單記錄390附加至文件節(jié)點(diǎn)的現(xiàn)有事務(wù)清單記錄中時(shí)(即,當(dāng)它不是文件節(jié)點(diǎn)的第一事務(wù)清單記錄時(shí)),文件標(biāo)識(shí)符/索引字段410的功能改變。更具體地,字段410的值和功能改變,從而其指向與文件節(jié)點(diǎn)相關(guān)的最后事務(wù)記錄390。這在圖10中示出,其中文件節(jié)點(diǎn)記錄450的起始字段460指向事務(wù)清單記錄390的起始處。接著記錄390的文件標(biāo)識(shí)符/索引字段410指向事務(wù)清單記錄465的起始處,其包含關(guān)于文件節(jié)點(diǎn)記錄450表示的文件的第二事務(wù)的位置的信息。類(lèi)似地,文件節(jié)點(diǎn)記錄470的起始字段460指向事務(wù)清單記錄475的起始處。事務(wù)清單記錄475的文件標(biāo)識(shí)符/索引字段410指向事務(wù)清單記錄480的起始處,其包含關(guān)于文件節(jié)點(diǎn)記錄470表示的文件的第二事務(wù)的位置的信息。
一旦事務(wù)清單表385的所有事務(wù)清單記錄以適當(dāng)方式與對(duì)應(yīng)文件節(jié)點(diǎn)記錄鏈接,那么在步驟485橫向穿過(guò)每個(gè)文件節(jié)點(diǎn)的事務(wù)清單記錄,以移除涉及未提交和/或壞文件事務(wù)的任何事務(wù)清單記錄。這些事務(wù)清單記錄的移除可以各種不同方式來(lái)完成。例如,文件系統(tǒng)軟件47可校驗(yàn)最后發(fā)生事務(wù)的狀態(tài)字段,以確定其是否被提交。如果事務(wù)已提交,則事務(wù)清單表385中的對(duì)應(yīng)記錄未受干擾。然而,如果事務(wù)未提交,那么移除事務(wù)清單表385中的對(duì)應(yīng)記錄,否則將其忽略。
為了加速這種類(lèi)型的事務(wù)提交校驗(yàn),文件系統(tǒng)軟件47僅需要確保最后發(fā)生的事務(wù)已提交。由于僅最后發(fā)生的事務(wù)受到電力故障、不正常的系統(tǒng)停止等等的影響,所以可跳過(guò)所有其它記錄的提交校驗(yàn)。通過(guò)跳過(guò)所有其它記錄的提交校驗(yàn),系統(tǒng)啟動(dòng)所要求的時(shí)間可充分縮短。
盡管作為線(xiàn)性序列的一部分而示出,但當(dāng)結(jié)合對(duì)應(yīng)文件節(jié)點(diǎn)來(lái)處理每條事務(wù)清單記錄時(shí),可執(zhí)行步驟485。例如,文件系統(tǒng)軟件47可校驗(yàn)包括在每條事務(wù)記錄的標(biāo)頭中的狀態(tài)信息,以確定事務(wù)是否已提交。由于每條事務(wù)記錄用于總裝對(duì)應(yīng)事務(wù)清單記錄,所以該校驗(yàn)可發(fā)生。一旦文件系統(tǒng)軟件47找到未被提交的事務(wù),那么不需要對(duì)圖8的步驟420至485中的事務(wù)清單表385的進(jìn)一步處理。
在步驟490,條目在每個(gè)文件節(jié)點(diǎn)的外延池340中生成。圖11表示其可以完成的一種方式。在該示例中,每個(gè)文件節(jié)點(diǎn)的起始字節(jié)460的內(nèi)容可改變,因此,其現(xiàn)在作為外延索引字段487而工作。外延索引字段487指向包含文件第一事務(wù)的事務(wù)數(shù)據(jù)位置信息的外延池340的第一位置。每個(gè)擴(kuò)展記錄490可包括多個(gè)簇字段495、起始簇字段500和下一個(gè)外延字段505。起始簇字段500識(shí)別裝置270中的起始位置,在其中存儲(chǔ)與文件節(jié)點(diǎn)對(duì)應(yīng)的文件的第一文件事務(wù)。簇?cái)?shù)字段495識(shí)別用于存儲(chǔ)文件事務(wù)的裝置270的數(shù)目。下一個(gè)外延字段505對(duì)文件節(jié)點(diǎn)所表示的文件的下一個(gè)擴(kuò)展記錄的外延索引進(jìn)行識(shí)別。在該示例中,外延索引487指向擴(kuò)展記錄510,而擴(kuò)展記錄510的下一個(gè)外延字段505指向擴(kuò)展記錄515。
用于生成外延池340的記錄的數(shù)據(jù)可至少部分地從存儲(chǔ)在事務(wù)清單表385中的數(shù)據(jù)獲取。在此處表示的示例中,外延池340是事務(wù)清單表385的更緊湊的形式。最終,如果事務(wù)清單記錄是相同文件節(jié)點(diǎn)的一部分,文件系統(tǒng)軟件47將具有連續(xù)數(shù)據(jù)的事務(wù)清單記錄合并為獨(dú)立外延記錄條目。類(lèi)似地,不需要再在RAM 35中保存塊陣列355。因此,塊陣列355可從RAM 35刪除。
在用于生成外延池340的各種步驟的執(zhí)行過(guò)程中校驗(yàn)事務(wù)文件220中的事務(wù)的完整性。例如,可在圖8的步驟350或380的過(guò)程中執(zhí)行事務(wù)記錄的完整性校驗(yàn)。普通數(shù)據(jù)校驗(yàn)包括CRC和ECC技術(shù)。
為了縮短計(jì)算機(jī)系統(tǒng)10的啟動(dòng)時(shí)間,錯(cuò)誤校驗(yàn)技術(shù)可限于包括在特定事務(wù)的標(biāo)頭中的信息。當(dāng)在圖8所示的啟動(dòng)處理過(guò)程中找到事務(wù)時(shí),文件系統(tǒng)軟件47可識(shí)別事務(wù)是否影響文件數(shù)據(jù)或元數(shù)據(jù),如元文件120中的目錄結(jié)構(gòu)信息。該差別可以是根據(jù)與事務(wù)相關(guān)的文件標(biāo)識(shí)符。通常,元數(shù)據(jù)會(huì)由眾所周知的并且硬編碼至文件系統(tǒng)軟件47中的文件標(biāo)識(shí)符(例如,它們將元文件120識(shí)別為屬于事務(wù)的文件)而表示。由于僅要求元數(shù)據(jù)確保文件系統(tǒng)在啟動(dòng)后處于一致?tīng)顟B(tài),所以?xún)H當(dāng)事務(wù)涉及這樣的元數(shù)據(jù)時(shí)執(zhí)行關(guān)于事務(wù)的數(shù)據(jù)部分的數(shù)據(jù)校驗(yàn)技術(shù)。如果事務(wù)不涉及元數(shù)據(jù)的變化,那么數(shù)據(jù)校驗(yàn)技術(shù)最初可僅限于標(biāo)頭信息的校驗(yàn)。在圖6所示的事務(wù)記錄格式中,必須在系統(tǒng)啟動(dòng)時(shí)驗(yàn)證的主要標(biāo)頭信息存儲(chǔ)在每條事務(wù)記錄310的第一備用區(qū)域300。這允許文件系統(tǒng)軟件47跳過(guò)對(duì)包括在每條事務(wù)記錄310的第二備用區(qū)域中的標(biāo)頭信息的驗(yàn)證,從而進(jìn)一步優(yōu)化啟動(dòng)順序。如下文將進(jìn)一步詳細(xì)解釋的,可延遲每項(xiàng)事務(wù)的數(shù)據(jù)部分的錯(cuò)誤校驗(yàn),直到在啟動(dòng)序列完成后對(duì)應(yīng)文件首次由文件系統(tǒng)軟件47存取的時(shí)間為止。
可通過(guò)僅對(duì)一系列序列事務(wù)的第一事務(wù)標(biāo)頭的錯(cuò)誤校驗(yàn)進(jìn)行限制來(lái)進(jìn)一步優(yōu)化事務(wù)記錄的任何啟動(dòng)驗(yàn)證。在事務(wù)文件220的啟動(dòng)掃描過(guò)程中,當(dāng)找到指示相同文件流的序列事務(wù)記錄數(shù)的事務(wù)標(biāo)頭時(shí),一旦驗(yàn)證了序列的第一事務(wù)記錄的標(biāo)頭,則可跳過(guò)對(duì)序列中隨后事務(wù)的標(biāo)頭的驗(yàn)證。然后,標(biāo)頭信息的掃描和驗(yàn)證可與最后部事務(wù)的下一個(gè)塊一起重新繼續(xù)。
在RAM 35中生成重構(gòu)文件系統(tǒng)330的下一步大的步驟是,重新生成的文件層次335的構(gòu)建。在本示例中,重新生成的文件層次335包括文件和目錄節(jié)點(diǎn)記錄。圖12的520大體示出了節(jié)點(diǎn)記錄的示例性格式,而圖13的525大體示出了文件節(jié)點(diǎn)相應(yīng)的示例性格式。
目錄節(jié)點(diǎn)格式520包括文件系統(tǒng)軟件47使用的多個(gè)不同的字段。更具體地,目錄節(jié)點(diǎn)記錄520可包括兄弟節(jié)點(diǎn)(sibling)字段530,文件標(biāo)識(shí)符字段535,父標(biāo)識(shí)符字段540,子字段545和目錄命名字段550。類(lèi)似地,圖13的文件記錄包括文件系統(tǒng)軟件47所使用的多個(gè)不同的字段。文件節(jié)點(diǎn)記錄字段可包括兄弟節(jié)點(diǎn)字段555,文件標(biāo)識(shí)符字段560,外延索引字段565與名稱(chēng)總和字段570。
由于在重新生成的文件層次335的構(gòu)建中使用元文件120的記錄中所包含的數(shù)據(jù),設(shè)置在元文件120中的元文件記錄的方式對(duì)系統(tǒng)啟動(dòng)性能具有影響。因此,元文件120的記錄設(shè)置在單個(gè)元文件中,其中將具有相同長(zhǎng)度的鄰接記錄全部存儲(chǔ)在相同的存儲(chǔ)介質(zhì)中。該設(shè)置提高了文件系統(tǒng)軟件47存取元文件數(shù)據(jù)的速度,并減少了這樣的存取所需要的處理量。
圖14示出了用于生成重新生成的文件層次335的每條文件節(jié)點(diǎn)記錄525和目錄節(jié)點(diǎn)記錄520的字段的步驟的順序。為元文件120的每條記錄而執(zhí)行所示出的序列,可在步驟575起始。在步驟575,根據(jù)元文件120內(nèi)的第一記錄條目的偏移而生成文件標(biāo)識(shí)符。在步驟580進(jìn)行重新生成的文件層次335的校驗(yàn),以確定是否已經(jīng)存在與文件標(biāo)識(shí)符對(duì)應(yīng)的文件節(jié)點(diǎn)記錄525或目錄節(jié)點(diǎn)記錄520。如果不存在相應(yīng)的記錄520或525,那么在重新產(chǎn)生的文件層次335中創(chuàng)建新的記錄文件。新創(chuàng)建的記錄的格式取決于文件標(biāo)識(shí)符是與元文件120中的文件條目對(duì)應(yīng)還是與目錄條目對(duì)應(yīng)。文件系統(tǒng)軟件47將進(jìn)行該確定,并應(yīng)用適當(dāng)?shù)挠涗浳募袷?20或525。
在步驟585,利用在元文件120中發(fā)現(xiàn)的文件/目錄的屬性來(lái)生成新創(chuàng)建記錄的字段。如果新創(chuàng)建記錄對(duì)應(yīng)于目錄節(jié)點(diǎn),則利用元文件120中相應(yīng)記錄的父標(biāo)識(shí)符和短名稱(chēng)字段中的數(shù)據(jù)來(lái)產(chǎn)生父標(biāo)識(shí)符字段540和目錄命名字段550。如果新創(chuàng)建記錄對(duì)應(yīng)于文件節(jié)點(diǎn),那么利用元文件120中相應(yīng)記錄的文件名數(shù)據(jù)所直接存儲(chǔ)的數(shù)據(jù)或從其中獲得的數(shù)據(jù)來(lái)生成名稱(chēng)總和字段570。利用相應(yīng)的文件節(jié)點(diǎn)記錄450的外延索引字段487中查找到的數(shù)據(jù)來(lái)生成外延索引字段565(參見(jiàn)圖11)。
如果新創(chuàng)建文件與目錄節(jié)點(diǎn)對(duì)應(yīng),那么在步驟590進(jìn)行在重新生成的文件層次335中的搜索,以確定父節(jié)點(diǎn)是否存在。如果父節(jié)點(diǎn)不存在,那么將與父節(jié)點(diǎn)的目錄對(duì)應(yīng)的記錄增加至重新生成的文件層次335中。
在步驟595,將新生成的文件/目錄記錄鏈接至父目錄節(jié)點(diǎn)的樹(shù)結(jié)構(gòu)中。如果新生成的文件/目錄記錄的子字段545表示父目錄不具有子目錄,那么將父目錄記錄的子字段545的值重置,以指向新生成的文件/目錄記錄,并且設(shè)置新生成的文件/目錄記錄的兄弟節(jié)點(diǎn)字段555或530以表示新生成的文件/目錄記錄不具有任何兄弟節(jié)點(diǎn)。如果父節(jié)點(diǎn)記錄的子字段545表示父目錄節(jié)點(diǎn)具有子目錄,那么設(shè)置新生成的文件/目錄記錄的兄弟節(jié)點(diǎn)字段565或530,以指向父目錄的現(xiàn)有子目錄,并且設(shè)置父目錄的子字段545以指向新生成的文件/目錄記錄。如果新生成的文件/目錄記錄與目錄節(jié)點(diǎn)對(duì)應(yīng),那么設(shè)置新生成的目錄記錄的父標(biāo)識(shí)符字段540,從而指向父目錄節(jié)點(diǎn)。
在步驟600,文件系統(tǒng)軟件47從新生成文件/目錄記錄中父目錄開(kāi)始,遞歸地上升父目錄節(jié)點(diǎn),并執(zhí)行一系列處理步驟,直到到達(dá)根節(jié)點(diǎn)。在此,新生成的文件/目錄記錄的父目錄節(jié)點(diǎn)可稱(chēng)作當(dāng)前目錄節(jié)點(diǎn)。在圖14所示的示例性處理中,文件系統(tǒng)軟件47校驗(yàn)重新生成的文件層次335,以確定是否存在與當(dāng)前目錄的父節(jié)點(diǎn)對(duì)應(yīng)的目錄節(jié)點(diǎn)記錄。在步驟605和610執(zhí)行該處理。如果在重新生成的文件層次335中不存在這樣的目錄記錄,那么在步驟615生成新目錄記錄。然后,設(shè)置新生成的目錄記錄的子字段545,以指向作為新目錄記錄的唯一子記錄的當(dāng)前目錄節(jié)點(diǎn)記錄。在步驟620,設(shè)置當(dāng)前目錄節(jié)點(diǎn)記錄的父標(biāo)識(shí)符字段540,以指向新生成的目錄記錄。在步驟625設(shè)置當(dāng)前目錄節(jié)點(diǎn)記錄的兄弟節(jié)點(diǎn)字段530,以表示當(dāng)前目錄節(jié)點(diǎn)記錄沒(méi)有兄弟節(jié)點(diǎn)。
如果在步驟605和610執(zhí)行的校驗(yàn)表示與當(dāng)前目錄的父節(jié)點(diǎn)對(duì)應(yīng)的重新生成的文件層次335中存在目錄記錄,則在步驟630將當(dāng)前目錄節(jié)點(diǎn)鏈接至父目錄節(jié)點(diǎn)的一般化的樹(shù)結(jié)構(gòu)中。因此,設(shè)置當(dāng)前節(jié)點(diǎn)的父標(biāo)識(shí)符字段540,以指向重新生成的文件層次335中的父節(jié)點(diǎn)記錄的位置。設(shè)置當(dāng)前目錄節(jié)點(diǎn)的兄弟節(jié)點(diǎn)字段530,以指向與父節(jié)點(diǎn)記錄的子字段545所指向記錄相同的記錄。最后,設(shè)置父目錄節(jié)點(diǎn)的子字段545,以指向當(dāng)前目錄節(jié)點(diǎn)的位置。
在步驟635,文件系統(tǒng)軟件47進(jìn)行校驗(yàn),以確定是否完成遞歸目錄處理。在本示例中,當(dāng)處理進(jìn)行到具有唯一的和可識(shí)別的文件標(biāo)識(shí)符的根節(jié)點(diǎn)時(shí),完成了遞歸目錄處理。如果在步驟635達(dá)到根節(jié)點(diǎn),則在步驟640開(kāi)始對(duì)元文件120中的下一個(gè)文件記錄條目的處理,該步驟640將處理控制返回至步驟575。如果在步驟635沒(méi)有達(dá)到根節(jié)點(diǎn),則在步驟605重復(fù)開(kāi)始,處理在上升的文件/目錄層次中的下一個(gè)父節(jié)點(diǎn)。
圖15是重構(gòu)的文件系統(tǒng)330的邏輯表示,并對(duì)與具有圖2所示的文件層次的文件系統(tǒng)所應(yīng)用的圖8和14的處理步驟對(duì)應(yīng)。在本示例性表示中,線(xiàn)665、670、675和680分別表示與表示目錄105、100、80和85的目錄節(jié)點(diǎn)記錄的父標(biāo)識(shí)符字段540的內(nèi)容對(duì)應(yīng)的指針。線(xiàn)645、650、660、655和652分別表示與表示目錄110、100、105、80和85的目錄節(jié)點(diǎn)記錄的子標(biāo)識(shí)符字段545的內(nèi)容對(duì)應(yīng)的指針。線(xiàn)685、690、695和705分別表示與相應(yīng)于目錄100、105和80的目錄節(jié)點(diǎn)記錄的兄弟節(jié)點(diǎn)標(biāo)識(shí)符字段530的內(nèi)容對(duì)應(yīng)的指針。線(xiàn)700、705、710和715分別表示與相應(yīng)于文件90、55、60和70的文件節(jié)點(diǎn)記錄的同屬標(biāo)識(shí)符字段555的內(nèi)容對(duì)應(yīng)的指針。
圖15還表示利用重構(gòu)文件系統(tǒng)330的在持久性存儲(chǔ)單元30的事務(wù)文件220中存取數(shù)據(jù)的一種方式。如圖所示,文件系統(tǒng)軟件47為軟件將要存取的文件節(jié)點(diǎn)記錄而提供文件標(biāo)識(shí)符730。在本示例中,文件標(biāo)識(shí)符730指向表示文件55的文件節(jié)點(diǎn)記錄。然后,文件系統(tǒng)軟件47利用文件節(jié)點(diǎn)記錄的內(nèi)容索引565的內(nèi)容作為外延池(extents pool)340的索引,以對(duì)事務(wù)文件220中的文件的數(shù)據(jù)定位。但是,應(yīng)明白文件系統(tǒng)軟件47能夠以除了圖15中所示的方式之外的多種不同方式,來(lái)使用重構(gòu)文件系統(tǒng)330的內(nèi)容。
如上所述,在啟動(dòng)過(guò)程中,不執(zhí)行文件完整性的全部驗(yàn)證,以加速啟動(dòng)處理。可選地,文件系統(tǒng)軟件47可延遲與給定文件對(duì)應(yīng)的事務(wù)記錄的全部驗(yàn)證或先前未驗(yàn)證部分的驗(yàn)證,直到第一次存取給定文件或后繼存取給定文件時(shí)。因此,文件系統(tǒng)軟件47保存表示給定文件的每個(gè)事務(wù)文件記錄的完整性是否已完全驗(yàn)證的表??蛇x地,文件系統(tǒng)軟件47可利用重新生成的文件層次335中的每條文件節(jié)點(diǎn)記錄的一個(gè)或多個(gè)比特,以指出文件的事務(wù)記錄的完整性是否已完全驗(yàn)證。在文件系統(tǒng)啟動(dòng)處理完成之后,第一次(或以后)取文件時(shí),文件系統(tǒng)軟件47校驗(yàn)該文件驗(yàn)證指示符。如果該指示符表示文件的事務(wù)記錄沒(méi)有完全驗(yàn)證,此時(shí),可執(zhí)行事務(wù)文件記錄的驗(yàn)證。為加快驗(yàn)證過(guò)程,可將事務(wù)文件記錄的驗(yàn)證限制為原來(lái)沒(méi)有驗(yàn)證的特定部分的記錄。例如,由于在文件系統(tǒng)啟動(dòng)過(guò)程中已經(jīng)校驗(yàn)文件的大多數(shù)事務(wù)記錄的標(biāo)頭,文件系統(tǒng)軟件只需要驗(yàn)證文件的每個(gè)事務(wù)記錄的數(shù)據(jù)部分的完整性。該驗(yàn)證處理可包括一個(gè)或多個(gè)CRC處理、一個(gè)或多個(gè)ECC處理等。如圖5、6和7所示,每條事務(wù)記錄標(biāo)頭中的許多不同的字段可專(zhuān)用于驗(yàn)證事務(wù)記錄的完整性。如果完整性校驗(yàn)失敗,并且利用有關(guān)錯(cuò)誤校正代碼的應(yīng)用程序不能改正該錯(cuò)誤,則將程序錯(cuò)誤報(bào)告回作出訪(fǎng)問(wèn)文件內(nèi)容請(qǐng)求的應(yīng)用程序或系統(tǒng)。一旦將所有的文件事務(wù)記錄全部驗(yàn)證,文件系統(tǒng)軟件47可相應(yīng)地改變文件的驗(yàn)證指示符。
盡管已描述了本發(fā)明的各種實(shí)施例,對(duì)于本領(lǐng)域技術(shù)人員很明顯,在本發(fā)明的范圍內(nèi)可存在更多的實(shí)施例和實(shí)現(xiàn)方式。因此,除了按照所附的權(quán)利要求及其等效之外,本發(fā)明不受限制。
權(quán)利要求
1.一種計(jì)算機(jī)系統(tǒng),其包括處理器;所述處理器可訪(fǎng)問(wèn)的隨機(jī)存取存儲(chǔ)器;和所述處理器可訪(fǎng)問(wèn)的持久性數(shù)據(jù)存儲(chǔ)裝置;文件系統(tǒng)軟件,該文件系統(tǒng)軟件由所述處理器執(zhí)行,以管理存儲(chǔ)在所述持久性數(shù)據(jù)存儲(chǔ)裝置中文件的文件數(shù)據(jù)和文件系統(tǒng)結(jié)構(gòu);所述文件系統(tǒng)軟件保存的事務(wù)文件,其中所述事務(wù)文件包括多條事務(wù)記錄,每條事務(wù)記錄具有標(biāo)頭部分和數(shù)據(jù)部分,其中每條所述事務(wù)記錄的標(biāo)頭部分包括一個(gè)或多個(gè)字段,所述一個(gè)或多個(gè)字段包含與所述事務(wù)記錄所表示的文件事務(wù)相對(duì)應(yīng)的信息;其中所述文件系統(tǒng)軟件執(zhí)行啟動(dòng)處理,在所述啟動(dòng)處理中在所述隨機(jī)存取存儲(chǔ)器中產(chǎn)生重構(gòu)文件系統(tǒng),并且當(dāng)所述事務(wù)記錄滿(mǎn)足一個(gè)或更多個(gè)預(yù)定要求時(shí),啟動(dòng)處理將跳過(guò)所述事務(wù)記錄的數(shù)據(jù)部分中存儲(chǔ)的信息的驗(yàn)證;并且其中在所述啟動(dòng)處理完成后發(fā)生給定文件的首次或后續(xù)存取時(shí),所述文件系統(tǒng)軟件對(duì)表示給定文件的每條事務(wù)記錄的先前未驗(yàn)證的數(shù)據(jù)部分進(jìn)行驗(yàn)證。
2.一種計(jì)算機(jī)系統(tǒng),其包括處理器;所述處理器可訪(fǎng)問(wèn)的隨機(jī)存取存儲(chǔ)器;和所述處理器可訪(fǎng)問(wèn)的持久性數(shù)據(jù)存儲(chǔ)裝置;文件系統(tǒng)軟件,其由所述處理器執(zhí)行,以管理存儲(chǔ)在所述持久性數(shù)據(jù)存儲(chǔ)裝置中文件的文件數(shù)據(jù)和文件系統(tǒng)結(jié)構(gòu);所述文件系統(tǒng)軟件保存的事務(wù)文件,其中所述事務(wù)文件包括多條事務(wù)記錄,每條所述事務(wù)記錄具有標(biāo)頭部分和數(shù)據(jù)部分,其中每條所述事務(wù)記錄的標(biāo)頭部分包括一個(gè)或多個(gè)字段,所述一個(gè)或多個(gè)字段包含與所述事務(wù)記錄所表示的文件事務(wù)相對(duì)應(yīng)的信息;其中所述文件系統(tǒng)軟件執(zhí)行啟動(dòng)處理,在所述啟動(dòng)處理中在所述隨機(jī)存取存儲(chǔ)器中生成重構(gòu)文件系統(tǒng),并且除非所述事務(wù)記錄影響所述文件系統(tǒng)結(jié)構(gòu)的元數(shù)據(jù),否則所述啟動(dòng)處理將跳過(guò)對(duì)所述事務(wù)記錄的數(shù)據(jù)部分中存儲(chǔ)的信息的驗(yàn)證;以及其中所述啟動(dòng)處理對(duì)影響所述文件系統(tǒng)結(jié)構(gòu)的元數(shù)據(jù)的事務(wù)記錄的標(biāo)頭部分和數(shù)據(jù)部分中存儲(chǔ)的信息進(jìn)行驗(yàn)證,和在所述啟動(dòng)處理完成以后發(fā)生給定文件的首次或后續(xù)存取時(shí),所述文件系統(tǒng)軟件對(duì)表示給定文件的每條所述事務(wù)記錄的先前未驗(yàn)證的數(shù)據(jù)部分進(jìn)行驗(yàn)證。
3.一種計(jì)算機(jī)系統(tǒng),其包括處理器;所述處理器可訪(fǎng)問(wèn)的隨機(jī)存取存儲(chǔ)器;和所述處理器可訪(fǎng)問(wèn)的持久性數(shù)據(jù)存儲(chǔ)裝置;文件系統(tǒng)軟件,該文件系統(tǒng)軟件由所述處理器執(zhí)行,以管理存儲(chǔ)在所述持久性數(shù)據(jù)存儲(chǔ)裝置中文件的文件數(shù)據(jù)和文件系統(tǒng)結(jié)構(gòu);由閃存介質(zhì)中的所述文件系統(tǒng)軟件保存的事務(wù)文件,所述閃存介質(zhì)被組織成為存儲(chǔ)塊,每個(gè)所述存儲(chǔ)塊包括多頁(yè)存儲(chǔ)頁(yè),且所述事務(wù)文件包括多條事務(wù)記錄,其中每條事務(wù)記錄包括標(biāo)頭部分和數(shù)據(jù)部分,所述每條事務(wù)記錄的標(biāo)頭部分包括一項(xiàng)或多項(xiàng)包含與所述事務(wù)記錄所表示的文件事務(wù)相對(duì)應(yīng)的字段;其中所述文件系統(tǒng)軟件執(zhí)行啟動(dòng)處理,在所述啟動(dòng)處理中在隨機(jī)存取存儲(chǔ)器中生成重構(gòu)文件系統(tǒng),并且當(dāng)?shù)谝淮伟l(fā)生的事務(wù)記錄和隨后的事務(wù)記錄存儲(chǔ)在相同的存儲(chǔ)塊中并影響相同的文件時(shí),所述啟動(dòng)處理驗(yàn)證一系列事務(wù)記錄中的所述第一次發(fā)生的事務(wù)記錄的標(biāo)頭部分,而跳過(guò)對(duì)任何隨后的事務(wù)記錄的驗(yàn)證,并且其中在所述啟動(dòng)處理完成后發(fā)生給定文件的首次或后續(xù)存取時(shí),所述文件系統(tǒng)軟件對(duì)表示給定文件的每條事務(wù)記錄的先前未驗(yàn)證的標(biāo)頭和/或數(shù)據(jù)部分進(jìn)行驗(yàn)證。
4.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中所述啟動(dòng)處理對(duì)存儲(chǔ)在多個(gè)事務(wù)記錄的標(biāo)頭部分中的信息進(jìn)行驗(yàn)證。
5.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中所述啟動(dòng)處理對(duì)錯(cuò)誤校正碼字段進(jìn)行驗(yàn)證,以校驗(yàn)存儲(chǔ)在多條事務(wù)記錄的標(biāo)頭部分中的信息。
6.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中所述一致數(shù)據(jù)存儲(chǔ)裝置包括閃存類(lèi)的介質(zhì)。
7.如權(quán)利要求6所述的計(jì)算機(jī)系統(tǒng),其中將所述閃存類(lèi)的介質(zhì)組織成為存儲(chǔ)塊,且其中每個(gè)所述存儲(chǔ)塊包括多個(gè)存儲(chǔ)頁(yè)。
8.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中所述重構(gòu)文件系統(tǒng)包括重新生成的文件層次結(jié)構(gòu)和外延表。
9.如權(quán)利要求8所述的計(jì)算機(jī)系統(tǒng),其中所述重新生成的文件層次結(jié)構(gòu)是由所述文件系統(tǒng)按照倒置的文件層次結(jié)構(gòu)軟件來(lái)組織。
10.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中除非所述事務(wù)記錄影響所述文件系統(tǒng)結(jié)構(gòu)的元數(shù)據(jù),否則所述啟動(dòng)處理跳過(guò)對(duì)存儲(chǔ)在所述事務(wù)記錄的數(shù)據(jù)部分中的信息的驗(yàn)證,且其中當(dāng)所述事務(wù)記錄影響所述文件系統(tǒng)結(jié)構(gòu)的元數(shù)據(jù)時(shí),所述啟動(dòng)處理對(duì)存儲(chǔ)在事務(wù)記錄的標(biāo)頭部分和數(shù)據(jù)部分中的信息進(jìn)行驗(yàn)證。
11.如權(quán)利要求7所述的計(jì)算機(jī)系統(tǒng),其中當(dāng)所述第一次發(fā)生的事務(wù)記錄和隨后的事務(wù)記錄存儲(chǔ)在相同的存儲(chǔ)塊中并影響相同的文件時(shí),所述啟動(dòng)處理驗(yàn)證一系列事務(wù)記錄中的所述第一次發(fā)生的事務(wù)記錄的標(biāo)頭部分,而跳過(guò)對(duì)任何隨后的事務(wù)記錄的驗(yàn)證。
12.如權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中所述啟動(dòng)處理對(duì)存儲(chǔ)在多個(gè)事務(wù)記錄的標(biāo)頭部分中的信息進(jìn)行驗(yàn)證。
13.如權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中所述啟動(dòng)處理對(duì)錯(cuò)誤校正碼字段進(jìn)行驗(yàn)證,以校驗(yàn)存儲(chǔ)在多個(gè)所述事務(wù)記錄的標(biāo)頭部分中的信息。
14.如權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中所述持久性數(shù)據(jù)存儲(chǔ)裝置包括閃存類(lèi)的介質(zhì)。
15.如權(quán)利要求14所述的計(jì)算機(jī)系統(tǒng),其中所述閃存類(lèi)的介質(zhì)組織成為存儲(chǔ)塊,和其中每個(gè)所述存儲(chǔ)塊包括多個(gè)存儲(chǔ)頁(yè)。
16.如權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中所述重構(gòu)文件系統(tǒng)包括重新生成的文件層次結(jié)構(gòu)和外延表。
17.如權(quán)利要求16所述的計(jì)算機(jī)系統(tǒng),其中所述重新生成的文件層次結(jié)構(gòu)是由所述文件系統(tǒng)按照倒置的文件層次結(jié)構(gòu)軟件來(lái)組織。
18.如權(quán)利要求14所述的計(jì)算機(jī)系統(tǒng),其中當(dāng)所述第一次發(fā)生的事務(wù)記錄和隨后的事務(wù)記錄存儲(chǔ)在相同的存儲(chǔ)塊中并影響相同的文件時(shí),所述啟動(dòng)處理驗(yàn)證一系列事務(wù)記錄中的所述第一次發(fā)生的事務(wù)記錄的標(biāo)頭部分,而跳過(guò)對(duì)任何隨后的事務(wù)記錄的驗(yàn)證。
19.如權(quán)利要求3所述的計(jì)算機(jī)系統(tǒng),其中所述啟動(dòng)處理對(duì)存儲(chǔ)在多條事務(wù)記錄的標(biāo)頭部分中的信息進(jìn)行驗(yàn)證。
20.如權(quán)利要求3所述的計(jì)算機(jī)系統(tǒng),其中所述啟動(dòng)處理對(duì)錯(cuò)誤校正碼字段進(jìn)行驗(yàn)證,以校驗(yàn)存儲(chǔ)在多條事務(wù)記錄的標(biāo)頭部分中的信息。
21.如權(quán)利要求3所述的計(jì)算機(jī)系統(tǒng),其中所述重構(gòu)文件系統(tǒng)包括重新生成的文件層次結(jié)構(gòu)和外延表。
22.如權(quán)利要求21所述的計(jì)算機(jī)系統(tǒng),其中所述重新生成的文件層次結(jié)構(gòu)是由所述文件系統(tǒng)按照倒置的文件層次結(jié)構(gòu)軟件來(lái)組織。
23.如權(quán)利要求3所述的計(jì)算機(jī)系統(tǒng),其中除非所述事務(wù)記錄影響所述文件系統(tǒng)結(jié)構(gòu)的元數(shù)據(jù),否則所述啟動(dòng)處理跳過(guò)存儲(chǔ)在所述事務(wù)記錄的數(shù)據(jù)部分中的信息的驗(yàn)證,并且其中當(dāng)所述事務(wù)記錄影響所述文件系統(tǒng)結(jié)構(gòu)的元數(shù)據(jù)時(shí),所述啟動(dòng)處理對(duì)存儲(chǔ)在所述事務(wù)記錄的標(biāo)頭部分和數(shù)據(jù)部分中的信息進(jìn)行驗(yàn)證。
24.如權(quán)利要求23所述的計(jì)算機(jī)系統(tǒng),其中當(dāng)所述第一次發(fā)生的事務(wù)記錄和隨后的事務(wù)記錄存儲(chǔ)在相同的存儲(chǔ)塊中并影響相同的文件時(shí),所述啟動(dòng)處理驗(yàn)證一系列事務(wù)記錄中的所述第一次發(fā)生的事務(wù)記錄的標(biāo)頭部分,而跳過(guò)對(duì)任何隨后的事務(wù)記錄的驗(yàn)證。
全文摘要
公開(kāi)了一種在實(shí)現(xiàn)基于事務(wù)的文件系統(tǒng)中所使用的計(jì)算機(jī)系統(tǒng)。該計(jì)算機(jī)系統(tǒng)包括處理器、處理器可訪(fǎng)問(wèn)的隨機(jī)存取存儲(chǔ)器和處理器同樣可訪(fǎng)問(wèn)的持久性數(shù)據(jù)存儲(chǔ)裝置。該計(jì)算機(jī)系統(tǒng)還包括文件系統(tǒng)軟件。該文件系統(tǒng)軟件由處理器執(zhí)行,并且操作以管理存儲(chǔ)在持久性數(shù)據(jù)存儲(chǔ)裝置中的文件的文件數(shù)據(jù)和文件系統(tǒng)結(jié)構(gòu)。此外,文件系統(tǒng)軟件保持包括多條事務(wù)記錄的事務(wù)文件。每條事務(wù)記錄具有標(biāo)頭部分和數(shù)據(jù)部分。每條事務(wù)記錄的標(biāo)頭部分包括一個(gè)或多個(gè)字段,指定所述字段以存儲(chǔ)與事務(wù)記錄所表示的文件事務(wù)對(duì)應(yīng)的信息。如果文件系統(tǒng)軟件的操作中斷,則文件系統(tǒng)軟件利用啟動(dòng)處理繼續(xù)進(jìn)行其工作,其中在隨機(jī)存取存儲(chǔ)器中生成重構(gòu)文件系統(tǒng)。在系統(tǒng)重啟過(guò)程中,當(dāng)事務(wù)記錄滿(mǎn)足一個(gè)或多個(gè)預(yù)定標(biāo)準(zhǔn)時(shí),則啟動(dòng)處理跳過(guò)事務(wù)記錄的數(shù)據(jù)部分的驗(yàn)證。可選地,延遲數(shù)據(jù)部分的驗(yàn)證直到完成文件系統(tǒng)啟動(dòng)處理之后的一段時(shí)間。例如,假定文件存取在文件系統(tǒng)啟動(dòng)處理完成后發(fā)生,那么文件系統(tǒng)軟件可在給定文件的首次或后續(xù)存取時(shí),驗(yàn)證表示給定文件的每個(gè)事務(wù)記錄的先前未驗(yàn)證的數(shù)據(jù)部分。
文檔編號(hào)G06F17/30GK1983267SQ20061009318
公開(kāi)日2007年6月20日 申請(qǐng)日期2006年6月23日 優(yōu)先權(quán)日2005年7月1日
發(fā)明者D·道奇 申請(qǐng)人:Qnx軟件操作系統(tǒng)德國(guó)有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
湟源县| 隆昌县| 淳化县| 遂溪县| 卫辉市| 上杭县| 巴楚县| 额尔古纳市| 招远市| 浪卡子县| 辽阳县| 汤阴县| 桐乡市| 武夷山市| 永福县| 武宁县| 昌平区| 肃南| 祁阳县| 东阿县| 辽宁省| 泰州市| 张家川| 长兴县| 蓬安县| 巩留县| 江都市| 永丰县| 鲁山县| 德州市| 平舆县| 延庆县| 乃东县| 吉木萨尔县| 海宁市| 河曲县| 门源| 南京市| 东安县| 山阳县| 库车县|