[發明專利]一種文件系統中可配置的實時透明壓縮方法有效
| 申請號: | 201010271788.1 | 申請日: | 2010-09-03 |
| 公開(公告)號: | CN101957836A | 公開(公告)日: | 2011-01-26 |
| 發明(設計)人: | 唐力;汪東升 | 申請(專利權)人: | 清華大學 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 北京清亦華知識產權代理事務所(普通合伙) 11201 | 代理人: | 羅文群 |
| 地址: | 100084*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 文件系統 配置 實時 透明 壓縮 方法 | ||
1.一種文件系統中可配置的實時透明壓縮方法,其特征在于該方法包括以下步驟:
(1)由用戶根據文件的擴展名或文件的文件夾路徑對文件進行分類,確定需壓縮文件的種類及相應的壓縮算法,并將需壓縮文件的種類及相應的壓縮算法存儲到一個配置文件中;
(2)當文件系統被掛載入計算機的操作系統時,從上述配置文件中讀取需壓縮文件的種類及相應的壓縮算法,根據讀取的需壓縮文件種類及相應壓縮算法,在計算機內存中構建兩個哈希表:第一哈希表和第二哈希表,使第一哈希表的鍵為文件夾路徑,值為與該文件夾路徑表示的文件種類相對應的壓縮算法,使第二哈希表的鍵為文件擴展名,值為與該文件擴展名表示的文件種類相對應的壓縮算法;
(3)在嵌入式數據庫中設置文件元數據表、數據塊索引表和文件組成表,用其中的文件元數據表記錄上述文件系統中每個文件的元數據,包括文件標識、文件名、父文件夾標識、文件大小、文件類型、訪問權限、文件的創建時間、修改時間、訪問時間和文件的擴展名以及對該文件使用的壓縮算法,用其中的數據塊索引表記錄上述文件系統中每個文件的數據塊標識以及與該數據塊標識相對應的數據塊的引用次數,其中數據塊標識為該數據塊內容的哈希值;用其中的文件組成表記錄組成上述文件系統中每個文件的數據塊的信息,該信息包括該數據塊所屬文件的文件標識、數據塊起始位置、數據塊大小和數據塊標識,數據塊起始位置和數據塊大小決定了該數據塊在該數據塊所屬文件中覆蓋的數據區域;
(4)利用計算機中的文件系統驅動模塊,接收和響應計算機應用程序對上述文件系統發起的操作命令,該操作命令包括創建新文件夾、創建新文件、向已有文件寫入數據、從已有文件讀取數據和刪除已有文件,具體過程如下:
(4-1)當文件系統驅動模塊接收到來自計算機應用程序的創建新文件夾的操作命令時,進行以下操作:
(4-1-1)根據操作命令中被創建文件夾的父文件夾標識,在上述文件元數據表中檢索出該父文件夾標識表示的文件種類使用的壓縮算法,若檢索結果為未使用任何壓縮算法,則通過上述文件元數據表逐級向上遞歸檢索,得到被創建文件夾的路徑,并在上述第一哈希表中檢索該被創建文件夾的路徑,若檢索到路徑,則將該檢索到的路徑的壓縮算法作為該被創建文件夾的壓縮算法,若檢索不到路徑,則將該被創建文件夾的壓縮算法記為未使用任何壓縮算法,若檢索結果為使用了壓縮算法,則將檢索到的壓縮算法作為被創建文件夾的壓縮算法;
(4-1-2)在上述文件元數據表中記錄被創建文件夾的元數據;
(4-2)當文件系統的驅動模塊接收到來自計算機應用程序的創建新文件的操作命令時,進行以下操作:
(4-2-1)根據操作命令中被創建文件的文件名得到被創建文件的擴展名,在上述第二哈希表中檢索該被創建文件的擴展名,若檢索到被創建文件的擴展名,則將與檢索得到的由被創建文件的擴展名表示的文件種類相對應的壓縮算法作為被創建文件的壓縮算法,若檢索不到被創建文件的擴展名,則根據操作命令中該被創建文件的父文件夾標識,在上述文件元數據表中檢索該父文件夾標識表示的文件種類使用的壓縮算法,若檢索結果為未使用任何壓縮算法,則將該被創建文件的壓縮算法記為未使用任何壓縮算法,若檢索結果為使用了壓縮算法,則將該壓縮算法作為被創建文件的壓縮算法;
(4-2-2)在上述文件元數據表中記錄被創建文件的元數據;
(4-3)當文件系統的驅動模塊接收到來自計算機應用程序的向已有文件寫入數據的操作命令時,進行以下操作:
(4-3-1)根據操作命令中被寫文件的文件標識、寫入位置和寫入數據大小,從上述文件組成表中檢索屬于該被寫文件的兩個數據塊標識,且滿足與該兩個數據塊標識相對應的數據塊為與被寫入數據區域相互重疊的首、尾兩個數據塊,并根據該檢索到的數據塊標識,從存儲設備中讀取與該數據塊標識相對應的數據塊內容;
(4-3-2)根據操作命令中被寫文件的文件標識,從上述文件元數據表中檢索出被寫文件使用的壓縮算法,若檢索結果為未使用任何壓縮算法,則進行步驟(4-3-3),若檢索結果為使用了壓縮算法,則使用該壓縮算法對步驟(4-3-1)得到的數據塊內容進行解壓縮;
(4-3-3)將上述步驟(4-3-1)的數據塊內容中或步驟(4-3-1)經解壓縮的數據塊內容中與被寫入數據區域不重疊的數據拼接到被寫入數據的兩側,得到拼接后的數據及數據區域;
(4-3-4)從上述文件組成表中檢索出屬于該被寫文件的數據塊標識、且滿足與該數據塊標識相對應的數據塊的起始位置位于上述步驟(4-3-3)數據區域之內;
(4-3-5)將與上述數據塊索引表中檢索到的數據塊標識相對應的數據塊的引用次數減1,當引用次數不為0時,進行步驟(4-3-6),當引用次數成為0時,從數據塊索引表中刪除該數據塊標識及與該數據塊標識相對應的數據塊引用次數,并從存儲設備上刪除該數據塊內容,進行步驟(4-3-6);
(4-3-6)將上述步驟(4-3-3)拼接后的數據切分成一組新數據塊,并根據步驟(4-3-2)中的檢索結果對每個新數據塊做如下處理:若步驟(4-3-2)中的檢索結果為未使用任何壓縮算法,則進行步驟(4-3-7),若檢索結果為使用了壓縮算法,則使用該壓縮算法對每個新數據塊的內容進行解壓縮;
(4-3-7)從上述數據塊索引表中分別搜索與上述(4-3-6)的一組新數據塊或經過壓縮的數據塊相對應的每個數據塊標識:若檢索到該數據塊標識,則在數據塊索引表中將與該數據塊標識相對應的數據塊的引用次數加1,若檢索不到該數據塊標識,則在數據塊索引表中添加該數據塊標識,將與該數據塊標識相對應的數據塊的引用次數設置為1,并將與上述數據塊標識相對應的新數據塊或經過壓縮的數據塊存儲到計算機存儲設備上,在上述文件組成表中記錄被寫文件的文件標識、上述數據塊的起始位置、上述數據塊的大小以及上述數據塊的標識;
(4-3-8)根據向已有文件寫入數據的操作命令,更新上述文件元數據表中被寫文件的元數據;
(4-4)當文件系統的驅動模塊接收到來自計算機應用程序的從文件系統的已有文件中讀取數據的操作命令時,進行以下操作:
(4-4-1)根據操作命令,在計算機內存中分配與待讀取數據的大小相等的內存空間,并將該內存空間初始化為空白;
(4-4-2)根據操作命令中的被讀文件的文件標識、讀取位置和待讀取數據的大小,計算出被讀文件中的待讀取數據區域;
(4-4-3)根據上述操作命令中的被讀文件的文件標識,從上述文件元數據表中檢索該被讀文件使用的壓縮算法;
(4-4-4)根據操作命令中的被讀文件的文件標識和讀取位置,從文件組成表中檢索屬于該被讀文件的數據塊標識,數據塊標識滿足:與該數據塊標識相對應的數據塊是起始位置處于上述讀取位置之前的數據塊中的最后一個數據塊,若檢索到該數據塊標識,且該數據塊區域與步驟(4-4-2)的待讀取數據區域存在重疊,則讀取該數據塊內容,并根據步驟(4-4-3)的檢索結果對該讀取的數據塊內容做如下處理:若步驟(4-4-3)的檢索結果為被讀文件未使用任何壓縮算法,則將讀取的數據塊內容中與步驟(4-4-2)的待讀取數據區域的重疊部分寫入步驟(4-4-1)的內存空間的頭部,進行步驟(4-4-5),若步驟(4-4-3)的檢索結果為被讀文件使用了壓縮算法,則利用檢索到的壓縮算法對讀取的數據塊內容進行解壓縮,并將解壓縮后的數據塊內容中與步驟(4-4-2)的待讀取數據區域的重疊部分寫入步驟(4-4-1)的內存空間的頭部,進行步驟(4-4-5);若檢索不到該數據塊標識,或者與檢索到的數據標識相對應的數據塊區域不存在與步驟(4-4-2)的待讀取數據區域相重疊的部分,進行步驟(4-4-5);
(4-4-5)根據操作命令中的被讀文件的文件標識,從文件組成表中檢索屬于該被讀文件的數據塊標識,且滿足與該數據塊標識相對應的數據塊的起始位置處于步驟(4-4-2)的待讀取數據區域內,并讀取與檢索到的每個數據塊標識相對應的數據塊內容,根據步驟(4-4-3)的檢索結果對該讀取的數據塊內容做如下處理:若步驟(4-4-3)的檢索結果為被讀文件未使用任何壓縮算法,則將讀取的數據塊內容與步驟(4-4-2)的待讀取數據區域的重疊部分寫入步驟(4-4-1)的內存空間中,進行步驟(4-4-6),若步驟(4-4-3)的檢索結果為被讀文件使用了壓縮算法,則利用檢索到的壓縮算法對讀取的數據塊內容進行解壓縮,并將解壓縮后的數據塊內容與步驟(4-4-2)的待讀取數據區域的重疊部分寫入步驟(4-4-1)的內存空間的頭部,進行步驟(4-4-6);
(4-4-6)根據操作命令,更新上述文件元數據表中被讀文件的元數據;
(4-4-7)將上述步驟(4-4-1)的內存空間中的數據通過文件系統的驅動模塊返回給計算機應用程序;
(4-5)當文件系統的驅動模塊接收到來自計算機應用程序的刪除文件系統中已有文件的操作命令時,進行以下操作:
(4-5-1)從上述文件組成表中檢索出屬于被刪除文件的數據塊標識,在上述數據塊索引表中將與檢索到的每個數據塊標識相對應的數據塊的引用次數減1,若引用次數變為0,從數據塊索引表中刪除該數據塊標識及與該數據塊標識相對應的數據塊引用次數,并從計算機存儲設備上刪除該數據塊內容,進行步驟(4-5-2),若引用次數不為0,進行步驟(4-5-2);
(4-5-2)從上述文件組成表中刪除被刪除文件的所有記錄;
(4-5-3)從上述文件元數據表中刪除被刪除文件的元數據。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于清華大學,未經清華大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201010271788.1/1.html,轉載請聲明來源鉆瓜專利網。





