專利名稱:擴展元數(shù)據(jù)文件的存儲方法和存儲結構的制作方法
技術領域:
本發(fā)明涉及分布式文件領域,更具體地,涉及擴展元數(shù)據(jù)文件的存儲方法和存儲結構。
背景技術:
Parastor (本申請的發(fā)明人所開發(fā)的分布式文件系統(tǒng)的名稱)是一個分布式文件系統(tǒng),其中包含元數(shù)據(jù)服務器oPara、數(shù)據(jù)服務器oStor以及客戶端oApp等多個模塊。oPara中的元數(shù)據(jù)組織方式為基本元數(shù)據(jù)信息的存放單元為文件(我們稱之為mfile),每個mfile中存放8192個inode (索引節(jié)點)及其相關信息(包括inode位圖信息(標記對應inode是否有效))以及8192個目錄的基本塊及基本索引(目錄dentry項 采用擴展hash方式組織),oPara內存以private方式將磁盤文件映射入內存,磁盤文件的與入由日志系統(tǒng)完成。Parastor對文件的存儲方式是將文件分成多個固定長度的對象以提高文件的讀寫性能,由于對象長度固定,隨著文件的增長,對象數(shù)目越來越多,文件的layout(記錄對象所在的磁盤及對象狀態(tài))就會越來越大,當超出inode固定大小時,就會產生擴展元數(shù)據(jù)。Parastor原來的做法是將文件擴展元數(shù)據(jù)存儲在一個獨立的擴展文件中(layout超出inode固定大小時,產生擴展文件,inode中的layout廢棄,所有l(wèi)ayout都放入擴展文件),并且對layout的修改需要對整個inode記錄日志。此外,由于map針對文件實際長度進行,所以對layout的每次擴展都要重新map擴展文件。在圖I中示出了元數(shù)據(jù)的組織結構。然而,原來實現(xiàn)方法存在如下缺點I)如果一個文件系統(tǒng)內每個用戶文件都比較大,即每個文件的元數(shù)據(jù)都存在擴展文件,那么單個元數(shù)據(jù)目錄下的文件數(shù)目可能會超出ext3的限制(ext3為元數(shù)據(jù)的底層文件系統(tǒng));2)每次擴展layout都要重新map擴展文件,使map、unmap操作比較頻繁,增加了代碼錯誤處理的復雜度;3)每次記錄日志都有大量的冗余信息,給日志系統(tǒng)及網(wǎng)絡造成比較大的負擔。針對相關技術中的問題,目前尚未提出有效的解決方案。
發(fā)明內容
針對相關技術中的問題而做出本發(fā)明,其能夠解決目錄文件數(shù)目過多、代理錯誤處理較為復雜且網(wǎng)絡負擔較重的問題。根據(jù)本發(fā)明的一個方面,提供了一種擴展元數(shù)據(jù)文件的存儲方法,包括以下步驟當文件的布局超出索引節(jié)點的大小時,形成布局擴展文件;以及將布局擴展文件存儲在元數(shù)據(jù)文件中與索引節(jié)點相對應的記錄基本塊中。優(yōu)選地,將布局擴展文件存儲在記錄基本塊之后,索引節(jié)點中不再存儲布局。
優(yōu)選地,當布局擴展文件大于記錄基本塊而無法進行存儲時,生成單獨的擴展文件來存儲布局擴展文件。優(yōu)選地,生成單獨的擴展文件之后,記錄基本塊不再存儲布局擴展文件。優(yōu)選地,布局擴展文件以頁為單位進行映射。優(yōu)選地,將針對索引節(jié)點的修改進行分類,使得只針對修改的部分記錄日志。優(yōu)選地,對索引節(jié)點的修改包括屬性修改,使得只針對屬性部分記錄日志。優(yōu)選地,對索引節(jié)點的修改包括布局修改,使得只針對變化對象記錄日志。
根據(jù)本發(fā)明的另一方面,提供了一種擴展元數(shù)據(jù)文件的存儲結構,包括索引節(jié)點數(shù)據(jù)塊,存儲多個索引節(jié)點及其相關信息;以及記錄基本塊,存儲多個目錄信息或者多個布局擴展文件。優(yōu)選地,當布局擴展文件大于記錄基本塊中的對應記錄基本塊時,存儲結構還包括單獨的擴展文件來存儲無法記錄在記錄基本塊中的布局擴展文件。 通過本發(fā)明的技術方案,避免了底層文件系統(tǒng)ext3下單目錄文件數(shù)目過多的問題,簡化了映射擴展文件的處理,并且降低了日志及網(wǎng)絡壓力。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I是根據(jù)現(xiàn)有技術的元數(shù)據(jù)文件的結構的示意圖;圖2是根據(jù)本發(fā)明的擴展元數(shù)據(jù)文件的存儲方法的流程圖;圖3是根據(jù)本發(fā)明的擴展元數(shù)據(jù)文件的存儲結構的示意圖;以及圖4是根據(jù)本發(fā)明實施例的擴展元數(shù)據(jù)文件的存儲方法的布局擴展的流程圖。
具體實施例方式下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。圖2是根據(jù)本發(fā)明的擴展元數(shù)據(jù)文件的存儲方法的流程圖;參照圖1,根據(jù)本發(fā)明的擴展元數(shù)據(jù)文件的存儲方法包括以下步驟S202,當文件的布局超出索引節(jié)點的大小時,形成布局擴展文件;以及S204,將布局擴展文件存儲在元數(shù)據(jù)文件中與索引節(jié)點相對應的記錄基本塊中。優(yōu)選地,將布局擴展文件存儲在記錄基本塊之后,索引節(jié)點中不再存儲布局。優(yōu)選地,當布局擴展文件大于記錄基本塊而無法進行存儲時,生成單獨的擴展文件來存儲布局擴展文件。優(yōu)選地,生成單獨的擴展文件之后,記錄基本塊不再存儲布局擴展文件。優(yōu)選地,布局擴展文件以頁為單位進行映射。
優(yōu)選地,將針對索引節(jié)點的修改進行分類,使得只針對修改的部分記錄日志。優(yōu)選地,對索引節(jié)點的修改包括屬性修改,使得只針對屬性部分記錄日志。優(yōu)選地,對索引節(jié)點的修改包括布局修改,使得只針對變化對象記錄日志。圖3是根據(jù)本發(fā)明的擴展元數(shù)據(jù)文件的存儲結構的示意圖。參見圖3,根據(jù)本發(fā)明的擴展元數(shù)據(jù)文件的存儲結構包括索引節(jié)點數(shù)據(jù)塊,存儲多個索引節(jié)點及其相關信息;以及記錄基本塊,存儲多個目錄信息或者多個布局擴展文件。優(yōu)選地,當布局擴展文件大于記錄基本塊中的對應記錄基本塊時,存儲結構還包括單獨的擴展文件來存儲無法記錄在記錄基本塊中的布局擴展文件。具體地,針對現(xiàn)有技術的缺點,申請人提出了新的擴展元數(shù)據(jù)文件的存儲方法及日志記錄方式具體采取以下幾種措施 I)當文件layout超出inode固定大小時,首先將其放入mfile記錄基本塊的對應位置(該位置對每個inode都有預留,但目前只有目錄使用,我們稱之為mbody),如果layout超出mbody再將其全部記錄入單獨擴展文件;2)當生成單獨的擴展文件時,擴展文件映射以頁為單位,當layout進行擴展時,只有當前頁不能容納本次擴展部分時才需要重新映射擴展文件;以及3)將對inode的修改進行分類,分為屬性修改及l(fā)ayout修改,對屬性的修改只對屬性部分記錄日志,對layout修改則只對變化對象記錄日志。注意,為了方便操作,layout由inode — mbody以及由mbody —擴展文件都是全部轉移,使用時由inode內存指針指向,不用加以區(qū)分。應該強調的是,本發(fā)明解決與擴展元數(shù)據(jù)文件相關的問題,因此圖I和圖3中涉及到的dir數(shù)據(jù)、exthash基本布局等組織結構并不屬于本發(fā)明的范疇并且它們屬于本領域的公知常識,因此在本文中省略它們的詳細描述。圖4是根據(jù)本發(fā)明實施例的擴展元數(shù)據(jù)文件的存儲方法的布局擴展的流程圖。參見圖4,首先判定當前位置是否能夠存儲擴展后的layout。如果可以,則將擴展后的layout記錄在當前位置中。如果當前位置不能夠存儲擴展后的layout,則將擴展后的layout存儲到mbody中并進行相應處理。如果mbody也不能夠存儲擴展后的layout,則創(chuàng)建單獨的擴展文件并將擴展后的layout存儲到所創(chuàng)建的擴展文件中。創(chuàng)建單獨的擴展文件之后,將layout從mbody拷貝到擴展文件中,并且進行相應的映射操作和記錄日志操作。通過本發(fā)明的技術方案,與現(xiàn)有技術相比,實現(xiàn)了以下優(yōu)點I)按照對象固定大小64M,對象兩副本計算,mbody (4塊)可以存放2K個對象,即用戶文件超過128G時才有可能用到擴展文件,這可以滿足大部分應用的要求,很好的避免了 oPara底層文件系統(tǒng)ext3下單目錄文件數(shù)目過多的問題;2)擴展文件映射以頁為單位,不用每次擴展layout都重新映射擴展文件,簡化了處理;以及3)日志記錄以屬性和對象為單位,沒有了冗余信息,降低了日志及網(wǎng)絡壓力。綜上所述,借助于本發(fā)明的上述技術方案,將inode擴展數(shù)據(jù)優(yōu)先考慮放在已存在的文件中來節(jié)省生成的ext3文件數(shù)目;擴展文件映射不以文件實際長度為單位,而采用以頁為最小單元的方式,簡化了處理過程;以及日志記錄以屬性和對象為單位,在不增加處理復雜度的情況下消除冗余信息記錄。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1.一種擴展元數(shù)據(jù)文件的存儲方法,其特征在于,所述方法包括以下步驟 當文件的布局超出索引節(jié)點的大小時,形成布局擴展文件;以及 將所述布局擴展文件存儲在元數(shù)據(jù)文件中與所述索引節(jié)點相對應的記錄基本塊中。
2.根據(jù)權利要求I所述的方法,其特征在于,將所述布局擴展文件存儲在所述記錄基本塊之后,所述索引節(jié)點中不再存儲所述布局。
3.根據(jù)權利要求I所述的方法,其特征在于,當所述布局擴展文件大于所述記錄基本塊而無法進行存儲時,生成單獨的擴展文件來存儲所述布局擴展文件。
4.根據(jù)權利要求3所述的方法,其特征在于,生成單獨的擴展文件之后,所述記錄基本塊不再存儲所述布局擴展文件。
5.根據(jù)權利要求3所述的方法,其特征在于,所述布局擴展文件以頁為單位進行映射。
6.根據(jù)權利要求I至5中任一項所述的方法,其特征在于,將針對所述索引節(jié)點的修改進行分類,使得只針對修改的部分記錄日志。
7.根據(jù)權利要求6所述的方法,其特征在于,對所述索引節(jié)點的修改包括屬性修改,使得只針對屬性部分記錄日志。
8.根據(jù)權利要求6所述的方法,其特征在于,對所述索引節(jié)點的修改包括布局修改,使得只針對變化對象記錄日志。
9.一種擴展元數(shù)據(jù)文件的存儲結構,其特征在于,所述存儲結構包括 索引節(jié)點數(shù)據(jù)塊,存儲多個索引節(jié)點及其相關信息;以及 記錄基本塊,存儲多個目錄信息或者多個布局擴展文件。
10.根據(jù)權利要求9所述的存儲結構,其特征在于,當所述多個布局擴展文件中的至少一個大于所述記錄基本塊中的對應記錄基本塊時,所述存儲結構還包括單獨的擴展文件來存儲無法記錄在所述記錄基本塊中的布局擴展文件。
全文摘要
本發(fā)明公開了擴展元數(shù)據(jù)文件的存儲方法和存儲結構,其中,該方法包括當文件的布局超出索引節(jié)點的大小時,形成布局擴展文件;以及將布局擴展文件存儲在元數(shù)據(jù)文件中與索引節(jié)點相對應的記錄基本塊中。通過這種技術方案,避免了底層文件系統(tǒng)ext3下單目錄文件數(shù)目過多的問題。
文檔編號G06F17/30GK102831240SQ201210326639
公開日2012年12月19日 申請日期2012年9月5日 優(yōu)先權日2012年9月5日
發(fā)明者馬照云, 楊浩, 馬振杰, 苗艷超, 劉新春, 邵宗有 申請人:曙光信息產業(yè)(北京)有限公司