国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      文件系統(tǒng)及文件管理方法

      文檔序號(hào):6437514閱讀:467來源:國(guó)知局
      專利名稱:文件系統(tǒng)及文件管理方法
      技術(shù)領(lǐng)域
      本發(fā)明關(guān)于一種用于計(jì)算機(jī)系統(tǒng)中的文件系統(tǒng)及文件管理方法。
      背景技術(shù)
      文件系統(tǒng)是構(gòu)建在存儲(chǔ)介質(zhì)的物理分區(qū)之上,用以儲(chǔ)存文件資料。文件系統(tǒng)是操作系統(tǒng)訪問數(shù)據(jù)的一種重要途徑,一段代碼或程序訪問保存在磁盤或其他存儲(chǔ)介質(zhì)上的數(shù)據(jù)時(shí),一般情況下總是把請(qǐng)求提交給相應(yīng)的操作系統(tǒng),由操作系統(tǒng)根據(jù)系統(tǒng)中注冊(cè)的特定的文件系統(tǒng)的特點(diǎn)把訪問請(qǐng)求定位到相應(yīng)的物理位置,在該物理位置訪問相應(yīng)的實(shí)際物理數(shù)據(jù)并把這些數(shù)據(jù)按照該文件系統(tǒng)的特點(diǎn)要求組裝成邏輯數(shù)據(jù)結(jié)構(gòu),此時(shí)的數(shù)據(jù)對(duì)于上層應(yīng)用來講就是可用的有特定意義的數(shù)據(jù)了。由此可見高效合理的文件系統(tǒng)對(duì)于數(shù)據(jù)可用性的重要意義。
      一般的文件系統(tǒng)為樹狀目錄結(jié)構(gòu),所謂「樹狀目錄結(jié)構(gòu)」意指系統(tǒng)文件放置的位置整個(gè)看起來就像一棵倒過來的樹一樣,由最上層的「根目錄」開始,其下可以有文件,也可以有目錄(即微軟系統(tǒng)中俗稱之「文件夾」),而各目錄下還可以有子目錄與文件,如此一路繁衍,形成狀似枝葉茂密的大樹。而每個(gè)文件在此目錄樹的位置,就稱之為「路徑(path)」。此樹狀目錄結(jié)構(gòu)的文件配置方式是UNIX的一大創(chuàng)舉,之后影響深遠(yuǎn),有許多操作系統(tǒng)都采取這樣的設(shè)計(jì)方式,包括當(dāng)前在windows和linux這兩種最常見的計(jì)算機(jī)操作系統(tǒng)下的許多優(yōu)秀文件系統(tǒng),比如windows下的fat、fat32、ntfs,linux下的ext2、ext3,還有主要針對(duì)嵌入式領(lǐng)域應(yīng)用的jfs、reseisfs等文件系統(tǒng)。
      但這些文件系統(tǒng)總體來講是一種通用的文件系統(tǒng),主要考慮了大多數(shù)通用的情況下對(duì)文件系統(tǒng)的需求,其數(shù)據(jù)的組織結(jié)構(gòu)方面有很多優(yōu)點(diǎn),但并不能符合所有的需求,特別是在一些特定的應(yīng)用場(chǎng)合,比如較為特殊的嵌入式應(yīng)用領(lǐng)域。且這些文件系統(tǒng)結(jié)構(gòu)比較龐雜,占用較多的存儲(chǔ)空間,存取查找文件速度慢。

      發(fā)明內(nèi)容
      本發(fā)明要解決的問題提供一個(gè)結(jié)構(gòu)簡(jiǎn)單的文件系統(tǒng),可以快速存取查找文件并適于特定應(yīng)用領(lǐng)域。
      為解決上述問題,本發(fā)明文件系統(tǒng)構(gòu)建在存儲(chǔ)介質(zhì)上,其結(jié)構(gòu)包括數(shù)據(jù)區(qū),實(shí)際文件數(shù)據(jù)的保存區(qū);元數(shù)據(jù)區(qū),文件系統(tǒng)建立從物理數(shù)據(jù)到邏輯數(shù)據(jù)的映射關(guān)系而使用的標(biāo)志數(shù)據(jù)的保存區(qū),其特征在于元數(shù)據(jù)區(qū)保存有每個(gè)實(shí)際文件在數(shù)據(jù)區(qū)中的數(shù)據(jù)存儲(chǔ)物理位置的單向鏈表,而使每個(gè)實(shí)際文件的數(shù)據(jù)具有唯一的邏輯組合并且通過數(shù)據(jù)庫(kù)保存每個(gè)單向鏈表的物理保存區(qū)的索引地址而對(duì)實(shí)際文件進(jìn)行管理。
      相應(yīng)地,采用本發(fā)明文件系統(tǒng)的文件管理方法包括以下步驟1)讀取元數(shù)據(jù)區(qū)2的數(shù)據(jù),并將相關(guān)數(shù)據(jù)組織成數(shù)據(jù)庫(kù)文件;2)根據(jù)步驟1)利用數(shù)據(jù)庫(kù)訪問數(shù)據(jù)庫(kù)文件得到單向鏈表的索引地址;
      3)對(duì)根據(jù)步驟2)中索引地址得到已有實(shí)際文件的單向鏈表進(jìn)行操作或建立新的單向鏈表,進(jìn)而達(dá)成實(shí)際文件的管理。
      本發(fā)明文件系統(tǒng)及文件管理方法具有以下優(yōu)點(diǎn)本發(fā)明文件系統(tǒng)的結(jié)構(gòu)簡(jiǎn)單、并利用數(shù)據(jù)庫(kù)有效提高數(shù)據(jù)的訪問效率。該套文件系統(tǒng)既可以在嵌入式Linux環(huán)境下使用,也可以在桌面Linux/Windows環(huán)境下使用,并且對(duì)于有特定要求的場(chǎng)合,能夠較好的滿足對(duì)數(shù)據(jù)的訪問需求。


      圖1是本發(fā)明文件系統(tǒng)的結(jié)構(gòu)示意圖。
      圖2是本發(fā)明文件系統(tǒng)的文件系統(tǒng)分區(qū)示意圖。
      圖3是本發(fā)明文件系統(tǒng)一實(shí)施例中的單向鏈表的示意圖。
      圖4是圖3中的單向鏈表與數(shù)據(jù)區(qū)數(shù)據(jù)的映射關(guān)系示意圖。
      圖5是本發(fā)明文件管理方法流程圖。
      具體實(shí)施例方式
      請(qǐng)參照?qǐng)D1、2所示,本發(fā)明文件系統(tǒng)構(gòu)建在存儲(chǔ)介質(zhì)5上,文件系統(tǒng)所占有存儲(chǔ)介質(zhì)的存儲(chǔ)物理區(qū)域?yàn)樵撐募到y(tǒng)的文件系統(tǒng)分區(qū)1。存儲(chǔ)介質(zhì)5可以是硬盤也可以是其他存儲(chǔ)介質(zhì)51。文件系統(tǒng)分區(qū)1可以是硬盤的一個(gè)分區(qū)或多個(gè)分區(qū)或整個(gè)硬盤。
      該文件系統(tǒng)分區(qū)1其結(jié)構(gòu)按照確定的格式劃分為邏輯上的3個(gè)數(shù)據(jù)區(qū)域1)元數(shù)據(jù)區(qū)2,文件系統(tǒng)建立從物理數(shù)據(jù)到邏輯數(shù)據(jù)的映射關(guān)系而使用的標(biāo)志數(shù)據(jù)的保存區(qū),即含有文件系統(tǒng)分區(qū)1中除了真實(shí)文件所包含的數(shù)據(jù)的保存區(qū)以外的文件系統(tǒng)為了建立起從物理數(shù)據(jù)到邏輯數(shù)據(jù)的映射關(guān)系而使用的標(biāo)志數(shù)據(jù)的區(qū)域。該區(qū)域被特定的接口所訪問,并不用于保存實(shí)際文件的數(shù)據(jù);2)數(shù)據(jù)區(qū)3,實(shí)際文件數(shù)據(jù)的保存區(qū),建成DATA區(qū)3;及3)元數(shù)據(jù)區(qū)備份區(qū)4,以備份元數(shù)據(jù)區(qū)2中的標(biāo)志數(shù)據(jù)。
      其中物理數(shù)據(jù)為保存實(shí)際文件的物理存儲(chǔ)空間相關(guān)數(shù)據(jù);而邏輯數(shù)據(jù)則為實(shí)際文件所包含的數(shù)據(jù)。
      元數(shù)據(jù)區(qū)2又被劃分為4個(gè)邏輯數(shù)據(jù)區(qū)域1)文件系統(tǒng)分區(qū)信息記錄區(qū)21,記錄文件系統(tǒng)的基本信息,簡(jiǎn)稱PIT區(qū)21;2)文件系統(tǒng)已分配簇記錄區(qū)23,記錄實(shí)際文件數(shù)據(jù)在數(shù)據(jù)區(qū)3中存儲(chǔ)物理位置的單向鏈表,簡(jiǎn)稱LAT區(qū)23;3)文件系統(tǒng)文件記錄表記錄區(qū)22,保存實(shí)際文件信息以及單向鏈表的索引地址,簡(jiǎn)稱FDB區(qū)22;及4)文件系統(tǒng)未分配簇記錄區(qū)24,記錄數(shù)據(jù)區(qū)未分配簇所代表的物理存儲(chǔ)位置,簡(jiǎn)稱LUT區(qū)24。
      元數(shù)據(jù)區(qū)2保存有每個(gè)實(shí)際文件在數(shù)據(jù)區(qū)3中的數(shù)據(jù)存儲(chǔ)物理位置的單向鏈表即LAT區(qū)23的單向鏈表,而使每個(gè)實(shí)際文件的數(shù)據(jù)具有唯一的邏輯組合并且通過數(shù)據(jù)庫(kù)保存每個(gè)單向鏈表的物理保存區(qū)即FDB區(qū)22的索引地址而對(duì)實(shí)際文件進(jìn)行管理。
      元數(shù)據(jù)區(qū)備份區(qū)4,相應(yīng)地分為文件系統(tǒng)文件記錄表記錄區(qū)備份區(qū)41,簡(jiǎn)稱FDB-BAK區(qū)41;文件系統(tǒng)已分配簇記錄區(qū)備份區(qū)42,簡(jiǎn)稱LAT-BAK區(qū)42;文件系統(tǒng)未分配簇記錄區(qū)備份區(qū)43,簡(jiǎn)稱LUT-BAK區(qū)43;及文件系統(tǒng)分區(qū)信息記錄區(qū)備份區(qū)44,簡(jiǎn)稱PIT-BAK區(qū)44。
      元數(shù)據(jù)區(qū)備份區(qū)4保存在文件系統(tǒng)分區(qū)1的最后,而不是緊接著元數(shù)據(jù)區(qū)2保存,其好處在于一旦元數(shù)據(jù)區(qū)2受到物理?yè)p害時(shí),盡可能的減少該物理?yè)p害同時(shí)損害到元數(shù)據(jù)區(qū)備份區(qū)4的可能性。同時(shí),由于PIT區(qū)21的數(shù)據(jù)完整性對(duì)整個(gè)文件系統(tǒng)非常重要,PIT-BAK區(qū)44的位置定義在整個(gè)文件系統(tǒng)分區(qū)1的最后一個(gè)扇區(qū),這也是出于安全備份PIT區(qū)21并有利于PIT區(qū)21受到損害時(shí)對(duì)PIT-BAK區(qū)44容易定位以恢復(fù)整個(gè)系統(tǒng)的目的而做出的設(shè)計(jì)。
      下面分別詳細(xì)描述文件系統(tǒng)分區(qū)的各個(gè)邏輯數(shù)據(jù)區(qū)域a)文件系統(tǒng)分區(qū)信息記錄區(qū)21,簡(jiǎn)稱PIT區(qū)21數(shù)據(jù)內(nèi)容該區(qū)域中保存的數(shù)據(jù)是文件系統(tǒng)的文件系統(tǒng)分區(qū)1的基本信息,包括存儲(chǔ)介質(zhì)的容量、文件系統(tǒng)分區(qū)1的起始位置、文件系統(tǒng)分區(qū)的大小、元數(shù)據(jù)區(qū)2中各數(shù)據(jù)區(qū)域的起始位置及其大小、數(shù)據(jù)庫(kù)文件的數(shù)量及其起始位置、大小。該區(qū)域是文件系統(tǒng)中定位各部分?jǐn)?shù)據(jù)的基礎(chǔ),非常重要。數(shù)據(jù)庫(kù)文件包括索引文件和數(shù)據(jù)文件,其組成及建立在后續(xù)的文件管理方法進(jìn)行描述。
      操作系統(tǒng)或上層應(yīng)用程序通過對(duì)該區(qū)域所保存的數(shù)據(jù)的訪問,可以獲得文件系統(tǒng)分區(qū)1的基本信息,并可以通過這些數(shù)據(jù)劃分開各不同意義的數(shù)據(jù)區(qū)域,在邏輯上建立起文件系統(tǒng)分區(qū)1的結(jié)構(gòu),并且定位數(shù)據(jù)庫(kù)的索引文件和數(shù)據(jù)文件的信息,為查找和訪問其他區(qū)域及其這些區(qū)域中的數(shù)據(jù)建立了尋址的基礎(chǔ)。
      數(shù)據(jù)結(jié)構(gòu)struct st_effs_PIT{∥存儲(chǔ)介質(zhì)以及分區(qū)標(biāo)識(shí)信息unsigned intihdlength;∥硬盤(或其他存儲(chǔ)介質(zhì))真實(shí)容量,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;unsigned intieffsbegin;∥硬盤(或其他存儲(chǔ)介質(zhì))文件系統(tǒng)分區(qū)1起始位置,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;unsigned intieffslength;∥文件系統(tǒng)分區(qū)1容量,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;unsigned intiblocklength;∥文件系統(tǒng)分區(qū)1一個(gè)物理存儲(chǔ)單位的大小,以字節(jié)為單位;unsigned char partname[16];∥該文件系統(tǒng)分區(qū)1的標(biāo)識(shí)名稱;
      unsigned char part-effs[4];∥文件系統(tǒng)分區(qū)1標(biāo)志,必須為字串“EFFS”;∥PIT區(qū)21的信息unsigned intieffsPITbegin;∥文件系統(tǒng)分區(qū)信息記錄區(qū)(PIT區(qū))21的起始位置,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;unsigned intieffsPITlength;∥文件系統(tǒng)分區(qū)信息記錄區(qū)(PIT區(qū))21的長(zhǎng)度,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;∥PIT-BAK區(qū)44的信息unsigned intieffsPIT-BAKbegin;∥文件系統(tǒng)分區(qū)信息記錄區(qū)備份區(qū)(PIT-BAK區(qū))44起始位置,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;∥FDB區(qū)22的信息unsigned intieffsFDBbegin;∥文件系統(tǒng)文件記錄表記錄區(qū)(FDB區(qū))22的起始位置,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;unsigned intieffsFDBlength;
      ∥文件系統(tǒng)文件記錄表記錄區(qū)(FDB區(qū))22的長(zhǎng)度,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;∥FDB-BAK區(qū)41的信息unsigned intieffsFDB-BAKbegin;∥文件系統(tǒng)文件記錄表記錄區(qū)備份區(qū)(FDB-BAK區(qū))41的起始位置,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;∥FDB區(qū)22的數(shù)據(jù)庫(kù)索引文件信息unsigned intifdbindexfilenum;∥FDB區(qū)22的數(shù)據(jù)庫(kù)索引文件的個(gè)數(shù)unsigned intifdbindexfilebegin;∥FDB區(qū)22的數(shù)據(jù)庫(kù)第一個(gè)索引文件的起始位置,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;unsigned intifdbindexfilelength;∥FDB區(qū)22的數(shù)據(jù)庫(kù)第一個(gè)索引文件的長(zhǎng)度,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;unsigned intifdbindexfilereserve;∥為以后該結(jié)構(gòu)的升級(jí)作保留;∥FDB區(qū)22的數(shù)據(jù)庫(kù)數(shù)據(jù)文件信息
      unsigned intifdbdatafilenum;∥FDB區(qū)22的數(shù)據(jù)庫(kù)數(shù)據(jù)文件的個(gè)數(shù)unsigned intifdbdatafilebegin;∥FDB區(qū)22的數(shù)據(jù)庫(kù)第一個(gè)數(shù)據(jù)文件的起始位置,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;unsigned intifdbdatafilelength;∥FDB區(qū)22的數(shù)據(jù)庫(kù)第一個(gè)數(shù)據(jù)文件的長(zhǎng)度,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;unsigned intifdbdatafilereserve;∥為以后該結(jié)構(gòu)的升級(jí)作保留;∥LAT區(qū)23的信息unsigned intieffsLATbegin;∥文件系統(tǒng)已分配簇記錄區(qū)(LAT區(qū))23的起始位置,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;unsigned intieffsLATlength;∥文件系統(tǒng)已分配簇記錄區(qū)(LAT區(qū))23的長(zhǎng)度,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;∥LAT-BAK區(qū)42的信息unsigned intieffsLAT-BAKbegin;∥文件系統(tǒng)已分配簇記錄區(qū)備份區(qū)(LAT-BAK區(qū))42起始位置,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;∥LUT區(qū)24的信息unsigned intieffsLUTbegin;∥文件系統(tǒng)未分配簇記錄區(qū)(LUT區(qū))24的起始位置,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;unsigned intieffsLUTlength;∥文件系統(tǒng)未分配簇記錄區(qū)(LUT區(qū))24的長(zhǎng)度,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;∥LUT-BAK區(qū)43的信息unsigned intieffsLUT-BAKbegin;∥文件系統(tǒng)未分配簇記錄區(qū)備份區(qū)(LUT-BAK區(qū))43起始位置,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;∥LUT區(qū)24的數(shù)據(jù)庫(kù)索引文件信息unsigned intilutindexfilenum;∥LUT區(qū)24的數(shù)據(jù)庫(kù)索引文件的個(gè)數(shù)unsigned intilutindexfilebegin;∥LUT區(qū)24的數(shù)據(jù)庫(kù)第一個(gè)索引文件的起始位置,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;unsigned intilutindexfilelength;∥LUT區(qū)24的T數(shù)據(jù)庫(kù)第一個(gè)索引文件的長(zhǎng)度,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;unsigned intilutindexfilereserve;∥為以后該結(jié)構(gòu)的升級(jí)作保留;∥LUT區(qū)24的數(shù)據(jù)庫(kù)數(shù)據(jù)文件信息unsigned intilutdatafilenum;∥LUT區(qū)24數(shù)據(jù)庫(kù)數(shù)據(jù)文件的個(gè)數(shù)unsigned intilutdatafilebegin;∥LUT區(qū)24數(shù)據(jù)庫(kù)第一個(gè)數(shù)據(jù)文件的起始位置,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;unsigned intilutdatafilelength;∥LUT區(qū)24數(shù)據(jù)庫(kù)第一個(gè)數(shù)據(jù)文件的長(zhǎng)度,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;unsigned intilutdatafilereserve;∥為以后該結(jié)構(gòu)的升級(jí)作保留;∥數(shù)據(jù)區(qū)3的信息unsigned intieffsDATAbegin;∥文件系統(tǒng)實(shí)際文件數(shù)據(jù)存儲(chǔ)區(qū)即數(shù)據(jù)區(qū)(DATA區(qū))3的起始位置,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;unsigned intieffsDATAlength;∥文件系統(tǒng)文件數(shù)據(jù)存儲(chǔ)區(qū)即數(shù)據(jù)區(qū)(DATA區(qū))3的長(zhǎng)度,以扇區(qū)(對(duì)其他存儲(chǔ)介質(zhì)根據(jù)存儲(chǔ)介質(zhì)的具體情況而定)為單位;∥CRC校驗(yàn)和unsigned intieffsCRC;∥以上36個(gè)域的數(shù)據(jù)CRC冗余循環(huán)校驗(yàn)和;} ∥end the defnition of structst_effs_PIT該數(shù)據(jù)結(jié)構(gòu)中的FDB/LUT區(qū)22/24的數(shù)據(jù)庫(kù)索引文件信息數(shù)據(jù)項(xiàng)和數(shù)據(jù)庫(kù)數(shù)據(jù)文件信息數(shù)據(jù)項(xiàng)是文件系統(tǒng)中FDB/LUT區(qū)22/24的數(shù)據(jù)庫(kù)文件信息,每組包含8個(gè)數(shù)據(jù)項(xiàng),分別為數(shù)據(jù)庫(kù)索引文件的個(gè)數(shù)(ifdb/lutindexfilenum)、數(shù)據(jù)庫(kù)第一個(gè)索引文件的起始位置(ifdb/lutindexfilebegin)、數(shù)據(jù)庫(kù)第一個(gè)索引文件的長(zhǎng)度(ifdb/lutindexfilelength)、數(shù)據(jù)庫(kù)索引文件保留字段(ifdb/lutindexfilereserve)、數(shù)據(jù)庫(kù)數(shù)據(jù)文件的個(gè)數(shù)(ifdb/lutdatafilenum)、數(shù)據(jù)庫(kù)第一個(gè)數(shù)據(jù)文件的起始位置(ifdb/lutdatafilebegin)、數(shù)據(jù)庫(kù)第一個(gè)數(shù)據(jù)文件的長(zhǎng)度(ifdb/lutdatafilelength)、數(shù)據(jù)庫(kù)數(shù)據(jù)文件保留字段(ifdb/lutdatafilereserve),如此設(shè)計(jì)是基于如下的考慮本實(shí)施例中的數(shù)據(jù)庫(kù)采用聯(lián)想軟件中心開發(fā)的SharkBase嵌入式數(shù)據(jù)庫(kù),因?yàn)樵摂?shù)據(jù)庫(kù)滿足以下要求,簡(jiǎn)言之其他數(shù)據(jù)庫(kù)滿足下面要求也可以被采用1)SharkBase嵌入式數(shù)據(jù)庫(kù)系統(tǒng)在處理時(shí),把組成相關(guān)數(shù)據(jù)區(qū)域的數(shù)據(jù)保存為數(shù)據(jù)文件,把對(duì)數(shù)據(jù)庫(kù)內(nèi)部表單建立的索引數(shù)據(jù)保存為索引文件,同時(shí)建立相應(yīng)的數(shù)據(jù)字典和日志文件;2)SharkBase嵌入式數(shù)據(jù)庫(kù)的組件化特點(diǎn)可以實(shí)現(xiàn)功能的定制,由于本發(fā)明文件系統(tǒng)的應(yīng)用環(huán)境不需要日志、同步等功能,所以在SharkBase嵌入式數(shù)據(jù)庫(kù)中去掉用戶數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)字典和日志文件的依賴,這樣,用戶數(shù)據(jù)庫(kù)僅依賴于索引文件和數(shù)據(jù)文件;3)對(duì)于內(nèi)容相同的數(shù)據(jù),上述的數(shù)據(jù)文件與索引文件數(shù)量并沒有明確規(guī)定,這與數(shù)據(jù)庫(kù)的底層結(jié)構(gòu)和核心算法密切相關(guān),比如,對(duì)于只有一個(gè)表單的數(shù)據(jù)內(nèi)容,當(dāng)限定在表單中只建立一個(gè)索引(即只對(duì)一個(gè)數(shù)據(jù)域建立索引)時(shí),根據(jù)數(shù)據(jù)量和數(shù)據(jù)庫(kù)核心處理優(yōu)化算法優(yōu)化效果,有可能是一個(gè)索引文件加一個(gè)數(shù)據(jù)文件,也可能是多個(gè)索引文件加一個(gè)數(shù)據(jù)文件,也可能是一個(gè)索引文件加多個(gè)數(shù)據(jù)文件,還可能是多個(gè)索引文件加多個(gè)數(shù)據(jù)文件;4)在類似嵌入式的應(yīng)用環(huán)境下,數(shù)據(jù)量不像桌面應(yīng)用那樣龐大,所以在小數(shù)據(jù)量的情況下,SharkBase嵌入式數(shù)據(jù)庫(kù)能保證數(shù)據(jù)文件和索引文件的數(shù)量均為一個(gè),這對(duì)FDB/LUT區(qū)22/24中定位和讀取數(shù)據(jù)文件和索引文件提供了便利。考慮到版本的升級(jí),在st_effs_PIT結(jié)構(gòu)中還是定義了ifdbdatafilereserve/ilutdatafilereserve數(shù)據(jù)域和ifdbindexfilereserve/ilutindexfilereserve數(shù)據(jù)域,以保留用于以后多數(shù)據(jù)文件和多索引文件使用。
      5)由于數(shù)據(jù)文件和索引文件會(huì)隨著文件系統(tǒng)中的文件數(shù)目以及物理存儲(chǔ)單元的分配情況而變化,所以在FDB/LUT區(qū)22/24中對(duì)索引文件和數(shù)據(jù)文件可能最大占用的空間作了限制FDB/LUT區(qū)22/24中索引文件和數(shù)據(jù)文件占用的空間比例為1∶3,且索引文件在前,即假設(shè)有一文件系統(tǒng)分區(qū)1的FDB區(qū)22大小為10M,則索引文件最大占用前2.5M,數(shù)據(jù)文件從FDB區(qū)中偏移2.5M以后再開始,最大占用7.5M。
      根據(jù)以上的描述,結(jié)構(gòu)st_effs_PIT中設(shè)計(jì)了數(shù)據(jù)庫(kù)索引文件信息數(shù)據(jù)項(xiàng)和數(shù)據(jù)庫(kù)數(shù)據(jù)文件信息數(shù)據(jù)項(xiàng)。
      以上的數(shù)據(jù)結(jié)構(gòu)中當(dāng)存儲(chǔ)介質(zhì)為硬盤時(shí),該P(yáng)IT區(qū)21將占用一個(gè)扇區(qū)以保存數(shù)據(jù),但存儲(chǔ)介質(zhì)不為硬盤時(shí),根據(jù)具體的存儲(chǔ)介質(zhì)對(duì)保存數(shù)據(jù)時(shí)的存儲(chǔ)單位的劃分原則來決定該區(qū)域應(yīng)占用多大空間保存數(shù)據(jù),比如,當(dāng)存儲(chǔ)介質(zhì)為flash的時(shí)候,假設(shè)其每次讀寫數(shù)據(jù)塊的大小為1K,則該區(qū)域應(yīng)占用1K大小的一個(gè)數(shù)據(jù)塊保存數(shù)據(jù),并且數(shù)據(jù)結(jié)構(gòu)中的各數(shù)據(jù)區(qū)域的單位也均為K。
      b)文件系統(tǒng)文件記錄表記錄區(qū)22,簡(jiǎn)稱FDB區(qū)22數(shù)據(jù)內(nèi)容該區(qū)域是文件系統(tǒng)中保存文件信息以及實(shí)際文件在文件系統(tǒng)分區(qū)1中所占用的物理保存區(qū)的索引地址(即該實(shí)際文件單向鏈表的索引地址)等信息的區(qū)域,該區(qū)域中的數(shù)據(jù)組成數(shù)據(jù)庫(kù)的數(shù)據(jù)文件和索引文件,其中數(shù)據(jù)文件的數(shù)據(jù)域參見表1。數(shù)據(jù)庫(kù)引擎將數(shù)據(jù)庫(kù)文件的數(shù)據(jù)讀出,并將其組織為數(shù)據(jù)庫(kù)中的文件信息記錄表,每張表中的各數(shù)據(jù)域記錄相應(yīng)實(shí)際文件的文件名稱、絕對(duì)路徑、文件大小、文件的創(chuàng)建時(shí)間、文件的最后訪問時(shí)間、文件的最后修改時(shí)間、文件的屬主、文件的訪問權(quán)限及該實(shí)際文件單向鏈表的索引地址。
      其數(shù)據(jù)文件和索引文件的信息在PIT區(qū)21中分別用數(shù)據(jù)庫(kù)索引文件的個(gè)數(shù)(ifdbindexfilenum)、數(shù)據(jù)庫(kù)第一個(gè)索引文件的起始位置(ifdbindexfilebegin)、數(shù)據(jù)庫(kù)第一個(gè)索引文件的長(zhǎng)度(ifdbindexfilelength)、數(shù)據(jù)庫(kù)索引文件保留字段(ifdbindexfilereserve)、數(shù)據(jù)庫(kù)數(shù)據(jù)文件的個(gè)數(shù)(ifdbdatafilenum)、數(shù)據(jù)庫(kù)第一個(gè)數(shù)據(jù)文件的起始位置(ifdbdatafilebegin)、數(shù)據(jù)庫(kù)第一個(gè)數(shù)據(jù)文件的長(zhǎng)度(ifdbdatafilelength)、數(shù)據(jù)庫(kù)數(shù)據(jù)文件保留字段(ifdbdatafilereserve)來表示。
      如果是在windows桌面環(huán)境下使用本發(fā)明文件系統(tǒng),則數(shù)據(jù)庫(kù)要訪問數(shù)據(jù)庫(kù)文件時(shí),文件系統(tǒng)提供的接口能夠?qū)DB區(qū)22中的拷貝到windows桌面環(huán)境下的其他文件系統(tǒng)中以供數(shù)據(jù)庫(kù)訪問,因?yàn)閿?shù)據(jù)庫(kù)是按文件訪問,它無法跳過文件系統(tǒng)直接訪問物理存儲(chǔ)單元,由于該文件系統(tǒng)不是針對(duì)windows桌面環(huán)境開發(fā)的文件系統(tǒng),所以windows桌面環(huán)境下對(duì)文件系統(tǒng)的使用必然是一種特殊用途的使用,此種情況下必然存在與windows桌面環(huán)境相匹配的其它類型的文件系統(tǒng)分區(qū)。
      如果是在嵌入式linux環(huán)境下使用該文件系統(tǒng),文件系統(tǒng)會(huì)將FDB區(qū)22中的索引文件和數(shù)據(jù)文件拷貝到嵌入式linux建立的ramfs內(nèi)存文件系統(tǒng)中以利于數(shù)據(jù)庫(kù)訪問。



      文件的屬主指文件的創(chuàng)建者文件的訪問權(quán)限低字節(jié)順序的0~2bit位分別表示文件屬主的讀、寫、執(zhí)行權(quán)限低字節(jié)順序的3~5bit位分別表示文件屬主所屬的組的讀、寫、執(zhí)行權(quán)限低字節(jié)順序的6~8bit位分別表示其他組的讀、寫、執(zhí)行權(quán)限低字節(jié)順序的9~15bit位保留本地存儲(chǔ)首地址分配索引(邏輯簇順序號(hào))記錄指該實(shí)際文件在文件系統(tǒng)已分配簇記錄區(qū)23中的單向鏈表第一個(gè)索引塊的地址(索引地址)。
      表1 文件系統(tǒng)文件記錄表記錄區(qū)22的數(shù)據(jù)庫(kù)記錄表的域
      c)文件系統(tǒng)已分配簇記錄區(qū)23,簡(jiǎn)稱LAT區(qū)23數(shù)據(jù)內(nèi)容該區(qū)域是整個(gè)文件系統(tǒng)實(shí)際文件數(shù)據(jù)區(qū)(DATA區(qū))3的索引表,而每個(gè)實(shí)際文件的索引表為單向鏈表。該區(qū)域中用每4個(gè)字節(jié)代表DATA區(qū)3中的一個(gè)物理存儲(chǔ)單位(也可稱為存儲(chǔ)單元),一個(gè)物理存儲(chǔ)單位的大小由PIT區(qū)21中的iblocklength數(shù)據(jù)域表示,在存儲(chǔ)介質(zhì)為硬盤的情況下,一個(gè)物理存儲(chǔ)單位的大小可以是512字節(jié)、1K字節(jié)、4K字節(jié),在存儲(chǔ)介質(zhì)為其它介質(zhì)的情況下(如flash),一個(gè)物理存儲(chǔ)單位的大小根據(jù)具體介質(zhì)的情況而定并記錄在PIT區(qū)21中的iblocklength數(shù)據(jù)域中。
      請(qǐng)參照?qǐng)D3所示,每個(gè)實(shí)際文件在FDB區(qū)22中的本地存儲(chǔ)首地址分配索引域中記錄了一個(gè)相應(yīng)的索引地址,此索引地址即為L(zhǎng)AT區(qū)23中表示此實(shí)際文件在DATA區(qū)3中第一個(gè)物理存儲(chǔ)位置的一個(gè)4字節(jié)大小的第一索引塊,該第一索引塊保存的數(shù)據(jù)為L(zhǎng)AT區(qū)23中代表此實(shí)際文件第二個(gè)物理存儲(chǔ)位置的第二索引塊的地址,第二索引塊又保存LAT區(qū)23中代表此實(shí)際文件第三個(gè)物理存儲(chǔ)位置的第三索引塊的地址,以此類推,建立起一個(gè)由一個(gè)或多個(gè)索引塊依序組成的單向列表。此處,物理存儲(chǔ)位置為存儲(chǔ)單元的地址,即每個(gè)索引塊代表該實(shí)際文件數(shù)據(jù)的存儲(chǔ)單元的地址。
      每個(gè)單向鏈表的索引地址為該單向鏈表的第一索引塊的地址;且第多個(gè)索引塊構(gòu)成的單向鏈表。該單向鏈表指出了該文件在DATA區(qū)3的所有物理存儲(chǔ)位置,鏈表的最后一個(gè)節(jié)點(diǎn)保存的內(nèi)容為0,而編號(hào)為0的索引塊總不用于分配給實(shí)際文件。這樣就能夠唯一的表示某一實(shí)際文件在文件系統(tǒng)中的存儲(chǔ)分配情況,而使該實(shí)際文件的數(shù)據(jù)具有唯一的邏輯組合,通過讀取該單向鏈表代表的DATA區(qū)3的物理存儲(chǔ)位置的數(shù)據(jù),就能實(shí)現(xiàn)對(duì)該實(shí)際文件的訪問。
      數(shù)據(jù)結(jié)構(gòu)struct st_effs_LAT{unsigned intieffsLATlocal;∥本索引塊索引編號(hào);unsigned intieffsLATnext;∥下一個(gè)索引塊索引編號(hào);struct st_effs_LAT* sLAT next;∥鏈表下一節(jié)點(diǎn)的頭指針;} ∥end the definition of structst_effs_LAT請(qǐng)結(jié)合參照?qǐng)D4所示,某一文件的LAT區(qū)23數(shù)據(jù)與DATA區(qū)3數(shù)據(jù)映射關(guān)系示意圖。
      當(dāng)系統(tǒng)請(qǐng)求訪問某一實(shí)際文件時(shí),系統(tǒng)向數(shù)據(jù)庫(kù)提交該實(shí)際文件的文件名和文件所在的路徑,數(shù)據(jù)庫(kù)根據(jù)這些信息進(jìn)行查找并得到該實(shí)際文件在文件系統(tǒng)中的索引地址,根據(jù)該索引地址,可以訪問文件系統(tǒng)中文件系統(tǒng)已分配簇記錄區(qū)(LAT區(qū))23,根據(jù)LAT區(qū)23中的數(shù)據(jù)建立該實(shí)際文件占用物理位置的單向鏈表,該單向鏈表表示的文件系統(tǒng)中的物理位置所存儲(chǔ)的數(shù)據(jù)就是該實(shí)際文件的實(shí)際內(nèi)容,將這些物理位置所存儲(chǔ)的數(shù)據(jù)組合起來就是該文件,同時(shí)可通過數(shù)據(jù)庫(kù)得到該實(shí)際文件的文件大小、文件的創(chuàng)建時(shí)間、文件的最后訪問時(shí)間、文件的最后修改時(shí)間、文件的屬主、文件的訪問權(quán)限等數(shù)據(jù)。
      d)文件系統(tǒng)未分配簇記錄區(qū)24,簡(jiǎn)稱LUT區(qū)24數(shù)據(jù)內(nèi)容該區(qū)域是記錄數(shù)據(jù)區(qū)未分配簇所代表的物理存儲(chǔ)位置的區(qū)域,數(shù)據(jù)庫(kù)引擎將數(shù)據(jù)庫(kù)文件中的數(shù)據(jù)讀出,并將未分配存儲(chǔ)單元建立未分配簇編號(hào),組織為數(shù)據(jù)庫(kù)中的一張未分配簇記錄表,且記錄未分配簇所代表的物理存儲(chǔ)位置。
      該區(qū)域數(shù)據(jù)庫(kù)的訪問方法與原理和FDB區(qū)22中的數(shù)據(jù)庫(kù)的訪問方法與原理相同。其數(shù)據(jù)文件和索引文件的信息在PIT區(qū)21中作了定義,分別用數(shù)據(jù)庫(kù)索引文件的個(gè)數(shù)(ilutindexfilenum)、數(shù)據(jù)庫(kù)第一個(gè)索引文件的起始位置(ilutindexfilebegin)、數(shù)據(jù)庫(kù)第一個(gè)索引文件的長(zhǎng)度(ilutindexfilelength)、數(shù)據(jù)庫(kù)索引文件保留字段(ilutindexfilereserve)、數(shù)據(jù)庫(kù)數(shù)據(jù)文件的個(gè)數(shù)(ilutdatafilenum)、數(shù)據(jù)庫(kù)第一個(gè)數(shù)據(jù)文件的起始位置(ilutdatafilebegin)、數(shù)據(jù)庫(kù)第一個(gè)數(shù)據(jù)文件的長(zhǎng)度(ilutdatafilelength)、數(shù)據(jù)庫(kù)數(shù)據(jù)文件保留字段(ilutdatafilereserve)來表示。
      當(dāng)系統(tǒng)請(qǐng)求為一個(gè)新文件提供物理存儲(chǔ)位置代表的存儲(chǔ)空間時(shí),采用本文件系統(tǒng)包括以下步驟d1)獲得未被分配物理存儲(chǔ)空間的總?cè)萘浚@是由該數(shù)據(jù)庫(kù)文件記錄中的總記錄條數(shù)乘以每個(gè)物理存儲(chǔ)單元的大小(由PIT區(qū)21中的iblocklength數(shù)據(jù)域表示)得到的;d2)比較所要添加文件的占用空間與可用的物理存儲(chǔ)空間的總?cè)萘康拇笮。籨3)如果小于可用的物理存儲(chǔ)空間的總?cè)萘?,則利用該記錄表中的記錄得到可被分配簇,每用掉一個(gè)記錄所表示的物理存儲(chǔ)空間,就在該表中刪除該條記錄;d4)同時(shí)在文件系統(tǒng)已分配簇記錄區(qū)中,建立該添加文件的單向鏈表,并且其實(shí)際數(shù)據(jù)完全寫到相應(yīng)的物理存儲(chǔ)單元中;d5)在文件系統(tǒng)文件記錄表記錄區(qū)中為該添加文件相關(guān)的文件信息以及單向鏈表的索引地址。
      當(dāng)系統(tǒng)請(qǐng)求刪除一個(gè)文件時(shí),采用本文件系統(tǒng),包括以下步驟d1)數(shù)據(jù)庫(kù)利用中數(shù)據(jù)庫(kù)文件中的索引地址找到該實(shí)際文件的單向鏈表;d2)根據(jù)該單向鏈表中的每一個(gè)索引塊所代表的物理存儲(chǔ)單元的地址在數(shù)據(jù)庫(kù)未分配簇記錄表中,為相應(yīng)的每個(gè)物理存儲(chǔ)單元建立未分配簇編號(hào);
      d3)刪除掉該實(shí)際文件的文件信息記錄表的記錄,達(dá)成刪除保存在文件系統(tǒng)中的該實(shí)際文件。文件系統(tǒng)未分配簇記錄區(qū)(LUT區(qū))24的數(shù)據(jù)庫(kù)表的域如表2所示

      未分配簇編號(hào)數(shù)據(jù)庫(kù)表中的記錄編號(hào)未分配簇實(shí)際序號(hào)文件系統(tǒng)中未分配簇所占用的物理保存區(qū)的索引地址表2 EFFS文件系統(tǒng)未分配簇記錄區(qū)(LUT區(qū))24的數(shù)據(jù)庫(kù)表的域e)文件系統(tǒng)實(shí)際文件的數(shù)據(jù)區(qū)3,簡(jiǎn)稱DATA區(qū)3該區(qū)域是保存文件實(shí)際數(shù)據(jù)的物理存儲(chǔ)區(qū),該區(qū)域中已經(jīng)被分配的物理存儲(chǔ)單元在LAT區(qū)23中根據(jù)其屬于不同的實(shí)際文件在邏輯上組成一條條單向鏈表,該區(qū)域中未被分配的物理存儲(chǔ)單元在LUT區(qū)24中由一條條的數(shù)據(jù)庫(kù)記錄表所索引。
      f)文件系統(tǒng)文件記錄表記錄區(qū)備份區(qū)41,簡(jiǎn)稱FDBBAK區(qū)41該區(qū)域是FDB區(qū)22的一個(gè)備份,保存FDB區(qū)中的全部數(shù)據(jù),其大小和內(nèi)容與FDB區(qū)22一樣,當(dāng)由于意外(如非正常斷電等)導(dǎo)致FDB區(qū)22受到損害無法正常讀出其中數(shù)據(jù)時(shí),可用該區(qū)域中的數(shù)據(jù)代替。每當(dāng)FDB區(qū)22中的數(shù)據(jù)被更新后,均應(yīng)對(duì)該區(qū)域的數(shù)據(jù)作同步,以保證該區(qū)域始終是完整的FDB區(qū)22數(shù)據(jù)的備份。
      g)LAT-BAK區(qū)42、LUT-BAK區(qū)43、PIT-BAK區(qū)44的數(shù)據(jù)及功能與FDB-BAK區(qū)41類似,只不過備份的對(duì)象分別為L(zhǎng)AT區(qū)23、LUT區(qū)24、PIT-BAK區(qū)21,不再贅述。
      依據(jù)上述的各區(qū)域的格式和內(nèi)容就可建立文件系統(tǒng)。建立文件系統(tǒng)時(shí)應(yīng)該注意的一點(diǎn)是應(yīng)該預(yù)先確定該格式的分區(qū)中最大需要保存多少個(gè)文件。這是由于文件的索引依賴數(shù)據(jù)庫(kù)FDB區(qū)22的記錄項(xiàng)個(gè)數(shù),而FDB區(qū)22記錄表中的每一條記錄占用1K的空間,如果完全動(dòng)態(tài)建立該文件系統(tǒng)的話,在最壞的情況下,建立的FDB區(qū)22數(shù)據(jù)庫(kù)占用的空間大小將是DATA區(qū)3的兩倍以上,以在一個(gè)最小物理存儲(chǔ)單元為512字節(jié)的硬盤分區(qū)中建立文件系統(tǒng)為例,即假設(shè)DATA區(qū)3空間大小為xM,則DATA區(qū)3共有x*1024*1024/512=2048x個(gè)物理存儲(chǔ)單元,如果在最壞的情況下,每個(gè)存儲(chǔ)單元都代表一個(gè)文件,且數(shù)據(jù)庫(kù)每條記錄的實(shí)際保存長(zhǎng)度均達(dá)到最大的1K,則FDB區(qū)22中的數(shù)據(jù)庫(kù)記錄條數(shù)為2048x個(gè),此時(shí)FDB中的數(shù)據(jù)庫(kù)數(shù)據(jù)文件的大小至少為2048x*1K=2xM,再加上索引文件占用的空間,總占用空間將是DATA區(qū)3的兩倍以上,這會(huì)造成較大的空間浪費(fèi)。
      所以該文件系統(tǒng)推薦用戶在格式化文件系統(tǒng)時(shí)預(yù)估需要保存的最大文件數(shù)。
      綜上所述,為本發(fā)明文件系統(tǒng)的結(jié)構(gòu)及原理描述,下面描述本發(fā)明文件系統(tǒng)的具體實(shí)現(xiàn)。
      在一臺(tái)個(gè)人電腦中,為了實(shí)現(xiàn)對(duì)重要文件的安全備份與恢復(fù)以及對(duì)已經(jīng)備份的文件進(jìn)行管理的目的,另外掛一塊較小的硬盤,容量為1.2G,該小硬盤上安裝一個(gè)嵌入式的linux系統(tǒng),并劃分出大小為1G(1024*1024=1048576K)的一個(gè)分區(qū)用于對(duì)大硬盤上的文件進(jìn)行備份,該分區(qū)被格式化為本發(fā)明文件系統(tǒng)分區(qū)1。此時(shí)機(jī)器上有兩套操作系統(tǒng)大硬盤上的windows2000,小硬盤上的嵌入式linux,在這兩個(gè)系統(tǒng)中均安裝SharkBase嵌入式數(shù)據(jù)庫(kù)。則DATA區(qū)3大小192*(1024*1024-26669)/203≈966532K;PIT區(qū)21大小512字節(jié)=0.5K;FDB區(qū)22大小10000*1K*4/3≈13334K;LAT區(qū)23大小d/128≈7552KLUT區(qū)24大小d/48≈20137K假設(shè)該文件系統(tǒng)分區(qū)1在小硬盤上的開始位置為第x個(gè)扇區(qū),則各區(qū)域參數(shù)如下PIT區(qū)21起始位置為x+0扇區(qū),長(zhǎng)度為1扇區(qū);FDB區(qū)22起始位置為x+1扇區(qū),長(zhǎng)度為26668扇區(qū)LAT區(qū)23起始位置為x+26669扇區(qū),長(zhǎng)度為15104扇區(qū);LUT區(qū)24起始位置為x+41773扇區(qū),長(zhǎng)度為40274扇區(qū);DATA區(qū)3起始位置為x+82047扇區(qū),長(zhǎng)度為1933064扇區(qū);FDB-BAK區(qū)41起始位置為x+2015111扇區(qū),長(zhǎng)度為26668扇區(qū);LAT-BAK區(qū)42起始位置為x+2041779扇區(qū),長(zhǎng)度為15104扇區(qū);
      LUT-BAK區(qū)43起始位置為x+2056883扇區(qū),長(zhǎng)度為40274扇區(qū);PIT-BAK區(qū)44起始位置為ieffsbegin+ieffslength-1扇區(qū),長(zhǎng)度為1扇區(qū)(即該EFFS分區(qū)中的最后一個(gè)扇區(qū));ieffsbeginPIT區(qū)21中記錄的該文件系統(tǒng)分區(qū)1起始位置;ieffslengthPIT區(qū)21中記錄的文件系統(tǒng)分區(qū)1容量。
      如此就在這塊空間上建立了本發(fā)明文件系統(tǒng)。該文件系統(tǒng)的使用既能夠在此套環(huán)境下的windows操作系統(tǒng)中使用,也能夠在此套環(huán)境下的嵌入式linux操作系統(tǒng)中使用。
      請(qǐng)參照?qǐng)D5所示,采用本發(fā)明文件系統(tǒng)而進(jìn)行文件管理的方法,包括以下步驟1)執(zhí)行步驟61,讀取元數(shù)據(jù)區(qū)2的數(shù)據(jù),并將相關(guān)數(shù)據(jù)組織成數(shù)據(jù)庫(kù)文件;i.讀取文件系統(tǒng)分區(qū)信息記錄區(qū)21的數(shù)據(jù),得到文件系統(tǒng)基本信息;ii.讀取文件系統(tǒng)文件記錄表記錄區(qū)22的數(shù)據(jù),得到基本文件信息及單向鏈表的索引地址,并組織成相應(yīng)數(shù)據(jù)庫(kù)文件并保存;iii.讀取文件系統(tǒng)未分配簇記錄區(qū)24的數(shù)據(jù),得到數(shù)據(jù)區(qū)3未分配簇所代表的物理存儲(chǔ)位置相關(guān)信息,并組織成相應(yīng)數(shù)據(jù)庫(kù)文件并保存;2)執(zhí)行步驟62,從步驟61中獲得該文件系統(tǒng)未分配存儲(chǔ)空間總?cè)萘?,并利用?shù)據(jù)庫(kù)訪問數(shù)據(jù)庫(kù)文件得到單向鏈表的索引地址;3)執(zhí)行步驟63,根據(jù)步驟62)中索引地址得到已有實(shí)際文件的單向鏈表和未被分配物理存儲(chǔ)空間的總?cè)萘?,?duì)已有實(shí)際文件的單向鏈表進(jìn)行操作或建立新的單向鏈表,進(jìn)而達(dá)成實(shí)際文件的管理;4)執(zhí)行步驟64,用數(shù)據(jù)庫(kù)更新數(shù)據(jù)庫(kù)文件;5)執(zhí)行步驟65,同步更新文件系統(tǒng)元數(shù)據(jù)區(qū)2相應(yīng)數(shù)據(jù)區(qū)域的數(shù)據(jù);6)同步更新元數(shù)據(jù)區(qū)備份區(qū)4相應(yīng)數(shù)據(jù)區(qū)域的數(shù)據(jù);步驟i)-iii),調(diào)用文件系統(tǒng)提供的接口,讀取小硬盤上文件分區(qū)1中的PIT區(qū)21、FDB區(qū)22和LUT區(qū)24的數(shù)據(jù),并將FDB區(qū)22和LUT區(qū)24的數(shù)據(jù)提取出來,利用提取出的數(shù)據(jù)建立四個(gè)數(shù)據(jù)庫(kù)文件fdb.dat、fdb.idx、lut.dat、lut.idx,分別為FDB區(qū)22和LUT區(qū)24數(shù)據(jù)文件和索引文件。數(shù)據(jù)庫(kù)利用數(shù)據(jù)庫(kù)文件完成文件管理訪問、修改、添加、刪除、恢復(fù)等。其中訪問、添加、刪除文件的操作已在本發(fā)明文件系統(tǒng)的原理部分進(jìn)行描述,而文件修改與文件訪問操作類似,不再贅述。
      當(dāng)要恢復(fù)以前備份過的一個(gè)實(shí)際文件時(shí),其文件恢復(fù)的操作包括以下步驟1)數(shù)據(jù)庫(kù)在FDB數(shù)據(jù)庫(kù)文件中找到該實(shí)際文件索引地址;
      2)根據(jù)文件系統(tǒng)中LAT區(qū)23提供的該實(shí)際文件所用的存儲(chǔ)單元在文件系統(tǒng)分區(qū)1中占用位置的單向鏈表結(jié)構(gòu);3)根據(jù)該單向鏈表結(jié)構(gòu)按順序?qū)⑽募到y(tǒng)分區(qū)1中該實(shí)際文件的一個(gè)一個(gè)存儲(chǔ)單元拷貝到windows系統(tǒng)下的指定地點(diǎn),就完成了該文件的恢復(fù)。
      此外,步驟5)、6),需要經(jīng)常對(duì)數(shù)據(jù)庫(kù)文件及元數(shù)據(jù)區(qū)2的數(shù)據(jù)作同步更新,以保證數(shù)據(jù)庫(kù)文件內(nèi)容的一致性。
      另外,在嵌入式linux環(huán)境下按照同樣的步驟能夠?qū)崿F(xiàn)上述的對(duì)文件的添加、刪除和復(fù)制過程,只不過將fdb.dat、fdb.idx、lut.dat、lut.idx這四個(gè)文件建立在ramfs中。
      在linux環(huán)境下,文件系統(tǒng)分區(qū)1被格式化過后即可作為一個(gè)可以對(duì)文件進(jìn)行存儲(chǔ)和邏輯組織的文件系統(tǒng)來使用,SharkBase嵌入式數(shù)據(jù)庫(kù)訪問數(shù)據(jù)庫(kù)數(shù)據(jù)文件和數(shù)據(jù)庫(kù)索引文件時(shí),調(diào)用的文件系統(tǒng)接口會(huì)按PIT區(qū)21中的數(shù)據(jù)信息將FDB區(qū)22和LUT區(qū)24中保存的數(shù)據(jù)的內(nèi)容拷貝到ramfs,并將其建立為四個(gè)數(shù)據(jù)庫(kù)文件FDB區(qū)22數(shù)據(jù)文件、FDB區(qū)22索引文件、LUT區(qū)24數(shù)據(jù)文件、LUT區(qū)24索引文件。數(shù)據(jù)庫(kù)通過訪問這幾個(gè)數(shù)據(jù)庫(kù)文件即可實(shí)現(xiàn)對(duì)文件系統(tǒng)中的實(shí)際文件的訪問。數(shù)據(jù)庫(kù)對(duì)這幾個(gè)數(shù)據(jù)庫(kù)文件的修改將通過文件系統(tǒng)的接口更新到文件系統(tǒng)分區(qū)1中的相應(yīng)的數(shù)據(jù)區(qū)域。
      在windows桌面環(huán)境下,如果使用SharkBase嵌入式數(shù)據(jù)庫(kù)實(shí)現(xiàn)該文件系統(tǒng),則原理與上述相同,唯一的區(qū)別在于此時(shí)數(shù)據(jù)庫(kù)數(shù)據(jù)文件和數(shù)據(jù)庫(kù)索引文件將被創(chuàng)建在windows系統(tǒng)下的可見分區(qū)中;如果使用windows下的小型個(gè)人數(shù)據(jù)庫(kù)access實(shí)現(xiàn)該文件系統(tǒng),則與使用SharkBase嵌入式數(shù)據(jù)庫(kù)的不同點(diǎn)在于此種情況下,由于access只有一個(gè)數(shù)據(jù)庫(kù)文件,這樣在文件系統(tǒng)構(gòu)建時(shí)只要將PIT區(qū)21中數(shù)據(jù)結(jié)構(gòu)的關(guān)于數(shù)據(jù)索引的項(xiàng)賦為0即可。
      綜上所述,本發(fā)明文件系統(tǒng)是個(gè)短小精悍的文件系統(tǒng),而相應(yīng)文件管理方法操作快速簡(jiǎn)單。
      權(quán)利要求
      1.一種文件系統(tǒng),構(gòu)建在存儲(chǔ)介質(zhì)上,其結(jié)構(gòu)包括數(shù)據(jù)區(qū),實(shí)際文件數(shù)據(jù)的保存區(qū);元數(shù)據(jù)區(qū),文件系統(tǒng)建立從物理數(shù)據(jù)到邏輯數(shù)據(jù)的映射關(guān)系而使用的標(biāo)志數(shù)據(jù)的保存區(qū),其特征在于元數(shù)據(jù)區(qū)保存有每個(gè)實(shí)際文件在數(shù)據(jù)區(qū)中的數(shù)據(jù)存儲(chǔ)物理位置的單向鏈表,而使每個(gè)實(shí)際文件的數(shù)據(jù)具有唯一的邏輯組合并且通過數(shù)據(jù)庫(kù)保存每個(gè)單向鏈表的物理保存區(qū)的索引地址而對(duì)實(shí)際文件進(jìn)行管理。
      2.如權(quán)利要求1所述的文件系統(tǒng),其特征在于文件系統(tǒng)所占有存儲(chǔ)介質(zhì)的存儲(chǔ)物理區(qū)域?yàn)樵撐募到y(tǒng)的文件系統(tǒng)分區(qū)。
      3.如權(quán)利要求2所述的文件系統(tǒng),其特征在于,文件系統(tǒng)分區(qū)為硬盤的一個(gè)分區(qū)或多個(gè)分區(qū)或整個(gè)硬盤。
      4.如權(quán)利要求2所述的文件系統(tǒng),其特征在于,元數(shù)據(jù)區(qū)劃分為4個(gè)邏輯數(shù)據(jù)區(qū)文件系統(tǒng)分區(qū)信息記錄區(qū),記錄文件系統(tǒng)的基本信息;文件系統(tǒng)已分配簇記錄區(qū),記錄單向鏈表;文件系統(tǒng)文件記錄表記錄區(qū),保存實(shí)際文件信息以及單向鏈表的索引地址;文件系統(tǒng)未分配簇記錄區(qū),記錄數(shù)據(jù)區(qū)未分配簇所代表的物理存儲(chǔ)位置。
      5.如權(quán)利要求4所述的文件系統(tǒng),其特征在于每個(gè)單向鏈表由一個(gè)或多個(gè)索引塊依序組成,索引地址為代表實(shí)際文件在數(shù)據(jù)區(qū)的第一個(gè)物理存儲(chǔ)位置的第一個(gè)索引塊的地址;第一個(gè)索引塊保存代表實(shí)際文件在數(shù)據(jù)區(qū)的第二個(gè)物理存儲(chǔ)位置的第二個(gè)索引塊的地址;第二個(gè)索引塊保存代表實(shí)際文件在數(shù)據(jù)區(qū)的第三個(gè)物理存儲(chǔ)位置的第三個(gè)索引塊的地址;以此類推成為單向鏈表。
      6.如權(quán)利要求4所述的文件系統(tǒng),其特征在于文件系統(tǒng)的基本信息包括存儲(chǔ)介質(zhì)的容量、文件系統(tǒng)分區(qū)的起始位置、文件系統(tǒng)分區(qū)的大小、元數(shù)據(jù)區(qū)中各邏輯分區(qū)的起始位置及其大小、數(shù)據(jù)庫(kù)文件的數(shù)量及其起始位置、大小。
      7.如權(quán)利要求4所述的文件系統(tǒng),其特征在于文件信息包括每個(gè)實(shí)際文件的文件名稱、絕對(duì)路徑、文件大小、文件的創(chuàng)建時(shí)間、文件的最后訪問時(shí)間、文件的最后修改時(shí)間、文件的屬主、文件的訪問權(quán)限。
      8.如權(quán)利要求4所述的文件系統(tǒng),其特征在于該文件系統(tǒng)還包括元數(shù)據(jù)區(qū)備份區(qū),以備份元數(shù)據(jù)區(qū)相應(yīng)的標(biāo)志數(shù)據(jù),相應(yīng)包括文件系統(tǒng)分區(qū)信息記錄區(qū)、文件系統(tǒng)文件記錄表記錄區(qū)、文件系統(tǒng)已分配簇記錄區(qū)及文件系統(tǒng)未分配簇記錄區(qū)的備份區(qū)。
      9.如權(quán)利要求8所述的文件系統(tǒng),其特征在于文件系統(tǒng)分區(qū)內(nèi)的排列順序依次為元數(shù)據(jù)區(qū)、數(shù)據(jù)區(qū)及元數(shù)據(jù)區(qū)備份區(qū),且其中文件系統(tǒng)分區(qū)信息記錄區(qū)備份區(qū)放置在文件系統(tǒng)分區(qū)的最后區(qū)域。
      10.一種文件管理方法,其特征在于該方法包括如下步驟1)讀取元數(shù)據(jù)區(qū)的數(shù)據(jù),并將相關(guān)數(shù)據(jù)組織成數(shù)據(jù)庫(kù)文件;2)根據(jù)步驟1)利用數(shù)據(jù)庫(kù)訪問數(shù)據(jù)庫(kù)文件得到單向鏈表的索引地址;3)對(duì)根據(jù)步驟2)中索引地址得到已有實(shí)際文件的單向鏈表進(jìn)行操作或建立新的單向鏈表,進(jìn)而達(dá)成實(shí)際文件的管理。
      11.如權(quán)利要求10所述的文件管理方法,其特征在于文件系統(tǒng)元數(shù)據(jù)區(qū)劃分為多個(gè)邏輯數(shù)據(jù)區(qū)文件系統(tǒng)分區(qū)信息記錄區(qū),記錄文件系統(tǒng)的基本信息;文件系統(tǒng)已分配簇記錄區(qū),記錄實(shí)際文件數(shù)據(jù)在數(shù)據(jù)區(qū)中存儲(chǔ)物理位置的單向鏈表;文件系統(tǒng)文件記錄表記錄區(qū),保存實(shí)際文件信息以及單向鏈表的索引地址;文件系統(tǒng)未分配簇記錄區(qū),記錄數(shù)據(jù)區(qū)未分配簇所代表的物理存儲(chǔ)位置。
      12.如權(quán)利要求11所述的文件管理方法,其特征在于步驟1)進(jìn)一步包括如下步驟a)讀取文件系統(tǒng)分區(qū)信息記錄區(qū)的數(shù)據(jù),得到文件系統(tǒng)基本信息;b)讀取文件系統(tǒng)文件記錄表記錄區(qū)的數(shù)據(jù),得到基本文件信息及單向鏈表的索引地址,并組織成相應(yīng)數(shù)據(jù)庫(kù)文件并保存;c)讀取文件系統(tǒng)未分配簇記錄區(qū)的數(shù)據(jù),得到數(shù)據(jù)區(qū)未分配簇所代表的物理存儲(chǔ)位置相關(guān)信息,并組織成相應(yīng)數(shù)據(jù)庫(kù)文件并保存。
      13.如權(quán)利要求12所述的文件管理方法,其特征在于文件系統(tǒng)的基本信息包括存儲(chǔ)介質(zhì)的容量、文件系統(tǒng)分區(qū)的起始位置、文件系統(tǒng)分區(qū)的大小、元數(shù)據(jù)區(qū)中各邏輯分區(qū)的起始位置及其大小、數(shù)據(jù)庫(kù)文件的數(shù)量及其起始位置、大小。
      14.如權(quán)利要求13所述的文件管理方法,其特征在于文件信息包括每個(gè)實(shí)際文件的文件名稱、絕對(duì)路徑、文件大小、文件的創(chuàng)建時(shí)間、文件的最后訪問時(shí)間、文件的最后修改時(shí)間、文件的屬主、文件的訪問權(quán)限。
      15.如權(quán)利要求14所述的文件管理方法,其特征在于每個(gè)實(shí)際文件的單向鏈表由一個(gè)或多個(gè)索引塊依序組成,每個(gè)索引塊代表該實(shí)際文件數(shù)據(jù)的存儲(chǔ)單元的地址。
      16.如權(quán)利要求15所述的文件管理方法,其特征在于每個(gè)單向鏈表的索引地址為該單向鏈表的第一索引塊的地址;且第一索引塊保存第二索引塊的地址;以此類推建構(gòu)單向鏈表。
      17.如權(quán)利要求16所述的文件管理方法,其特征在于數(shù)據(jù)庫(kù)將步驟b)中的數(shù)據(jù)庫(kù)文件的數(shù)據(jù)讀出,并將其組織為數(shù)據(jù)庫(kù)中的文件信息記錄表,每張表中的各數(shù)據(jù)域記錄相應(yīng)實(shí)際文件的文件名稱、絕對(duì)路徑、文件大小、文件的創(chuàng)建時(shí)間、文件的最后訪問時(shí)間、文件的最后修改時(shí)間、文件的屬主、文件的訪問權(quán)限及該實(shí)際文件單向鏈表的索引地址。
      18.如權(quán)利要求17所述的文件管理方法,其特征在于數(shù)據(jù)庫(kù)引擎將步驟c)中數(shù)據(jù)庫(kù)文件中的數(shù)據(jù)讀出,并將未分配存儲(chǔ)單元建立未分配簇編號(hào),組織為數(shù)據(jù)庫(kù)中的一張未分配簇記錄表,且記錄未分配簇所代表的物理存儲(chǔ)位置。
      19.如權(quán)利要求18所述的文件管理方法,其特征在于實(shí)際文件管理包括添加、恢復(fù)、刪除文件操作。
      20.如權(quán)利要求19所述的文件管理方法,其特征在于添加文件操作包括如下步驟根據(jù)步驟a)中的信息獲得未被分配物理存儲(chǔ)空間的總?cè)萘?;比較所要添加文件的占用空間與可用的物理存儲(chǔ)空間的總?cè)萘康拇笮?;如果小于可用的物理存?chǔ)空間的總?cè)萘?,則利用該記錄表中的記錄得到可被分配簇,每用掉一個(gè)記錄所表示的物理存儲(chǔ)空間,就在該表中刪除該條記錄;同時(shí)在文件系統(tǒng)已分配簇記錄區(qū)中,建立該添加文件的單向鏈表,并且其實(shí)際數(shù)據(jù)完全寫到相應(yīng)的物理存儲(chǔ)單元中;在文件系統(tǒng)文件記錄表記錄區(qū)中為該添加文件相關(guān)的文件信息以及單向鏈表的索引地址。
      21.如權(quán)利要求19所述的文件管理方法,其特征在于刪除文件操作包括如下步驟數(shù)據(jù)庫(kù)利用步驟b)中數(shù)據(jù)庫(kù)文件中的索引地址找到該實(shí)際文件的單向鏈表;根據(jù)該單向鏈表中的每一個(gè)索引塊所代表的物理存儲(chǔ)單元的地址在數(shù)據(jù)庫(kù)未分配簇記錄表中,為相應(yīng)的每個(gè)物理存儲(chǔ)單元建立未分配簇編號(hào);刪除掉該實(shí)際文件的文件信息記錄表的記錄,達(dá)成刪除保存在文件系統(tǒng)中的該實(shí)際文件。
      22.如權(quán)利要求19所述的文件管理方法,其特征在于恢復(fù)文件的操作包括以下步驟數(shù)據(jù)庫(kù)在FDB數(shù)據(jù)庫(kù)文件中找到該實(shí)際文件索引地址;根據(jù)文件系統(tǒng)中LAT區(qū)23提供的該實(shí)際文件所用的存儲(chǔ)單元在文件系統(tǒng)分區(qū)1中占用位置的單向鏈表結(jié)構(gòu);根據(jù)該單向鏈表結(jié)構(gòu)按順序?qū)⑽募到y(tǒng)分區(qū)1中該實(shí)際文件的一個(gè)一個(gè)存儲(chǔ)單元拷貝到windows系統(tǒng)下的指定地點(diǎn),就完成了該文件的恢復(fù)。
      23.如權(quán)利要求10所述的文件管理方法,其特征在于數(shù)據(jù)庫(kù)文件包括索引文件及數(shù)據(jù)文件存儲(chǔ)空間占有比例小于或等于1∶3。
      24.如權(quán)利要求12所述的文件管理方法,其特征在于步驟a)-步驟c)中讀取數(shù)據(jù)是通過用戶使用的操作系統(tǒng)或上層應(yīng)用訪問元數(shù)據(jù)區(qū)獲得,并暫時(shí)將數(shù)據(jù)庫(kù)文件保存到所使用的操作系統(tǒng)的內(nèi)存文件系統(tǒng)中。
      25.如權(quán)利要求24所述的文件管理方法,其特征在于該數(shù)據(jù)庫(kù)為嵌入式數(shù)據(jù)庫(kù)
      26.如權(quán)利要求10所述的文件管理方法,其特征在于完成步驟3)文件管理操作,同時(shí)用數(shù)據(jù)庫(kù)更新數(shù)據(jù)庫(kù)文件,進(jìn)而同步更新文件系統(tǒng)元數(shù)據(jù)區(qū)相應(yīng)數(shù)據(jù)區(qū)域的數(shù)據(jù)。
      27.如權(quán)利要求26所述的文件管理方法,其特征在于更新文件系統(tǒng)元數(shù)據(jù)區(qū)時(shí)同步更新元數(shù)據(jù)區(qū)備份區(qū)相應(yīng)數(shù)據(jù)區(qū)域的數(shù)據(jù)。
      全文摘要
      一種文件系統(tǒng)及文件管理方法,該文件系統(tǒng)構(gòu)建在存儲(chǔ)介質(zhì)上,其結(jié)構(gòu)包括數(shù)據(jù)區(qū),實(shí)際文件數(shù)據(jù)的保存區(qū);元數(shù)據(jù)區(qū),文件系統(tǒng)建立從物理數(shù)據(jù)到邏輯數(shù)據(jù)的映射關(guān)系而使用的標(biāo)志數(shù)據(jù)的保存區(qū),其特征在于元數(shù)據(jù)區(qū)保存有每個(gè)實(shí)際文件在數(shù)據(jù)區(qū)中的數(shù)據(jù)存儲(chǔ)物理位置的單向鏈表,而使每個(gè)實(shí)際文件的數(shù)據(jù)具有唯一的邏輯組合并且通過數(shù)據(jù)庫(kù)保存每個(gè)單向鏈表的物理保存區(qū)的索引地址而對(duì)實(shí)際文件進(jìn)行管理。采用該文件系統(tǒng)的文件管理方法讀取元數(shù)據(jù)區(qū)的數(shù)據(jù)并組織成數(shù)據(jù)庫(kù)文件;數(shù)據(jù)庫(kù)訪問數(shù)據(jù)庫(kù)文件得到單向鏈表的索引地址而對(duì)實(shí)際文件進(jìn)行管理。
      文檔編號(hào)G06F17/30GK1517906SQ03100340
      公開日2004年8月4日 申請(qǐng)日期2003年1月14日 優(yōu)先權(quán)日2003年1月14日
      發(fā)明者張鵬, 張 鵬 申請(qǐng)人:聯(lián)想(北京)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1