亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

事件結(jié)構(gòu)化文件系統(tǒng)(esfs)的制作方法

文檔序號:6453704閱讀:550來源:國知局

專利名稱::事件結(jié)構(gòu)化文件系統(tǒng)(esfs)的制作方法
技術(shù)領(lǐng)域
:本發(fā)明主要涉及計算機和文件系統(tǒng)。
背景技術(shù)
:傳統(tǒng)上,計算機文件系統(tǒng)(filesystem)已包括某種在物理位置(例如,磁盤扇區(qū)(disksector))存儲數(shù)據(jù)的機制以及用于識別數(shù)據(jù)及其物理地址(或者可以從其推斷出的邏輯地址)的某種排序的査找表(lookuptable)或索引。以各種形式來實現(xiàn)所述表,并且通常要求具有在文件系統(tǒng)出現(xiàn)添加或改變時重寫或更新先前表條目(entry)的能力。這些方法具有以下缺點(a)存在利用特定(例如,可重寫的)存儲介質(zhì)類型運行該文件系統(tǒng)的依賴性;(b)該文件系統(tǒng)無法跨不同的操作系統(tǒng)和介質(zhì)進行移植;(b)僅能獲得當前的文件系統(tǒng)狀態(tài)。不存在改變或添加的內(nèi)在歷史記錄;(c)當擴展傳統(tǒng)文件系統(tǒng)以提供改變?nèi)罩?logging)時,效率降低。定義-下列詞貫穿全文具有如下含義數(shù)據(jù)(data)-任何類型的信息,其將被寫入到文件系統(tǒng)以用于將來可能的訪問和檢索(retrieval),且通常由外部源提供給文件系統(tǒng)。事件(event)-存在于文件系統(tǒng)中的數(shù)據(jù)結(jié)構(gòu),其表示對文件系統(tǒng)的改變或添加的特定類型。文件系統(tǒng)(fllesystem)-其是使用任意類型的存儲介質(zhì)來組織、存儲、處理、檢索以及管理信息/數(shù)據(jù)的裝置。元數(shù)據(jù)(metadata)-文件系統(tǒng)信息,其保持描述和涉及用戶文件系統(tǒng)對象(object)、文件和目錄(directory)的信息。在ESFS的情境中,文件系統(tǒng)的事件列表為其元數(shù)據(jù)。對于用戶,元數(shù)據(jù)是不能直接訪問的。對象(object)-實體,例如文件系統(tǒng)內(nèi)的文件或目錄?;诒淼奈募到y(tǒng)的實例有Unix文件系統(tǒng)(UFS)及其相關(guān)目錄表和索引節(jié)點(inodes),WindowsFAT(FileAllocationTable,文件分配表)16、FAT32文件系統(tǒng),以及基于主文件表的WindowsNTFS。其它文件系統(tǒng)設(shè)計通過增加日志和記錄功能來擴展現(xiàn)有的文件系統(tǒng),以提高可靠性和可恢復(fù)性以及文件版本化(versioning)。1.計算機文件系統(tǒng)主要分為以下幾類2.基于"索引節(jié)點"的目錄表(UnixUFS、FFS、ext2/ext3);3.基于文件分配表(FAT)的文件系統(tǒng)(FAT16/FAT32等);4.利用表和索引文件以產(chǎn)生元數(shù)據(jù)的基于主文件表(MFT)的微軟NTFS;5.日志文件系統(tǒng)(普遍基于獨立日志的索引節(jié)點);6.版本化文件系統(tǒng)(VMS、開放VMS、Cedar:類似表/索引節(jié)點的內(nèi)部結(jié)構(gòu));7.日志結(jié)構(gòu)化文件系統(tǒng)(LFS、SpriteLFS:類似UFS的內(nèi)部結(jié)構(gòu)以及依序?qū)懭氲乃饕?jié)點映射表)。以上所有文件系統(tǒng)的實現(xiàn),均要求更新或重寫介質(zhì)上先前寫入的元數(shù)據(jù)表和數(shù)據(jù)區(qū)的能力,并且依賴于可重寫的表、索引、或索引節(jié)點圖(map)。主文件表(MFT)文件系統(tǒng),例如來自微軟的NTFS,是著重圍繞可重寫的表和索引的使用而設(shè)計的,其中在特別分配的元數(shù)據(jù)文件中維護所述可重寫的表和索引。日志文件系統(tǒng)被設(shè)計用來提高在經(jīng)過影響系統(tǒng)的事故或故障之后的可靠性和可恢復(fù)性。這種文件系統(tǒng)的日志組件記錄自一個"檢査點(checkpoint)"或確知文件系統(tǒng)一致的時間點(pointintime)之后的改變,其中通過參考自"檢査點"之后所記錄的改變能夠恢復(fù)文件系統(tǒng)。日志組件通常重復(fù)使用分配給它的空間,并且除了用于提高可靠性的目的之外,不是構(gòu)成文件系統(tǒng)整體本身所必須的。日志的內(nèi)容通常僅局限于自最后的檢查點之后的那些改變。版本化文件系統(tǒng)以其原始形式維護文件,并使用相同的文件名和遞增的版本號來保存任何后續(xù)改變??捎玫臍v史版本號通常是有限的并依賴于應(yīng)用和實施。文件的版本通常被實現(xiàn)為"保存"具有命名約定(namingconvention)的獨立文件,其中命名約定用于以某種序列或順序處理具體文件的不同版本。通常以比磁盤操作系統(tǒng)或本發(fā)明所針對的低級文件系統(tǒng)更接近用戶的層級,來實現(xiàn)這些系統(tǒng)。基于日志的文件系統(tǒng)有可能是本發(fā)明的最接近的現(xiàn)有技術(shù)。正如MendelRosenblum禾卩JohnK.Ousterhout于1991年7月24日發(fā)表在"Proceedingsofthe13thACMSymposiumonOperatingSystemPrinciples"中的論文"TheDesignandImplementationofaLog-structuredFileSystem(日志結(jié)構(gòu)化文件系統(tǒng)的設(shè)計與實現(xiàn))"以及1992年2月的"ACMTransactionsonComputerSystem"(與臨時申請同時提交的副本)所述,Sprite和LFS為文件系統(tǒng)家族的典型,并通常是利用在傳統(tǒng)的基于表的文件系統(tǒng)(例如UFS)之后被設(shè)計的內(nèi)部結(jié)構(gòu)來實現(xiàn)。日志組件記錄例如索引節(jié)點和目錄條目的標準文件系統(tǒng)結(jié)構(gòu),并增加描述所有分配的索引節(jié)點的當前位置的映射表。隨后將整個索引節(jié)點映射表定期重寫到日志的末端,然后以傳統(tǒng)方式使用整個索引節(jié)點映射表以漫游當前的文件系統(tǒng)結(jié)構(gòu)。有鑒于此,期望提供一種計算機文件系統(tǒng),其能夠克服現(xiàn)有系統(tǒng)的至少一些不足或提供現(xiàn)有技術(shù)中不存在的功能。
發(fā)明內(nèi)容本發(fā)明為一種實現(xiàn)文件系統(tǒng)的方法,其不通過基于表的元數(shù)據(jù),而使用預(yù)定事件類型的列表或序列來描述該文件系統(tǒng)的狀態(tài)、內(nèi)容以及完整歷史。這對于(在其它使用中)實現(xiàn)要求安全、可靠以及自審核(self-auditing)的檔案式應(yīng)用和顯竊啟(tamper-evident)存儲是有用的,尤其對于在電子存儲系統(tǒng)中要求規(guī)范服從(regulatorycompliance)的"寫一次讀多次"(WORM)性能的應(yīng)用是有用的。該系統(tǒng)通過設(shè)計不需要重寫任何先前寫入的信息,并可以有效地且兼容地(consistently)跨所有類型(包括WORM、可擦除的、可重寫的、和磁帶式)的數(shù)字存儲介質(zhì)而實現(xiàn)。與典型的分層文件系統(tǒng)不同,ESFS并不使用其元數(shù)據(jù)中的任何形式的表來保持描述該文件系統(tǒng)內(nèi)容的信息?;诒淼南到y(tǒng)與ESFS全然不同,ESFS使用對序列化事件列表的遞增更新來在發(fā)生改變時反映這些改變,并不需要任何形式的內(nèi)部表。取代表或索引(例如,傳統(tǒng)文件系統(tǒng)的文件分配表或索引節(jié)點),ESFS使用預(yù)定(但可擴展)的文件系統(tǒng)"事件"的小集合(smallset)。單個事件為通常描述單個文件系統(tǒng)操作(例如,創(chuàng)建文件或目錄、寫文件、或關(guān)閉文件等)的數(shù)據(jù)結(jié)構(gòu),并且如果是可應(yīng)用的話,數(shù)據(jù)的位置與該事件相關(guān)。利用事件內(nèi)包含的一個或多個"指針",將多個事件相互鏈接或聯(lián)系在序列中。幾種指針類型被用來建立和漫游該文件系統(tǒng)。通過利用事件描述中包含的指針來漫游該文件系統(tǒng)的結(jié)構(gòu),能夠執(zhí)行用以操作文件系統(tǒng)的全部必要任務(wù),其中該文件系統(tǒng)具有與傳統(tǒng)分層文件系統(tǒng)相同的特征和操作。事件結(jié)構(gòu)化文件系統(tǒng)的特征包括-文件系統(tǒng)的費用(overhead)低基本的ESFS實現(xiàn)非常簡單。用于存儲事件的費用是最小的。不存在為事件準備介質(zhì)或預(yù)分配存儲空間的需求。完美實現(xiàn)WORM應(yīng)用ESFS將文件系統(tǒng)的改變按它們發(fā)生的順序記錄為遞增事件,而不是重寫先前寫入的數(shù)據(jù)。因此ESFS非常適用于需要WORM性能或介質(zhì)的應(yīng)用??蓴U展的事件ESFS的實現(xiàn)能夠增加定制的事件類型,從而增加新的特征和控制。獨立于主機ESFS被設(shè)計為獨立于主機系統(tǒng),并且非常適于可移動的介質(zhì)裝置。自審核ESFS是自容式(self-contained)的,并不需要額外的表、索引或數(shù)據(jù)庫,這些是為了訪問該文件系統(tǒng)的內(nèi)容所需要的。ESFS事件可以用于在自其創(chuàng)建后的任何時間審核和產(chǎn)生該文件系統(tǒng)的內(nèi)容和狀態(tài)的歷史日志。依序或隨機訪問存儲裝置和介質(zhì)。適于所有介質(zhì)類型WORM、可擦除介質(zhì)、可重寫的、以及預(yù)錄制的。安全包括內(nèi)置的竊啟(tamper)檢測。ESFS能夠同時使用安全哈希(hash)算法和加密算法來確保數(shù)據(jù)的完整性。內(nèi)置版本化ESFS追蹤文件和多媒體創(chuàng)作軟件的版本或修訂版本。這種日志類特征被構(gòu)造成將多個事件鏈接/關(guān)聯(lián)在一起的方式,并能夠推斷、生成或提取報告??梢浦残?文件系統(tǒng)是跨所有支持的操作系統(tǒng)而二進制可兼容的。占用空間(footprint)小-費用和資源需求低??焖?能夠以非常接近基礎(chǔ)(underlying)硬件的額定速度的速度將數(shù)據(jù)歸檔。安全-ESFS提供通過文件數(shù)據(jù)或文件系統(tǒng)元數(shù)據(jù)檢測竊啟的機制??梢院喴枋鲈揈FSF如下1.文件系統(tǒng)元數(shù)據(jù)包括一個或多個事件,所述事件以一種方式鏈接在一起,用以與所有其它事件描述一起來完整描述該文件系統(tǒng)的整體內(nèi)容和結(jié)構(gòu)。2.可以通過增強或增加事件類型來擴展ESFS的功能性和特征,用以允許例如用于特定應(yīng)用、安全模塊、或操作系統(tǒng)(OperatingSystem,OS)的ESFS定制(customization)。3.ESFS能夠獨立于主機計算硬件、操作系統(tǒng)、存儲裝置或介質(zhì)被實現(xiàn)。這是因為4.因為它內(nèi)在的可移植性,ESFS非常適用于可移動介質(zhì)和檔案式應(yīng)用。5.ESFS具有小的實現(xiàn)"占用空間",且系統(tǒng)的邏輯和結(jié)構(gòu)很容易被理解。在現(xiàn)有技術(shù)中,文件系統(tǒng)的實現(xiàn)必須在介質(zhì)可移植性、介質(zhì)類型、性能、安全性、檢驗、審核支持、以及耐用性(robustness)之間做出權(quán)衡。本發(fā)明的目的是避免或緩解現(xiàn)有技術(shù)中的至少一個缺點。本發(fā)明的ESFS系統(tǒng)可兼容地應(yīng)用于所有形式的可擦除和寫一次介質(zhì)中,包括物理裝置和內(nèi)存(in-memory)設(shè)備。這個方法的優(yōu)點很顯著,尤其在"寫一次讀多次(WORM)"性能的應(yīng)用中是有用的或理想的、或者在驗證所存儲信息的完整性的能力時是有用的或理想的。通過結(jié)合附圖閱讀以下本發(fā)明特定實施例的描述,本領(lǐng)域普通技術(shù)人員將清楚本發(fā)明的其它方面和特征。下面將參照附圖描述本發(fā)明的實施例,所示實施例僅為示例,所述附圖包括圖1為示出ESFS事件間關(guān)系的框圖2為示出ESFS巻結(jié)構(gòu)的各部分之間關(guān)系的框圖。定義-下列詞貫穿全文具有如下含義塊(block)-可通過ESFS文件系統(tǒng)尋址的存儲最小單位。塊地址(blockaddress)-用于訪問塊的唯一位置標識符。當前事件(cmrentevent)-由文件系統(tǒng)運行所參考的將要執(zhí)行的事件。數(shù)據(jù)(data)-任何類型的信息,其將被寫入到文件系統(tǒng)以用于將來可能的訪問和檢索,且通常由外部源提供給文件系統(tǒng)。目錄(directory)-文件系統(tǒng)對象,其提供用以命名或組織多個相關(guān)文件的方式。[例如,用戶可以對目錄執(zhí)行如下文件系統(tǒng)操作創(chuàng)建、刪除、重命名、獲取信息和列表文件。]終點(endpoint)-目錄中末尾的文件或目錄事件位置。事件(event)-存在于文件系統(tǒng)中的數(shù)據(jù)結(jié)構(gòu),指示對該文件系統(tǒng)的改變或添加的特定類型。事件地址(eventaddress)-事件地址指定特定事件的位置。它由塊地址和塊偏移(blockoffset)組成,表示該事件在塊中的字節(jié)位置。文件(file)-文件系統(tǒng)對象,其提供通過名稱存儲或復(fù)檢(recall)數(shù)據(jù)的方式。文件內(nèi)的數(shù)據(jù)可以依序或隨機地被讀和寫。用戶可以例如執(zhí)行如下文件系統(tǒng)操作創(chuàng)建、刪除、打開、關(guān)閉、定位、讀、寫、重命名、設(shè)置文件時間以及獲取信息。文件系統(tǒng)(filesystem)-是使用任意類型的存儲介質(zhì)來組織、存儲、處理、檢索以及管理信息/數(shù)據(jù)的裝置。元數(shù)據(jù)(metadata)-文件系統(tǒng)信息,其保持描述和涉及用戶文件系統(tǒng)對象、文件和目錄的信息。在ESFS的情境中,文件系統(tǒng)的事件列表為其元數(shù)據(jù)。對于用戶,元數(shù)據(jù)是不能直接訪問的。偏移(offset)-從塊的開端到事件的開端的字節(jié)數(shù)。分區(qū)(partition)-具有保持文件系統(tǒng)全部或部分的可尋址扇區(qū)的邏輯存儲器(container)。指針(pointer)-用于將事件鏈接進列表的事件地址。詳細描述一般來說,本發(fā)明提供一種文件系統(tǒng),其包括與數(shù)據(jù)相關(guān)聯(lián)的事件的有序列表,且無論是依序或隨機訪問模式(或別的方式),均可以同樣地實現(xiàn)于所有常用的數(shù)字存儲介質(zhì)類型上,包括寫一次、可擦除、以及可重寫的介質(zhì)。該系統(tǒng)使用具有相關(guān)數(shù)據(jù)的事件的序列和類型,而并不用參考任何外部表或日志條目來進行操作,并且該系統(tǒng)是可驗證的。通常系統(tǒng)的事件列表是可以以預(yù)定順序來訪問的,但不限于反向的時間順序。ESFS包括與數(shù)據(jù)相關(guān)聯(lián)的事件的有序列表,其中通過在事件和數(shù)據(jù)驗證裝置中提供校驗和(checksum)以及安全信息而使所述數(shù)據(jù)在整體上或部分可驗證。使用"寫一次讀多次(WORM)"模型,而不管基礎(chǔ)介質(zhì)(underlyingmedia)類型為何,可以有效實現(xiàn)ESFS??梢宰x介質(zhì)中先前寫入的區(qū)域,而絕不會將其重寫或擦除。使用元數(shù)據(jù)和數(shù)據(jù)中至少一個上的校驗和以及安全信息,將ESFS制成顯竊啟的。下述方法將描述,如何使用事件預(yù)定集合中的小集合架構(gòu)和實現(xiàn)文件系統(tǒng),其中事件預(yù)定集合中的每一個均描述該文件系統(tǒng)的遞增改變。例如創(chuàng)建文件或?qū)懳募氖录纬捎行蛄斜?,該有序列表使得文件系統(tǒng)的準確狀態(tài)和內(nèi)容在任何時間點都是已知的。與特定目錄或文件相關(guān)聯(lián)的多個事件隨著文件系統(tǒng)增大而邏輯地鏈接在一起。這個方法是獨特的,并以構(gòu)建計算機文件系統(tǒng)的方式表現(xiàn)基本改變?,F(xiàn)有技術(shù)通常利用重寫、擴展、或更新表和索引來反映文件系統(tǒng)的添加和更新。此外,文件系統(tǒng)的實現(xiàn)通常特定于磁性介質(zhì)或者寫一次的介質(zhì),且沒有自審核。自審核意味著能夠確保文件系統(tǒng)(包括本發(fā)明的文件系統(tǒng))的完整性,而無需參考外部的或次要的信息存儲,例如日志或記錄文件。利用本發(fā)明的方法,事件的列表和相關(guān)文件數(shù)據(jù)合起來成為文件系統(tǒng),并包括自創(chuàng)建起的完整歷史。對于正常使用,或者對于審核、完整性檢査或顯竊啟,均無需其它信息源。通常利用事件內(nèi)的信息依序或隨機訪問ESFS文件系統(tǒng)中存儲的事件來漫游至期望位置,但提供這種訪問的特定裝置對于ESFS實現(xiàn)器(implementer)是開放的。例如,要求寫一次性能的實現(xiàn)可以利用反向鏈接列表實現(xiàn)依序訪問,而可重寫的實現(xiàn)可以利用正向和反向鏈接。因此,ESFS僅要求具有如下的能力,即通過參考與存儲塊相關(guān)聯(lián)的唯一標識符或塊編碼來讀和寫物理介質(zhì)或電子介質(zhì)上的特定存儲塊。為了清楚描述以下方法,本文中將主要使用最受限的情況使用寫一次介質(zhì)的反向鏈接。典型地,可重寫的實現(xiàn)將為相同事件和技術(shù)的超集(superset),并且除了額外實現(xiàn)特有的改變之外,仍依賴于以已知順序依序訪問事件列表的能力。本文描述的方法還證明了,所有典型的文件系統(tǒng)操作(創(chuàng)建、修改、刪除文件和目錄)均可利用預(yù)定的、有序事件的小集合來完成,而根本不需要重寫存儲介質(zhì)。還應(yīng)能理解,對于使用事件序列作為基本數(shù)據(jù)范式(pamdigm)以提供文件系統(tǒng)的計算機文件系統(tǒng),按時間順序定序可能并不是唯一有用的定序邏輯。ESFS特征事件結(jié)構(gòu)化文件系統(tǒng)的特征包括文件系統(tǒng)的費用低基本的ESFS實現(xiàn)非常簡單。用于存儲事件的費用是最小的。不存在為事件準備介質(zhì)或預(yù)分配存儲空間的需求。完美實現(xiàn)WORM應(yīng)用ESFS將文件系統(tǒng)的改變按它們發(fā)生的順序記錄為遞增事件,而不用重寫先前寫入的數(shù)據(jù)。因此ESFS非常適用于需要WORM性能或介質(zhì)的應(yīng)用。可擴展的事件ESFS的實現(xiàn)能夠增加定制的事件類型,從而增加新的特征和控制。獨立于主機ESFS被設(shè)計為獨立于主機系統(tǒng),并且非常適于可移動介質(zhì)裝置。自審核ESFS是自容式的,并不要求額外的表、索引或數(shù)據(jù)庫,這些是為了訪問該文件系統(tǒng)的內(nèi)容所需要的。支持依序或隨機訪問存儲裝置。同時支持WORM和可擦除介質(zhì)。安全包括內(nèi)置的竊啟檢測。ESFS能夠同時使用安全哈希算法和加密算法來確保數(shù)據(jù)的完整性。內(nèi)置版本化ESFS追蹤文件和多媒體創(chuàng)作軟件的版本或修訂版本。這種類似日志的特征被構(gòu)造成將多個事件鏈接/關(guān)聯(lián)在一起的方式,并能夠推斷、生成或提取報告??梢浦残?文件系統(tǒng)是跨所有支持的操作系統(tǒng)而二進制可兼容的。占用空間小-費用和資源需求低??焖?能夠以非常接近基礎(chǔ)硬件的額定速度的速度將數(shù)據(jù)歸檔。安全-ESFS提供用以檢測竊啟文件數(shù)據(jù)或文件系統(tǒng)元數(shù)據(jù)的機制。實現(xiàn)的需求ESFS概念是非常靈活的,并可在各種硬件平臺、操作系統(tǒng)和存儲裝置上實現(xiàn)。忽略特定的實現(xiàn)問題,為了成功的實現(xiàn)和操作,ESFS具有以下最低需求可尋址的塊存儲裝置。巻的結(jié)構(gòu)圖1為基于ESFS的文件系統(tǒng)的巻結(jié)構(gòu)圖。該文件系統(tǒng)的組件有文件系統(tǒng)巻標(FileSystemVolumeLabel,FSVL):該項目是可選的,并取決于實現(xiàn)。它向主機提供識別存儲介質(zhì)上特定ESF實現(xiàn)的方法。文件系統(tǒng)信息塊(FileSystemInformationBlock,FSIB):i亥結(jié)構(gòu)提供描述ESF文件系統(tǒng)的基本信息,包括巻大小、幾何構(gòu)型以及指向第一事件和第一數(shù)據(jù)塊的邏輯地址的指針。取決于實現(xiàn),F(xiàn)SIB還可包含指向末尾事件和末尾數(shù)據(jù)塊的邏輯地址的指針。事件通過指針鏈接在一起的各數(shù)據(jù)結(jié)構(gòu)。對于寫一次的應(yīng)用,利用一個或多個類型的指針將事件反向鏈接在一起。事件的實例有創(chuàng)建目錄、創(chuàng)建文件、寫數(shù)據(jù)、移除文件等。數(shù)據(jù)文件數(shù)據(jù)的邏輯塊,也即用戶文件的內(nèi)容。通過"數(shù)據(jù)事件"來指向數(shù)據(jù)塊。事件結(jié)構(gòu)化文件系統(tǒng)的操作在下文將詳細描述用于實現(xiàn)核心文件系統(tǒng)操作的方法。該方法包括下面的操作巻的創(chuàng)建-將存儲介質(zhì)初始化為空,為使用文件作準備;巻的安裝-如何使得己有的ESFS可用于訪問和更新。巻的創(chuàng)建1.如果實現(xiàn)需要的話,通常在裝置的塊零(blockzero)處寫入巻標。2.以已知的塊偏移將文件系統(tǒng)信息塊寫在存儲介質(zhì)上。3.準備根目錄的創(chuàng)建目錄事件。4.如果實現(xiàn)需要的話,對描述介質(zhì)上所有可用塊的空閑塊(freeblock)列表進行初始化。將空閑塊列表寫入磁盤。5.將卸載的事件寫入磁盤。巻的識別1.如果實現(xiàn)需要的話,讀取介質(zhì)上的文件系統(tǒng)巻標(FSVL,典型的塊零)。執(zhí)行驗證以確保它是支持的巻類型和版本。2.嘗試在實現(xiàn)特有的已知塊位置處讀ESFS文件系統(tǒng)信息塊(FSIB)。3.驗證ESFS實現(xiàn)特有的標識符和版本號。巻的安裝1.為了訪問或安裝ESFS巻,一般采取下列步驟2.如果實現(xiàn)需要的話,讀取文件系統(tǒng)巻標(FSVL)。3.嘗試在實現(xiàn)特有的已知塊位置處讀ESFS文件系統(tǒng)信息塊(FSIB)。4.作為最小化,F(xiàn)SIB將包含定位第一事件(第一事件地址)的必要f曰息。5.利用實現(xiàn)特有的方法,定位巻的末尾事件。優(yōu)選的方法是,通過執(zhí)行文件系統(tǒng)區(qū)域的二進制搜索來定位具有與FSIB標識符相匹配的標識符的ESFS塊,以此定位末尾事件。末尾事件應(yīng)為卸載的事件,表示最后安裝的會話是正常關(guān)閉的,且基本文件系統(tǒng)的完整性未遭到破壞。6.如果末尾事件不是卸載的事件,則該次巻安裝失敗。7.典型地,實現(xiàn)將在結(jié)構(gòu)中保存關(guān)于已安裝的巻的信息,且該結(jié)構(gòu)被后續(xù)的文件系統(tǒng)功能參考。ESFS路徑名ESFS路徑名是在目錄或文件創(chuàng)建時分配給目錄或文件的唯一標識符。在文件創(chuàng)建之后,路徑名可以用于訪問或更新目錄或文件。ESFS路徑名可以是實現(xiàn)特有的。普通文件系統(tǒng)的實現(xiàn)是分層的,包括上層目錄(根目錄),具有零個或多個文件條目或子目錄條目。根目錄下的每個文件系統(tǒng)條目均具有父目錄。每個文件或目錄條目在其父目錄中具有唯一的名稱。具體文件的路徑名包括后面跟隨有文件名的一個或多個目錄部分(component),且每個目錄部分均由路徑名分隔符(例如"f")隔開。為了訪問具體的文件,完整或絕對的路徑名可以用于通過所有父目錄層漫游,直到到達末尾的文件名構(gòu)件。事件通過事件的有序列表來描述使用該方法構(gòu)建的文件系統(tǒng)的結(jié)構(gòu)和內(nèi)容。在塊內(nèi)包含有一個或多個事件,其中塊由一個或多個物理存儲扇區(qū)組成。每個塊均可通過塊地址被尋址,并包含與巻的FSIB相關(guān)聯(lián)的唯一簽名。特定事件可通過事件地址被尋址,其中事件地址同時包含塊地址和該事件在特定塊內(nèi)的字節(jié)偏移。存在幾種不同類型的事件,每個事件描述文件系統(tǒng)的單個改變,例如創(chuàng)建文件或目錄、或者寫文件。各事件可以通過事件指針鏈接在一起,從而關(guān)聯(lián)相關(guān)的事件以及容易通過文件系統(tǒng)漫游。事件類型本發(fā)明的系統(tǒng)使用多種事件類型,這些事件類型被認為是通常由用于創(chuàng)建目錄或文件的大多數(shù)工具所使用的核心事件(coreevent)。還描述了擴展事件,如果具體實現(xiàn)需要的話,擴展事件能夠提供額外的文件系統(tǒng)功能,例如重命名或刪除文件和目錄??臻g(space)事件可以用來執(zhí)行存儲管理,用于在創(chuàng)建、寫入、或刪除文件時進行塊的分配和收回(reclaiming)。ESFS事件是可擴展的,使得文件系統(tǒng)在保持與更早的實現(xiàn)相兼容的同時能夠容易地增大和發(fā)展。例如,"安全"事件可以建立文件和目錄的訪問控制機制。"限額(quota)"事件可以建立目錄內(nèi)的空間限制。"流(stream)"事件可以將多種類型的數(shù)據(jù)流與具體的文件關(guān)聯(lián)起來。<table>tableseeoriginaldocumentpage14</column></row><table><table>tableseeoriginaldocumentpage15</column></row><table>事件指針:<table>tableseeoriginaldocumentpage15</column></row><table>鏈接指針鏈接指針用于連接相關(guān)的事件,也即,與一個特定目錄、文件或列表相關(guān)聯(lián)的事件。以下的表格示出了事件類型中可能的連接示例。對于寫一次的實現(xiàn),連接指針將指向末尾的相關(guān)事件(反向鏈接),如果存在的話;否則它將為空(零(nil))??芍貙懙膶崿F(xiàn)可以選擇反向鏈接、正向鏈接或兩者。為了清楚描述該方法,將使用最受限的情形反向鏈接和寫一次的介質(zhì)。可重寫的實現(xiàn)通??梢允窍嗤录图夹g(shù)的超集,除了額外實現(xiàn)特有的改變之外,仍依賴于以時間順序的方式依序訪問事件列表的能力。本文描述的方法還證明,利用有序事件能夠完成所有典型的文件系統(tǒng)操作,而根本無需重寫已有的信息。下面的三個表格被組織為具有"從"行和"到"列。"從"列中的事件將指向"到"行中的事件。例如刪除文件事件可能指向關(guān)閉文件或重命名文件事件,取決于哪一個是最后出現(xiàn)的。可以利用鏈接和父指針關(guān)聯(lián)用于特定文件的事件。例如,相關(guān)的事件可能包括文件重命名或者文件刪除事件。用于文件事件的指針!^鏈接指針,P:父指針至U:針對相同文件的最新的文件事件從創(chuàng)建文件關(guān)閉文件刪除文件數(shù)據(jù)重命名文件創(chuàng)建文件關(guān)閉文件刪除文件數(shù)據(jù)PP重命名文件建立指向先前文件修訂版本的鏈接建立指向先前文件版本的鏈接建立從新的文件名到舊的文件名的鏈接目錄事件均鏈接到其它相關(guān)的目錄事件。在每個ESF名稱結(jié)構(gòu)中,相關(guān)的目錄事件將具有相同的名稱字段(field)。用于目錄事件的指針!^鏈接指針,?=父指針到相同目錄的最新事件從創(chuàng)建目錄刪除目錄重命名目錄創(chuàng)建目錄刪除目錄重命名目錄獲得新的目錄版本,如果實現(xiàn)支持版本的話兄弟指針兄弟指針指向具有相同父目錄的最新的文件或目錄事件。父指針對于文件或目錄事件,父指針指向父目錄的創(chuàng)建目錄事件,除非父目錄為根目錄或頂層目錄("/"),在這種情況下父指針為空(零)。對于數(shù)據(jù)事件,父指針指向任何一個最新的關(guān)閉或創(chuàng)建事件。ESFS路徑名查找ESFS路徑名查找是通過ESFS事件漫游的過程,用以定位與路徑名相關(guān)聯(lián)的最新的文件或目錄事件。它是頻繁用到的過程,同樣,具體的實現(xiàn)通常包括緩存(caching)機制,以提升被頻繁訪問的文件和目錄的性能。ESFS內(nèi)的每個目錄或文件均具有唯一的路徑名。在分層的實現(xiàn)中,路徑名首先被分割成一個或多個部分(component),其中各部分由路徑名分隔符隔開。每個部分隨后被用于確定該部分的名稱在相應(yīng)目錄層級中的存在。方法下面解釋用于定位分層ESF文件系統(tǒng)中條目的方法。為了有助于解釋,使用"/dir01/myfiles/mydoc/docl.txt"作為樣本路徑名(a)將路徑名分成各部分,其中不論哪一部分先出現(xiàn),每個部分均是由實現(xiàn)特有的路徑名分隔符字符(在該示例中為"/")或字符串的終點分隔開的一串字符。接下來,各部分的列表(例如,dir001、myfiles、mydoc、doc.txt)被用于某時在目錄層級上漫游文件系統(tǒng)。搜索開始于具有路徑的第一部分"dir001"的根目錄。(b)在正被檢測的目錄層級中定位最新的事件條目。(c)如果不存在文件條目,則確定路徑名不存在。該路徑名因失敗而終止。(d)為了與路徑名的當前部分匹配,檢測事件記錄。(e)如果名稱不匹配,則繼續(xù)兄弟鏈接以定位該目錄中的下一個相關(guān)條目。跳轉(zhuǎn)到(c)。(f)路徑名的當前部分與事件名相匹配。如果存在另外的部分,選擇下一個(g)路徑名部分的名稱,并跳轉(zhuǎn)到(b)。(h)如果事件為關(guān)閉事件或創(chuàng)建目錄事件,則搜索以成功告終。(0如果事件為刪除目錄、重命名目錄、刪除文件、或重命名文件,搜索以失敗告終。ESFS終點查找由于ESFS隨著文件系統(tǒng)的增大創(chuàng)建相關(guān)事件之間的鏈接,所以訪問事件列表中的末尾條目(或者"終點(endpoint)")成了被頻繁執(zhí)行的處理。具體的實現(xiàn)可能選擇合并終點的緩存機制,以減小訪問被頻繁參考的目錄的時間和增加新事件的時間。方法下面的步驟假定,己執(zhí)行了ESFS路徑名査找,且所需的事件地址是可用的(a)從ESFS文件系統(tǒng)中最后寫入的事件開始,以反向順序檢查事件列表,直到找到具有匹配的父事件地址的事件。(b)如果找到了匹配,最新的事件就是終點事件地址。這個地址一般將被保存在實現(xiàn)特有的終點緩存器中。(c)如果沒有找到匹配,終點事件為零(空)。ESF塊事件文件系統(tǒng)的普遍需求之一是,隨著創(chuàng)建、更新或刪除文件和目錄對分配給文件和目錄的存儲空間進行管理。必須從可用或空閑塊的己知列表(空閑塊列表)分配塊。在每次分配或釋放塊之后,必須隨后更新空閑塊列表。可使用簡單的塊分配方案進行實現(xiàn),其根本不需要塊事件。例如,可以從相鄰的區(qū)域分配塊,而該區(qū)域的大小在每次分配之后被減小。如果實現(xiàn)要求更復(fù)雜的空間管理,則塊事件可以用于這個目的。在這種情況下,巻創(chuàng)建將準備空閑列表事件,據(jù)此可以訪問和跟蹤所有的后續(xù)塊分配。為了提高效率,具體的實現(xiàn)僅需要生成和更新單個塊事件,只要分配是相鄰的;并且,僅需要在卸下文件系統(tǒng)時,恰好在寫入卸載事件之前,提交塊事件。描述三種類型的塊事件(i)分配塊事件在每次將塊分配給文件用以保存數(shù)據(jù)且塊被成功寫入時,生成分配塊事件。然而,由于在寫一次存儲模式中分配往往是相鄰的,因此對于安裝會話(session)期間可能僅需要一個分配塊事件。(ii)空閑塊事件通常僅在對文件的寫入失敗時創(chuàng)建空閑塊事件,并且隨后將被分配用于保持所寫數(shù)據(jù)的塊返回給空閑塊列表。(m)空閑列表事件在卸載文件系統(tǒng)時寫入空閑列表事件,且空閑列表事件包含相鄰空閑塊條目的完整、更新的列表。當該列表為空時,該文件系統(tǒng)為滿。盡管具體的方法取決于實現(xiàn),下面描述利用反向鏈接事件來管理塊事件和空閑塊列表的方法。為了描述清楚,假定已創(chuàng)建了ESFS文件系統(tǒng),且已建立最近的卸載事件。卸載事件包含指向空閑塊列表和分配塊列表的指針。在巻安裝操作期間,將每個列表的內(nèi)容載入到存儲器中。分配塊的方法這個方法的目的是從空閑塊列表分配一個或多個塊給將數(shù)據(jù)寫到所分配塊的文件。通過表示所需塊的數(shù)量的參數(shù)使該方法進行,并且如果成功的話,則返回所分配的塊的列表。(a)出于解釋的目的,由空閑塊列表指定的事件為當前事件。剩余塊為被初始化為所需塊數(shù)量的值。(b)如果空閑塊列表為空,或者沒有包含足夠的可用塊以滿足所請求的數(shù)量,該請求失敗。(c)創(chuàng)建新的、空的分配事件。將該事件的兄弟指針設(shè)置為指向先前的分配事件,如果有的話。(d)將新分配事件的起始塊地址設(shè)置為由當前事件指定的起始地址。(e)如果當前事件包含足夠的塊以滿足所請求的剩余塊(i)將新分配事件中的塊數(shù)量設(shè)置為所請求的總數(shù)。(ii)增加分配給當前事件的起始地址的塊的數(shù)量。(m)跳轉(zhuǎn)到(g)。i.當前事件僅部分滿足請求ii.將新分配事件中塊的總數(shù)設(shè)置為當前事件中的可用數(shù)iii.釋放與當前事件列表項目相關(guān)聯(lián)的任何資源,并將當前事件設(shè)置為空閑塊列表中的下一個事件。iv.從剩余塊中減去所分配的塊的數(shù)量。v.如果新分配事件與最新的系統(tǒng)分配塊事件相鄰,則將最新系統(tǒng)分配塊事件的尺寸擴大當前請求的尺寸。vi.跳轉(zhuǎn)到(c)。(g)將空閑塊列表設(shè)置為當前事件。(h)如果新分配事件與最新的系統(tǒng)分配塊事件相鄰,則將最新系統(tǒng)分配塊事件的尺寸擴大當前請求的尺寸。否則,創(chuàng)建新的系統(tǒng)分配塊事件,并將兄弟指針設(shè)置為指向先前的系統(tǒng)分配塊事件。(i)分配事件現(xiàn)在包含一個或多個相鄰的塊區(qū)域的列表。(j)返回成功??臻e塊的方法如果實現(xiàn)是使得釋放或回收分配(de-allocate)先前分配給文件的塊,則可以通過以下操作來完成這種實現(xiàn),也即創(chuàng)建塊事件的列表,為塊的每個相鄰區(qū)域創(chuàng)建一個項目、以及將該列表插在空閑塊列表的開端。目錄操作創(chuàng)建目錄下面解釋在ESF文件系統(tǒng)中創(chuàng)建新目錄的方法。由外部應(yīng)用程序?qū)⑿履夸浀穆窂矫峁┙o文件系統(tǒng),并執(zhí)行下列步驟(a)對指定的目錄路徑名執(zhí)行ESFS路徑名查找。(b)如果路徑名存在,則該目錄創(chuàng)建失敗并退出該方法。(C)如果路徑名不存在繼續(xù)對新目錄的父目錄執(zhí)行終點查找。記住父目錄的事件地址。(d)創(chuàng)建新的、空的創(chuàng)建目錄事件。將這個事件的兄弟指針設(shè)置為指向(C)中定位的終點。將這個事件的父指針設(shè)置為來自(C)。將路徑名部分復(fù)制到事件記錄。(e)將該事件提交給文件系統(tǒng)。(f)完成。重命名目錄下面解釋在ESF文件系統(tǒng)中重命名己有目錄的方法。外部應(yīng)用程序提供已有的路徑名和新的路徑名,并隨后執(zhí)行下列步驟(a)執(zhí)行已有目錄路徑名的ESFS路徑名查找。(b)如果路徑名不存在,則該重命名操作失敗。(c)如果路徑名不是一個目錄,則該重命名操作失敗。(d)已有的目錄路徑名是有效的。記住創(chuàng)建目錄事件的事件地址,以及這個條目的父事件地址。(e)執(zhí)行新目錄路徑名的路徑名查找。(f)如果路徑名不存在,則該重命名操作失敗。(g)在父目錄中執(zhí)行終點查找,并記住終點事件條目的事件地址。(h)創(chuàng)建新的、空的重命名目錄事件。(i)將鏈接指針設(shè)置為來自(d)的創(chuàng)建目錄事件的事件地址。(j)將兄弟指針設(shè)置為來自(g)的終點事件地址。(k)將父指針設(shè)置為來自(d)的父事件地址。(1)將末尾的路徑名部分復(fù)制到重命名的目錄事件。(m)創(chuàng)建新的、空的創(chuàng)建目錄事件。(n)將該事件提交給文件系統(tǒng),記住新事件的事件地址。(o)將鏈接指針設(shè)置為來自(n)的事件地址。(p)將兄弟指針設(shè)置為來自(n)的事件地址。(q)將父指針設(shè)置為來自(d)的父事件地址。(r)將該事件提交給文件系統(tǒng)。(S)完成。刪除目錄(a)對指定的目錄路徑名執(zhí)行EFS路徑名查找。(b)如果路徑名不存在,則該目錄刪除失敗。(c)目錄存在如果所找到的事件為刪除目錄或重命名事件,則該目錄刪除失敗。(d)執(zhí)行指定目錄的終點査找。如果目錄不為空(存在終點),則該目錄刪除失敗。(e)目錄存在,它是有效的并且為空創(chuàng)建新的、空的刪除目錄事件。(f)將這個事件的兄弟指針設(shè)置為指向(d)中所定位的終點事件地址。(g)將該事件的父指針設(shè)置為來自(d)。(h)將路徑名部分復(fù)制到事件記錄。(i)將該事件提交給文件系統(tǒng)。(j)完成。文件操作創(chuàng)建文件(創(chuàng)建新文件)下面解釋在MWSF文件系統(tǒng)中創(chuàng)建新文件的方法。通過外部應(yīng)用程序?qū)⑿挛募穆窂矫峁┙o文件系統(tǒng),并執(zhí)行下列步驟(a)對指定的文件路徑名執(zhí)行ESFS路徑名査找。(b)如果路徑名已存在,該文件創(chuàng)建失敗。(c)對新文件的父目錄執(zhí)行終點查找。記住父目錄的事件地址。(d)創(chuàng)建新的、空的創(chuàng)建文件事件。(e)將這個事件的兄弟指針設(shè)置指向為(c)中所定位的終點事件地址。(f)將這個事件的父指針設(shè)置為來自(c)。(g)將路徑名部分復(fù)制到事件記錄。(h)將該事件提交給文件系統(tǒng)。(i)完成。打開文件(打開已有的文件)下面描述打開已有文件的方法。通過外部應(yīng)用程序?qū)⑿挛募穆窂矫峁┙o文件系統(tǒng),并執(zhí)行下列步驟(j)對指定的文件路徑名執(zhí)行ESFS路徑名查找。(k)如果路徑名不存在,該操作失敗。(1)如果針對該路徑名所找到的末尾事件不是關(guān)閉文件事件,該操(m)記住關(guān)閉文件事件的事件地址。(n)對新文件的父目錄執(zhí)行終點查找。記住父目錄的事件地址。(0)完成。重命名文件下面描述在ESFS文件系統(tǒng)中重命名已有文件的方法外部應(yīng)用程序提供待重命名文件的已有路徑名和新路徑名,并隨后執(zhí)行下列步驟(a)執(zhí)行已有文件路徑名的ESFS路徑名査找。(b)如果路徑名不存在,該重命名操作失敗。(c)如果路徑名不是文件,該重命名操作失敗。(d)記住關(guān)閉文件事件的事件地址,以及這個條目的父事件地址。(e)執(zhí)行新文件路徑名的路徑名査找。(f)如果路徑名確實存在,該重命名操作失敗。(g)在該文件的父目錄中執(zhí)行終點査找,并記住終點事件條目的事件地址。(h)創(chuàng)建新的、空的重命名文件事件。(1)將鏈接指針設(shè)置為來自(d)的關(guān)閉文件事件的事件地址。(j)將兄弟指針設(shè)置為來自(g)的終點事件地址。(k)將父指針設(shè)置為來自(d)的父事件地址。(1)將末尾的路徑名部分復(fù)制到重命名文件事件。(m)創(chuàng)建新的、空的創(chuàng)建文件事件。(n)將該事件提交給文件系統(tǒng),記住該新事件的事件地址。(0)將鏈接指針設(shè)置為來自(n)的事件地址。(p)將兄弟指針設(shè)置為來自(n)的事件地址。(q)將父指針設(shè)置為來自(d)的父事件地址。(r)將該事件提交給文件系統(tǒng)。(s)完成。刪除文件(a)對指定的目錄文件名執(zhí)行ESFS路徑名査找。(b)如果路徑名不存在,該刪除失敗并退出該過程。(c)如果針對該路徑名所找到的末尾事件為刪除文件或重命名事件,該文件刪除失敗并退出該過程。(d)創(chuàng)建新的、空的刪除文件事件。(e)將這個事件的兄弟指針設(shè)置為指向(c)中所定位的終點事件地址。(f)將這個事件的父指針設(shè)置為來自(c)。(g)將路徑名部分復(fù)制到事件記錄。(h)將該事件提交給文件系統(tǒng)。(1)完成。寫文件下面解釋在ESFS文件系統(tǒng)中向文件寫數(shù)據(jù)的方法。這個方法的具體實現(xiàn)通常使用文件描述符(descriptor)或句柄(handle),文件描述符或句柄提供對如下結(jié)構(gòu)的訪問(access),該結(jié)構(gòu)保持通過創(chuàng)建文件或打開文件的方法而被創(chuàng)建或打開的相關(guān)文件的信息。寫文件方法假定以下信息是可用的(i)文件描述符,提供對將要寫入數(shù)據(jù)的文件的訪問。(ii)存儲器緩沖器,包含待寫入的數(shù)據(jù)(Data)。(iii)待寫入的數(shù)據(jù)的長度(數(shù)據(jù)長度Data-Length)。(iv)文件內(nèi)的起始偏移(文件偏移),從此處開始寫(對于依序的寫,可以由文件描述符保持該位置,并在每次成功寫文件后自動更新該位置)。(a)從文件描述符,獲得該文件的最新文件事件(創(chuàng)建文件或關(guān)閉文件事件)的事件地址。這個地址為文件事件地址。(b)將父事件地址設(shè)置為匹配在最新寫事件中指定的父親。(c)為指定的文件找到最新的數(shù)據(jù)事件。這個地址為數(shù)據(jù)事件地址(Data.Event陽Address)。(d)執(zhí)行分配塊的方法,指定塊的數(shù)據(jù)長度數(shù)字。(e)如果成功的話,將返回相鄰塊的一個或多個區(qū)域的列表(分配塊列表),其足夠容納數(shù)據(jù)。(f)如果不能分配所請求數(shù)量的塊,該寫操作失敗并退出該過程。(g)將當前文件偏移設(shè)置為文件偏移。(h)對于分配塊列表中的每個條目(0當前分配塊涉及到分配塊列表中的當前條目。(ii)創(chuàng)建新的、空的數(shù)據(jù)事件記錄(當前寫事件)。(iii)將父指針設(shè)置為來自(a)的父塊地址。(iv)將兄弟指針設(shè)置為來自(a)的文件事件塊地址。(v)將鏈接指針設(shè)置為來自(b)的寫事件塊地址。(vi)將當前寫事件中的事件地址設(shè)置為當前分配塊中指定的起始事件地址。(vii)將當前寫事件的長度設(shè)置為當前分配塊中指定的長度。(viii)將當前寫事件中的文件偏移設(shè)置為當前文件偏移。(ix)從當前文件偏移開始寫數(shù)據(jù)到介質(zhì),并持續(xù)當前寫長度。(x)將當前寫事件提交給文件系統(tǒng)。(xi)將當前寫長度增加到當前文件偏移。(xii)選擇分配塊列表中的下一個條目。(i)完成。讀文件下面解釋在ESFS文件系統(tǒng)中從文件讀數(shù)據(jù)的方法。這個方法的具體實現(xiàn)通常包括文件描述符,其保持有關(guān)通過創(chuàng)建文件或打開文件方法而創(chuàng)建或打開的文件的信息。此外,具體的實現(xiàn)可以支持任何文件位置和長度的讀取,或者限制對位置和為基礎(chǔ)塊尺寸倍數(shù)的尺寸的讀取。下面描述的讀文件方法假定下列信息是可用的(0文件描述符,提供對將要寫入數(shù)據(jù)的文件的訪問。(ii)存儲器緩沖器,數(shù)據(jù)(Data)將從文件傳送到該存儲器緩沖器中。(iii)待讀取的數(shù)據(jù)的長度(數(shù)據(jù)長度)。(iv)字節(jié)中的起始偏移(文件偏移),從此處開始讀取(對于依序的讀取,可以由文件描述符保持該位置,并在每次成功讀文件后自動更新該位置)。由于具體的文件偏移可能沒有落在均勻(even)的塊邊界上,實現(xiàn)可能需要通過使用臨時緩沖器接收完整塊來執(zhí)行第一(和/或末尾)讀操作。隨后,從臨時緩沖器內(nèi)計算出的偏移處將部分用戶數(shù)據(jù)復(fù)制為數(shù)據(jù)(Data)。(a)如果數(shù)據(jù)長度為零,成功返回。(b)否則,執(zhí)行下列初始化步驟(i)將文件事件地址設(shè)置為文件描述符中指定的事件地址。這是該文件的最新文件事件。讀該文件事件。(ii)如果該文件事件為創(chuàng)建文件事件,則文件為空。該讀取失敗并退出該處理。(iii)如果該文件事件為關(guān)閉文件事件,則鏈接指針將指向該文件的最新數(shù)據(jù)事件。將寫事件地址設(shè)置為該鏈接指針。(iv)將父事件地址設(shè)置為文件事件中指定的地址。(v)將當前文件偏移初始化為文件偏移。(vi)將剩余數(shù)據(jù)長度初始化為數(shù)據(jù)長度。(c)從數(shù)據(jù)事件地址開始,檢査數(shù)據(jù)事件列表,直到找到包含當前文件偏移的事件。這個將被稱為當前數(shù)據(jù)事件。(d)如果沒有發(fā)現(xiàn)這種事件,該讀文件操作失敗,并退出該處理。(e)接下來,由于當前數(shù)據(jù)事件可以指定多個塊,如下確定讀數(shù)據(jù)的第一事件地址第一塊地址=來自數(shù)據(jù)事件的起始地址;塊偏移=當前文件偏移_數(shù)據(jù)事件文件偏移;如果塊偏移不是塊尺寸的倍數(shù),則在傳送數(shù)據(jù)時利用臨時緩沖器(緩存器),并讀一個塊,開始于讀地址=第一塊地址+(塊偏移/塊尺寸);將指定的塊讀入緩沖器,并從當前文件偏移開始復(fù)制。這個值為塊偏移,且待讀取的第一塊為起始塊地址+(塊偏移/塊尺寸)。(f)將讀長度設(shè)置為小于剩余數(shù)據(jù)長度或(寫事件長度一塊偏移)。(g)退出該過程。本發(fā)明的上述實施例僅旨在示例,本領(lǐng)域技術(shù)人員可以對特定實施例實施改進和變型,卻不脫離本發(fā)明由所附權(quán)利要求獨自限定的保護范圍。權(quán)利要求1.一種用于實現(xiàn)文件系統(tǒng)的方法,其中在該文件系統(tǒng)中元數(shù)據(jù)包括事件的有序列表,所述有序列表來自預(yù)定但可擴展的事件類型列表,所述事件為發(fā)生于對象上的動作,所述對象為至少一個目錄或文件,該方法可兼容地應(yīng)用于任何形式的數(shù)字存儲介質(zhì)。2.如權(quán)利要求1所述的方法,其中所述介質(zhì)的類型或形式為寫一次、可擦除、可重寫或預(yù)錄制中的一種。3.如權(quán)利要求l所述的方法,其中事件與用戶數(shù)據(jù)相關(guān)聯(lián)。4.如權(quán)利要求l所述的方法,其中提供了文件系統(tǒng)審核。5.如權(quán)利要求l所述的方法,其中提供了日志或版本化功能。6.如權(quán)利要求l所述的方法,其中提供了多個文件系統(tǒng)對象版本。7.如權(quán)利要求1所述的方法,其中所述文件系統(tǒng)被制成為利用WORM介質(zhì)運行。8.如權(quán)利要求1所述的方法,其中所述文件系統(tǒng)被制成為利用可擦除介質(zhì)運行。9.如權(quán)利要求l所述的方法,其中所述文件系統(tǒng)被制成為利用可重寫介質(zhì)運行。10.如權(quán)利要求1所述的方法,其中所述文件系統(tǒng)被制成為利用預(yù)錄制介質(zhì)或只讀介質(zhì)運行。全文摘要一種計算機存儲文件系統(tǒng),其被構(gòu)建為不使用表或索引,而使用邏輯序列中預(yù)定事件類型的較小但數(shù)量可擴展的序列,所述邏輯序列描述該文件系統(tǒng)的完整歷史狀態(tài)和內(nèi)容,事件為發(fā)生在對象上的動作,對象為至少一個目錄或文件,可選地具有相關(guān)的用戶數(shù)據(jù)。文檔編號G06F17/30GK101375280SQ200780003404公開日2009年2月25日申請日期2007年1月26日優(yōu)先權(quán)日2006年1月27日發(fā)明者格雷厄姆·道格拉斯·歐文,羅伯特·杰弗里·埃勒斯塔德申請人:艾爾弗萊斯科技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1