一種嵌入式終端的文件存取方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提出了一種嵌入式終端的文件存取方法及系統(tǒng),所述方法包含:存儲文件的步驟,具體包含:步驟101)計(jì)算文件所需的數(shù)據(jù)塊的數(shù)目;步驟102)查詢位圖信息,根據(jù)所需的數(shù)據(jù)塊的數(shù)目得到能滿足分配需求的數(shù)據(jù)塊組;步驟103)將文件存儲于從102)中找到的數(shù)據(jù)塊組中;查找讀取文件的步驟,具體包含:步驟201)計(jì)算文件名的哈希值;步驟202)依據(jù)得到的哈希值,并根據(jù)映射表找到與文件對應(yīng)的索引節(jié)點(diǎn),查詢索引節(jié)點(diǎn)中信息可獲得文件內(nèi)容所在的數(shù)據(jù)塊的位置信息;其中,所述索引節(jié)點(diǎn)中采用若干區(qū)段的形式記錄數(shù)據(jù)塊位置信息,且每個區(qū)段中包含起始數(shù)據(jù)塊編號和連續(xù)存放文件內(nèi)容的數(shù)據(jù)塊的數(shù)目;步驟203)從獲得的數(shù)據(jù)塊中讀取所需文件的內(nèi)容。本發(fā)明的技術(shù)能滿足文件存儲的高效性、可靠性、可用性和可擴(kuò)展性需求。
【專利說明】一種嵌入式終端的文件存取方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,具體涉及到一種嵌入式終端的文件存取方法及系統(tǒng)。
【背景技術(shù)】
[0002] 在數(shù)字媒體服務(wù)的應(yīng)用場景中,需要將從外部節(jié)目源獲取到的媒體數(shù)據(jù)存儲到本 地的磁盤陣列,用于數(shù)據(jù)推送。
[0003] 采用何種方案來存儲和管理流媒體數(shù)據(jù)是一個比較復(fù)雜和重要的問題。傳統(tǒng)的方 法是利用基于通用操作系統(tǒng)(如Windows、Linux)的文件系統(tǒng)進(jìn)行存儲和管理。然而,操作 系統(tǒng)和文件系統(tǒng)都會帶來不小的資源開銷,同時還會帶來存儲上的瓶頸,由此引出了一個 在保證數(shù)據(jù)存儲高可靠性的前提下,如何實(shí)現(xiàn)數(shù)據(jù)高效管理的問題。此問題亦即設(shè)計(jì)出一 個能滿足需求的精簡的磁盤數(shù)據(jù)管理系統(tǒng)來替代傳統(tǒng)的文件系統(tǒng)。
[0004] 現(xiàn)有的文件存儲技術(shù)和磁盤管理方法還無法完全滿足上述應(yīng)用需求,需要更合適 的方法來實(shí)現(xiàn)對流媒體數(shù)據(jù)的存儲和管理。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的在于,為克服上述現(xiàn)有技術(shù)中存在的不足,從而提出了一種嵌入式 終端的文件存取方法即系統(tǒng)。
[0006] 為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種嵌入式終端的文件存取方法,所述方法包 含:
[0007] 用于存儲文件的步驟,具體包含:步驟101)計(jì)算文件所需的數(shù)據(jù)塊的數(shù)目;步驟 102)查詢位圖信息,根據(jù)所需的數(shù)據(jù)塊的數(shù)目得到能滿足分配需求的數(shù)據(jù)塊組;步驟103) 將文件存儲于步驟102)找到的數(shù)據(jù)塊組中。
[0008] 用于查找讀取文件的步驟,具體包含:步驟201)計(jì)算文件名的哈希值;步驟202) 依據(jù)得到的哈希值,并根據(jù)映射表找到與文件對應(yīng)的索引節(jié)點(diǎn),查詢索引節(jié)點(diǎn)中信息可獲 得文件內(nèi)容所在的數(shù)據(jù)塊的位置信息;其中,所述索引節(jié)點(diǎn)中采用若干區(qū)段的形式記錄數(shù) 據(jù)塊位置信息,且每個區(qū)段中包含起始數(shù)據(jù)塊編號和連續(xù)存放文件內(nèi)容的數(shù)據(jù)塊的數(shù)目; 步驟203)從獲得的數(shù)據(jù)塊組中讀取所需文件的內(nèi)容;其中,所述位圖信息采用多層樹狀統(tǒng) 計(jì)結(jié)構(gòu)進(jìn)行索引和存儲,且自下向上分別為位圖塊、統(tǒng)計(jì)塊和超級塊;所述位圖塊用于記錄 數(shù)據(jù)塊組中各數(shù)據(jù)塊的使用狀態(tài);所述統(tǒng)計(jì)塊對位圖塊信息進(jìn)行統(tǒng)計(jì),所述超級塊則對統(tǒng) 計(jì)塊信息進(jìn)行統(tǒng)計(jì),統(tǒng)計(jì)結(jié)果記錄為最大連續(xù)可用空間和剩余總空間;所述數(shù)據(jù)塊,用于存 放文件內(nèi)容和文件元數(shù)據(jù),且一個數(shù)據(jù)塊為物理上若干連續(xù)的磁盤扇區(qū),為一個數(shù)據(jù)塊分 配一個全局的邏輯地址,并采用該邏輯地址進(jìn)行尋址;述數(shù)據(jù)塊組為若干物理地址和邏輯 地址均連續(xù)的數(shù)據(jù)塊;所述映射表存儲,用于記錄文件名哈希值到索引節(jié)點(diǎn)的一一映射關(guān) 系。
[0009] 上述步驟102)進(jìn)一步包含:步驟102-1)依據(jù)文件所需的數(shù)據(jù)塊的數(shù)目,通過超級 塊中記錄的信息定位到某個擁有足夠多空閑存儲量的統(tǒng)計(jì)塊;步驟102-2)依據(jù)定位得到 的統(tǒng)計(jì)塊中記錄的信息,再定位到某個位圖塊,即找到了能滿足分配需求的數(shù)據(jù)塊組,在該 數(shù)據(jù)塊組內(nèi)為該新文件分配存儲空間。
[0010] 當(dāng)為文件分配存儲空間時僅在一個數(shù)據(jù)塊組內(nèi)進(jìn)行;當(dāng)為文件分配數(shù)據(jù)塊時,采 用盡可能連續(xù)分配的思想為其分配存儲空間。
[0011] 優(yōu)化的,用于存儲文件的步驟中所述的步驟103)之后還包含如下步驟:步驟104) 為文件分配存儲空間后,將位圖中與剛被分配數(shù)據(jù)塊對應(yīng)的位標(biāo)記為"忙碌"狀態(tài),同時更 新統(tǒng)計(jì)塊中對應(yīng)信息,再進(jìn)一步更新超級塊中與之對應(yīng)的信息。
[0012] 上述方法還包含:刪除文件時更新位信息的步驟,具體為:
[0013] 刪除文件時立即回收該文件占用的數(shù)據(jù)塊,在數(shù)據(jù)塊所在組對應(yīng)的位塊中更新位 信息,同時更新統(tǒng)計(jì)塊中對應(yīng)信息,進(jìn)一步更新超級塊中與之對應(yīng)的信息。
[0014] 各數(shù)據(jù)塊的使用狀態(tài)采用二進(jìn)制位表征。
[0015] 此外本發(fā)明還提供了一種嵌入式終端的文件存取系統(tǒng),所述存儲系統(tǒng)包含:
[0016] 數(shù)據(jù)塊,用于存儲文件和文件元數(shù)據(jù),一個數(shù)據(jù)塊包含物理上若干連續(xù)的磁盤扇 區(qū);
[0017] 位圖塊,用于記錄數(shù)據(jù)塊的使用狀態(tài),一個位圖塊的信息標(biāo)識了一組數(shù)據(jù)塊的使 用狀態(tài);
[0018] 統(tǒng)計(jì)塊,用于對若干位圖塊信息進(jìn)行統(tǒng)計(jì),一個統(tǒng)計(jì)塊中的信息記錄了一組位圖 塊中每個位圖塊表征的最大連續(xù)可用空間和剩余總空間;
[0019] 超級塊,用于對統(tǒng)計(jì)塊中的信息進(jìn)行統(tǒng)計(jì),記錄每個統(tǒng)計(jì)塊表征的最大連續(xù)可用 空間和剩余總空間;
[0020] 索引塊,由若干索引節(jié)點(diǎn)組成,每個索引節(jié)點(diǎn)中存放與之對應(yīng)的文件占用的數(shù)據(jù) 塊的位置信息,及此文件大小、文件創(chuàng)建時間和文件類型信息;和
[0021] 文件入口,用于記錄文件名哈希值到索引節(jié)點(diǎn)的映射表;
[0022] 其中,為所述的每個數(shù)據(jù)塊分配一個邏輯地址,該邏輯地址用于文件存取時尋 址;
[0023] 所述文件名哈希值用于唯一標(biāo)識該文件;
[0024] 當(dāng)查找文件時,通過所述文件入口存儲的映射表尋找文件對應(yīng)的索引節(jié)點(diǎn);
[0025] 當(dāng)為新建文件分配存儲空間時,先計(jì)算文件所需的數(shù)據(jù)塊的數(shù)量,依次查詢超級 塊、統(tǒng)計(jì)塊和位圖塊信息找到足夠存儲容量的數(shù)據(jù)塊組,為新建文件分配存儲空間。
[0026] 上述系統(tǒng)還包含:更新驅(qū)動模塊,用于當(dāng)存儲文件時,刪除文件時驅(qū)動位圖塊、統(tǒng) 計(jì)塊和超級塊改變對應(yīng)數(shù)據(jù)塊的使用狀態(tài)信息。
[0027] 上述索引節(jié)點(diǎn)采用多個區(qū)段的形式記錄數(shù)據(jù)塊位置信息,每個區(qū)段中包含起始數(shù) 據(jù)塊編號、連續(xù)數(shù)據(jù)塊數(shù)目。
[0028] 總之,本發(fā)明公開了一種嵌入式系統(tǒng)磁盤數(shù)據(jù)管理方法,將磁盤陣列中的扇區(qū)映 射成邏輯上的數(shù)據(jù)塊,通過對邏輯上的數(shù)據(jù)塊的管理來實(shí)現(xiàn)對磁盤陣列資源的管理;該方 法采用扁平式目錄結(jié)構(gòu),將文件的哈希值作為文件存儲時的唯一標(biāo)識;用二進(jìn)制位表示數(shù) 據(jù)塊的使用狀態(tài),位圖信息采用多層樹狀統(tǒng)計(jì)結(jié)構(gòu)進(jìn)行存儲,并將數(shù)據(jù)塊分組管理,新建文 件時僅在同一組內(nèi)為新文件預(yù)分配存儲空間,為文件分配的存儲空間的位置信息以區(qū)段的 形式記錄;此外,對屬于不同大小等級的文件,采用不同尺寸的數(shù)據(jù)塊進(jìn)行存儲。
[0029] 與現(xiàn)有技術(shù)相比,本發(fā)明的技術(shù)優(yōu)勢在于:能滿足流媒體應(yīng)用中文件存儲的高效 性、可靠性、可用性和可擴(kuò)展性方面的需求,上述四方面優(yōu)勢具體為:
[0030] 高效性--能夠?qū)崿F(xiàn)磁盤空間的高效管理和文件的高效存儲;
[0031] 可靠性--能夠在異常情況和突發(fā)事件下對文件數(shù)據(jù)進(jìn)行恢復(fù);
[0032] 可用性--能夠同時支持大文件和小文件的存儲;
[0033] 可擴(kuò)展性--能夠支持系統(tǒng)容量和功能的擴(kuò)展。
【專利附圖】
【附圖說明】
[0034] 下面結(jié)合附圖對本發(fā)明進(jìn)行詳細(xì)的描述,使得本發(fā)明的上述優(yōu)點(diǎn)更加明確。
[0035] 圖1是本發(fā)明實(shí)施例提供的磁盤數(shù)據(jù)管理系統(tǒng)的邏輯結(jié)構(gòu)示意圖;
[0036] 圖2是本發(fā)明實(shí)施例提供的存儲位圖的多層樹狀統(tǒng)計(jì)結(jié)構(gòu)示意圖,其中,圖標(biāo)"·" 表示最大連續(xù)可用空間,圖標(biāo)"□"表示剩余總空間;
[0037] 圖3是本發(fā)明實(shí)施例提供的索引節(jié)點(diǎn)存儲數(shù)據(jù)塊位置信息示意圖。
【具體實(shí)施方式】
[0038] 下面結(jié)合附圖對本發(fā)明進(jìn)行詳細(xì)的說明:
[0039] 本發(fā)明針對現(xiàn)有文件存儲技術(shù)和磁盤管理方法在流媒體應(yīng)用中存在的不足,結(jié)合 流媒體數(shù)據(jù)的特點(diǎn),抽象出了一個邏輯上的磁盤數(shù)據(jù)管理系統(tǒng),并基于該系統(tǒng)提出了一種 磁盤數(shù)據(jù)管理方法。
[0040] 其中,圖1是磁盤數(shù)據(jù)管理系統(tǒng)的邏輯結(jié)構(gòu)示意圖;
[0041] 如圖1所示,磁盤數(shù)據(jù)管理系統(tǒng)包括超級塊、統(tǒng)計(jì)塊、位圖塊、文件入口、索引塊和 數(shù)據(jù)塊。
[0042] 數(shù)據(jù)塊,用于存儲文件和文件元數(shù)據(jù),所述數(shù)據(jù)塊是系統(tǒng)中存儲文件的最小單元, 且一個數(shù)據(jù)塊在物理上對應(yīng)若干連續(xù)的磁盤扇區(qū),而一系列邏輯上連續(xù)的數(shù)據(jù)塊又組成了 數(shù)據(jù)塊組;
[0043] 位圖塊,用于記錄數(shù)據(jù)塊的使用狀態(tài),一個位圖塊的信息標(biāo)識了一組數(shù)據(jù)塊的使 用狀態(tài),具體為:位圖塊用于存儲以二進(jìn)制位表示的數(shù)據(jù)塊是否被使用的信息,每個數(shù)據(jù)塊 的狀態(tài)用一個位來標(biāo)識,而一組數(shù)據(jù)塊的狀態(tài)則用一個位圖塊來表示,一個位圖塊中位的 數(shù)量和一個組內(nèi)數(shù)據(jù)塊的數(shù)量應(yīng)相同;
[0044] 統(tǒng)計(jì)塊,用于對若干位圖塊信息進(jìn)行統(tǒng)計(jì),一個統(tǒng)計(jì)塊中的信息記錄了一組位圖 塊中每個位圖塊表征的最大連續(xù)可用空間和剩余總空間;
[0045] 超級塊,對統(tǒng)計(jì)塊中信息進(jìn)行統(tǒng)計(jì),超級塊中記錄了每個統(tǒng)計(jì)塊表征的最大連續(xù) 可用空間和剩余總空間,還記錄系統(tǒng)中數(shù)據(jù)塊大小、總數(shù)等信息;
[0046] 索引塊,由若干索引節(jié)點(diǎn)組成,每個索引節(jié)點(diǎn)中存放著與之對應(yīng)的文件占用的數(shù) 據(jù)塊的位置信息,還存儲文件大小、文件創(chuàng)建時間、文件類型等元數(shù)據(jù)信息;
[0047] 文件入口,記錄了文件名哈希值到索引節(jié)點(diǎn)的--映射關(guān)系;
[0048] 文件名的哈希值是系統(tǒng)中該文件的唯一標(biāo)識,通過文件入口的一維映射,可以直 接找到文件對應(yīng)的索引節(jié)點(diǎn),因此本發(fā)明采用的是扁平式目錄結(jié)構(gòu),省去了傳統(tǒng)文件系統(tǒng) 中的目錄結(jié)構(gòu),加快了訪問文件的速度,減少了系統(tǒng)開銷。
[0049] 從圖1中可以看出,系統(tǒng)中存在不止一種數(shù)據(jù)塊,這是為了存放不同大小等級的 文件。流媒體應(yīng)用中主要包含流媒體數(shù)據(jù)的大文件和對其索引的小文件,大文件存于大數(shù) 據(jù)塊中,小文件則存放在小數(shù)據(jù)塊中,能降低磁盤碎片率。
[0050] 上述系統(tǒng)具體應(yīng)用時還采用了如下策略:
[0051] 將若干個物理上連續(xù)的磁盤扇區(qū)合并為一個邏輯上的數(shù)據(jù)塊,從而形成一個屬于 數(shù)據(jù)塊的全局邏輯地址空間,對磁盤陣列上扇區(qū)的物理尋址則被轉(zhuǎn)換為對數(shù)據(jù)塊的邏輯地 址尋址。
[0052] 采用扁平式目錄結(jié)構(gòu),將文件名的哈希值作為系統(tǒng)中文件的唯一標(biāo)識,摒棄了傳 統(tǒng)文件系統(tǒng)中的目錄結(jié)構(gòu),提高了訪問文件的速度。
[0053] 將數(shù)據(jù)塊分組管理,同組內(nèi)數(shù)據(jù)塊在邏輯上保持連續(xù),把對數(shù)據(jù)塊的操作簡化到 在一個組內(nèi)進(jìn)行,利于文件的快速讀寫。
[0054] 用二進(jìn)制位表示數(shù)據(jù)塊是否為空閑狀態(tài),一個組內(nèi)所有數(shù)據(jù)塊的使用狀態(tài)由一個 位圖塊來表征,位圖塊中每一個位信息表征與之對應(yīng)的數(shù)據(jù)塊的使用狀態(tài)。
[0055] 位圖信息采用多層樹狀統(tǒng)計(jì)結(jié)構(gòu)進(jìn)行索引和存儲,自下向上分別為位圖塊、統(tǒng)計(jì) 塊和超級塊;其中,統(tǒng)計(jì)塊對位圖塊信息進(jìn)行統(tǒng)計(jì),超級塊則對統(tǒng)計(jì)塊信息進(jìn)行統(tǒng)計(jì),統(tǒng)計(jì) 結(jié)果記錄為最大連續(xù)可用空間和剩余總空間。
[0056] 為新文件預(yù)分配存儲空間:先計(jì)算新文件所需數(shù)據(jù)塊數(shù),查詢位圖信息,找到一個 空閑數(shù)據(jù)塊數(shù)能滿足分配需求的組,之后在該組內(nèi)按盡可能連續(xù)分配的思想為該文件分配 其所需存儲空間,以保證讀寫數(shù)據(jù)的時間開銷盡可能小。
[0057] 采用多個區(qū)段的形式,在索引節(jié)點(diǎn)中記錄為各文件分配的數(shù)據(jù)塊位置信息,每個 區(qū)段中包含起始數(shù)據(jù)塊編號、連續(xù)數(shù)據(jù)塊數(shù)目。
[0058] 刪除文件時立即回收該文件占用的數(shù)據(jù)塊和索引節(jié)點(diǎn),清空文件入口中與此文件 相關(guān)的信息,更新位圖。對屬于不同大小等級的文件,采用不同尺寸的數(shù)據(jù)塊進(jìn)行存儲,降 低了磁盤碎片率。
[0059] 圖2是存儲位圖的多層樹狀統(tǒng)計(jì)結(jié)構(gòu)示意圖:
[0060] 如圖2所示,該樹狀統(tǒng)計(jì)結(jié)構(gòu)自底向上依次是位圖塊、統(tǒng)計(jì)塊、超級塊;
[0061] 每個位圖塊管理一組數(shù)據(jù)塊,通過查詢該位圖塊中的位信息便能獲取該組數(shù)據(jù)塊 的使用狀況;
[0062] 在使用過程中,每組數(shù)據(jù)塊中都可能存在空閑數(shù)據(jù)塊,為了獲取一組數(shù)據(jù)塊使用 狀態(tài)的詳細(xì)信息,需要對組內(nèi)最大連續(xù)可用數(shù)據(jù)塊數(shù)和剩余可用數(shù)據(jù)塊總數(shù)進(jìn)行統(tǒng)計(jì)并記 錄。統(tǒng)計(jì)塊的作用就是記錄位圖塊對應(yīng)數(shù)據(jù)塊組的最大連續(xù)可用空間和剩余總空間;
[0063] 統(tǒng)計(jì)塊中包含若干個存儲單元,如圖2所示,每個單元內(nèi)存放著對某一位圖塊的 統(tǒng)計(jì)結(jié)果,即該位圖塊管理的數(shù)據(jù)塊組中最大連續(xù)可用空間和剩余總空間;
[0064] 超級塊對對統(tǒng)計(jì)塊中信息再進(jìn)行統(tǒng)計(jì),如圖2所示,超級塊中每個單元存放著對 某一統(tǒng)計(jì)塊的統(tǒng)計(jì)結(jié)果;
[0065] 新建文件時,為新文件預(yù)分配存儲空間,先計(jì)算該文件所需數(shù)據(jù)塊數(shù),查詢該樹狀 統(tǒng)計(jì)結(jié)構(gòu)便能在最短時間內(nèi)找到能滿足分配的數(shù)據(jù)塊組。具體來說,先通過超級塊中信息 定位到某統(tǒng)計(jì)塊,在通過統(tǒng)計(jì)塊中信息定位到某位圖塊,即找到了一個數(shù)據(jù)塊組,在該組內(nèi) 為該新文件分配存儲空間;
[0066] 通過此樹狀統(tǒng)計(jì)結(jié)構(gòu)尋找數(shù)據(jù)塊組,避免了對所有位圖塊進(jìn)行掃描,能大大降低 查詢時間,為磁盤數(shù)據(jù)的高效管理提供了有力保障;
[0067] 為新文件預(yù)分配存儲空間后,將位圖中與剛被分配數(shù)據(jù)塊對應(yīng)的位標(biāo)記為"忙碌" 狀態(tài),同時更新統(tǒng)計(jì)塊中對應(yīng)信息,進(jìn)一步更新超級塊中與之對應(yīng)的信息;
[0068] 刪除文件時立即回收該文件占用的數(shù)據(jù)塊,在數(shù)據(jù)塊所在組對應(yīng)的位圖中更新位 信息,同時更新統(tǒng)計(jì)塊中對應(yīng)信息,進(jìn)一步更新超級塊中與之對應(yīng)的信息。
[0069] 圖3是索引節(jié)點(diǎn)存儲數(shù)據(jù)塊位置信息示意圖:
[0070] 索引節(jié)點(diǎn)中記錄了與該節(jié)點(diǎn)對應(yīng)的文件內(nèi)容所在的數(shù)據(jù)塊的位置信息,本申請沒 有使用傳統(tǒng)的直接/間接塊映射表的記錄方式,而采用多個區(qū)段的形式記錄數(shù)據(jù)塊位置信 息,每個區(qū)段中包含起始數(shù)據(jù)塊編號、連續(xù)數(shù)據(jù)塊數(shù)目;
[0071] 如圖3所示,圖中所描述的情況是文件內(nèi)容存放在若干段數(shù)據(jù)塊中,每段包含的 數(shù)據(jù)塊數(shù)不盡相同,而每一段數(shù)據(jù)塊的位置信息則采用區(qū)段的形式記錄在索引節(jié)點(diǎn)中。具 體來說,存放該文件的區(qū)段信息為(18, 2)、(33, 3)、( 146,4),表示存儲該文件的數(shù)據(jù)塊包 括:從18號開始的2塊數(shù)據(jù)塊、從33號開始的3塊數(shù)據(jù)塊和從146號開始的4塊數(shù)據(jù)塊;
[0072] 此外,為新文件分配存儲空間僅在一個數(shù)據(jù)塊組內(nèi)進(jìn)行,避免了數(shù)據(jù)存放時跨度 太大造成文件讀寫時磁盤尋道時間過長帶來的性能損失;在為新文件分配數(shù)據(jù)塊時,采用 盡可能連續(xù)分配的思想為新文件分配存儲空間;
[0073] 為文件分配的數(shù)據(jù)塊盡可能連續(xù),可以提高文件讀寫的性能,還減少了索引節(jié)點(diǎn) 存儲數(shù)據(jù)塊位置信息占用的空間,節(jié)約了元數(shù)據(jù)開銷。
[0074] 綜上所述,本發(fā)明提供的一種嵌入式系統(tǒng)磁盤數(shù)據(jù)存取方法,采用磁盤邏輯塊方 式存儲和管理數(shù)據(jù)內(nèi)容,支持?jǐn)?shù)據(jù)的高速訪問和高效存儲。設(shè)置不同尺寸的數(shù)據(jù)塊,對屬于 不同大小等級的文件,采用不同尺寸的數(shù)據(jù)塊進(jìn)行存儲;將數(shù)據(jù)塊分組管理,新建文件時僅 在同一組內(nèi)為其預(yù)分配存儲空間;用二進(jìn)制位表示數(shù)據(jù)塊是否為空閑狀態(tài),采用多層樹狀 統(tǒng)計(jì)結(jié)構(gòu)存儲位圖信息;采用多個區(qū)段的形式記錄為文件分配的數(shù)據(jù)塊位置信息,每個區(qū) 段中包含起始數(shù)據(jù)塊編號、連續(xù)數(shù)據(jù)塊數(shù)目;采用扁平式目錄結(jié)構(gòu),將文件名的哈希值作為 系統(tǒng)中文件的唯一標(biāo)識。將若干個物理上連續(xù)的磁盤扇區(qū)合并為一個邏輯上的數(shù)據(jù)塊,從 而形成一個屬于數(shù)據(jù)塊的全局邏輯地址空間,對磁盤陣列中扇區(qū)的物理尋址則被轉(zhuǎn)換為對 數(shù)據(jù)塊的邏輯地址尋址。樹狀統(tǒng)計(jì)結(jié)構(gòu)中包括超級塊、統(tǒng)計(jì)塊和位圖塊,位圖塊中每一個位 則標(biāo)識與之對應(yīng)的某數(shù)據(jù)塊的使用狀態(tài)。為新創(chuàng)建文件預(yù)分配數(shù)據(jù)塊時,先計(jì)算文件所需 數(shù)據(jù)塊數(shù),查詢位圖信息,找到一個空閑數(shù)據(jù)塊數(shù)能滿足分配需求的組,之后在該組內(nèi)按盡 可能連續(xù)分配的思想為文件分配其所需存儲空間,以保證文件讀寫的時間開銷盡可能?。?刪除文件時立即回收該文件占用的數(shù)據(jù)塊,更新位圖信息。
[0075] 最后需要說明的是,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制。盡管參 照實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,對本發(fā)明的技術(shù)方案進(jìn) 行修替換或改進(jìn),都不脫離本發(fā)明技術(shù)方案的精神和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要 求范圍內(nèi)。
【權(quán)利要求】
1. 一種嵌入式終端的文件存取系統(tǒng),其特征在于,所述存儲系統(tǒng)包含: 數(shù)據(jù)塊,用于存儲文件和文件元數(shù)據(jù),一個數(shù)據(jù)塊包含物理上若干連續(xù)的磁盤扇區(qū); 位圖塊,用于記錄數(shù)據(jù)塊的使用狀態(tài),一個位圖塊的信息標(biāo)識了一組數(shù)據(jù)塊的使用狀 態(tài); 統(tǒng)計(jì)塊,用于對若干位圖塊信息進(jìn)行統(tǒng)計(jì),一個統(tǒng)計(jì)塊中的信息記錄了一組位圖塊中 每個位圖塊表征的最大連續(xù)可用空間和剩余總空間; 超級塊,用于對統(tǒng)計(jì)塊中的信息進(jìn)行統(tǒng)計(jì),記錄每個統(tǒng)計(jì)塊表征的最大連續(xù)可用空間 和剩余總空間; 索引塊,由若干索引節(jié)點(diǎn)組成,每個索引節(jié)點(diǎn)中存放與之對應(yīng)的文件占用的數(shù)據(jù)塊的 位置信息,及此文件大小、文件創(chuàng)建時間和文件類型信息;和 文件入口,用于記錄文件名哈希值到索引節(jié)點(diǎn)的映射表; 其中,為所述的每個數(shù)據(jù)塊分配一個邏輯地址,該邏輯地址用于文件存取時尋址; 所述文件名哈希值用于唯一標(biāo)識該文件; 當(dāng)查找文件時,通過所述文件入口存儲的映射表尋找文件對應(yīng)的索引節(jié)點(diǎn); 當(dāng)為新建文件分配存儲空間時,先計(jì)算文件所需的數(shù)據(jù)塊的數(shù)量,依次查詢超級塊、統(tǒng) 計(jì)塊和位圖塊信息找到擁有足夠存儲容量的數(shù)據(jù)塊組,為新建文件分配存儲空間。
2. 根據(jù)權(quán)利要求1所述的嵌入式終端的文件存取系統(tǒng),其特征在于,所述系統(tǒng)還包含: 更新驅(qū)動模塊,用于當(dāng)存儲文件時,刪除文件時驅(qū)動位圖塊、統(tǒng)計(jì)塊和超級塊改變對應(yīng) 數(shù)據(jù)塊的使用狀態(tài)信息。
3. 根據(jù)權(quán)利要求1所述的嵌入式終端的文件存取系統(tǒng),其特征在于,所述索引節(jié)點(diǎn)采 用多個區(qū)段的形式記錄數(shù)據(jù)塊位置信息,每個區(qū)段中包含起始數(shù)據(jù)塊編號、連續(xù)數(shù)據(jù)塊數(shù) 目。
4. 一種嵌入式終端的文件存取方法,所述方法包含: 用于存儲文件的步驟,具體包含: 步驟101)計(jì)算文件所需的數(shù)據(jù)塊的數(shù)目; 步驟102)查詢位圖信息,根據(jù)所需的數(shù)據(jù)塊的數(shù)目得到若干能滿足分配需求的數(shù)據(jù)塊 組; 步驟103)將文件存儲于從102)中找到的數(shù)據(jù)塊組中; 用于查找讀取文件的步驟,具體包含: 步驟201)計(jì)算文件名的哈希值; 步驟202)依據(jù)得到的哈希值,并根據(jù)映射表找到與文件對應(yīng)的索引節(jié)點(diǎn),查詢索引節(jié) 點(diǎn)中信息可獲得文件內(nèi)容所在的數(shù)據(jù)塊的位置信息; 其中,所述索引節(jié)點(diǎn)中采用若干區(qū)段的形式記錄數(shù)據(jù)塊位置信息,且每個區(qū)段中包含 起始數(shù)據(jù)塊編號和連續(xù)存放文件內(nèi)容的數(shù)據(jù)塊的數(shù)目; 步驟203)從獲得的數(shù)據(jù)塊中讀取所需文件的內(nèi)容; 其中, 所述位圖信息采用多層樹狀統(tǒng)計(jì)結(jié)構(gòu)進(jìn)行索引和存儲,且自下向上分別為位圖塊、統(tǒng) 計(jì)塊和超級塊;所述位圖塊用于記錄數(shù)據(jù)塊組中各數(shù)據(jù)塊的使用狀態(tài);所述統(tǒng)計(jì)塊對位圖 塊信息進(jìn)行統(tǒng)計(jì),所述超級塊則對統(tǒng)計(jì)塊信息進(jìn)行統(tǒng)計(jì),統(tǒng)計(jì)結(jié)果記錄為最大連續(xù)可用空 間和剩余總空間; 所述數(shù)據(jù)塊,用于存放文件內(nèi)容和文件元數(shù)據(jù),且一個數(shù)據(jù)塊為物理上若干連續(xù)的磁 盤扇區(qū),為一個數(shù)據(jù)塊分配一個全局的邏輯地址,并采用該邏輯地址進(jìn)行尋址; 所述數(shù)據(jù)塊組為若干物理地址和邏輯地址均連續(xù)的數(shù)據(jù)塊; 所述映射表存儲,用于記錄文件名哈希值到索引節(jié)點(diǎn)的一一映射關(guān)系。
5. 根據(jù)權(quán)利要求4所述的嵌入式終端的文件存儲及讀取方法,其特征在于,所述步驟 102)進(jìn)一步包含: 步驟102-1)依據(jù)文件所需的數(shù)據(jù)塊的數(shù)目,通過超級塊中記錄的信息定位到某個擁有 足夠多空閑存儲量的統(tǒng)計(jì)塊; 步驟102-2)依據(jù)定位得到的統(tǒng)計(jì)塊中記錄的信息,再定位到某個位圖塊,即找到了能 滿足分配需求的數(shù)據(jù)塊組,在該數(shù)據(jù)塊組內(nèi)為該新文件分配存儲空間。
6. 根據(jù)權(quán)利要求5所述的嵌入式終端的文件存儲及讀取方法,其特征在于, 當(dāng)為文件分配存儲空間時僅在一個數(shù)據(jù)塊組內(nèi)進(jìn)行; 當(dāng)為文件分配數(shù)據(jù)塊時,采用盡可能連續(xù)分配的思想為其分配存儲空間。
7. 根據(jù)權(quán)利要求4或5所述的嵌入式終端的文件存儲及讀取方法,其特征在于,用于存 儲文件的步驟中所述的步驟103)之后還包含如下步驟: 步驟104)為文件分配存儲空間后,將位圖中與剛被分配數(shù)據(jù)塊對應(yīng)的位標(biāo)記為"忙碌" 狀態(tài),同時更新統(tǒng)計(jì)塊中對應(yīng)信息,再進(jìn)一步更新超級塊中與之對應(yīng)的信息。
8. 根據(jù)權(quán)利要求4所述的嵌入式終端的文件存儲及讀取方法,其特征在于,所述方法 還包含: 刪除文件時更新位信息的步驟,具體為: 刪除文件時立即回收該文件占用的數(shù)據(jù)塊,在數(shù)據(jù)塊所在組對應(yīng)的位圖塊中更新位信 息,同時更新統(tǒng)計(jì)塊中對應(yīng)信息,進(jìn)一步更新超級塊中與之對應(yīng)的信息。
9. 根據(jù)權(quán)利要求4所述的嵌入式終端的文件存儲及讀取方法,其特征在于,各數(shù)據(jù)塊 的使用狀態(tài)采用二進(jìn)制位表征。
【文檔編號】G06F17/30GK104346357SQ201310322934
【公開日】2015年2月11日 申請日期:2013年7月29日 優(yōu)先權(quán)日:2013年7月29日
【發(fā)明者】陳君, 吳京洪, 李明哲, 李軍, 葉曉舟 申請人:中國科學(xué)院聲學(xué)研究所, 北京中科智網(wǎng)科技有限公司