欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種文件擴(kuò)展屬性的存儲方法

文檔序號:8282354閱讀:200來源:國知局
一種文件擴(kuò)展屬性的存儲方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種文件屬性存儲方法,具體涉及一種文件擴(kuò)展屬性的存儲方法。
【背景技術(shù)】
[0002]在分布式系統(tǒng)中,inode大小是固定的,由于inode是文件系統(tǒng)的核心結(jié)構(gòu)之一,每個用戶文件及目錄在文件系統(tǒng)中都有一個inode記錄其元數(shù)據(jù)信息,出于空間、傳統(tǒng)inode信息及大部分應(yīng)用需要,inode中不可能為屬性保留太多字段。當(dāng)某個用戶文件及目錄有基本屬性之外的其他屬性(如哪個用戶、組具有哪些權(quán)限等),就需要用到擴(kuò)展屬性。
[0003]擴(kuò)展屬性最容易想到的實(shí)現(xiàn)方法是如果一個用戶文件或者目錄有擴(kuò)展屬性,則單獨(dú)建立一個后端文件用于存儲其擴(kuò)展屬性。
[0004]為每個用戶文件或目錄創(chuàng)建一個后端文件存儲擴(kuò)展屬性存在以下缺點(diǎn):首先,目前擴(kuò)展屬性用得最多的是權(quán)限控制,而權(quán)限控制大多數(shù)具有繼承性,即一個目錄下的所有子文件及目錄擴(kuò)展屬性與該目錄相同,這樣相同的數(shù)據(jù)就會被存放多次,造成空間浪費(fèi);由于后端文件系統(tǒng)每個目錄下inode數(shù)目有一定限制,并且目錄下inode越多,檢索速度就會越慢,所以這種實(shí)現(xiàn)方法對后端文件系統(tǒng)也造成一定壓力。

【發(fā)明內(nèi)容】

[0005]為了克服上述現(xiàn)有技術(shù)的不足,本發(fā)明提供一種文件屬性的存儲方法,該方法用一批獨(dú)立的文件存放擴(kuò)展屬性,每個文件含有I個位圖存放1024個比特位和1024個擴(kuò)展屬性塊,一個擴(kuò)展屬性塊有多個inode指向,節(jié)省了底層文件系統(tǒng)的文件個數(shù),降低了底層壓力。
[0006]為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明采取如下技術(shù)方案:
[0007]一種文件擴(kuò)展屬性的存儲方法,所述方法的步驟如下:
[0008](I)創(chuàng)建一批存放擴(kuò)展屬性的獨(dú)立文件xfile ;
[0009](2)將文件的擴(kuò)展屬性存放到xfile文件中的擴(kuò)展屬性塊中。
[0010]本發(fā)明提供的優(yōu)選技術(shù)方案中,每個所述xfile文件包含位圖和擴(kuò)展屬性塊,每個擴(kuò)展屬性塊長度設(shè)為4k。
[0011]本發(fā)明提供的第二優(yōu)選技術(shù)方案中,所述位圖中包含1024個比特位,每位對應(yīng)一個擴(kuò)展屬性塊,比特位為I表示對應(yīng)的擴(kuò)展屬性塊已被分配使用,為O表示對應(yīng)的擴(kuò)展屬性塊空閑。
[0012]本發(fā)明提供的第三優(yōu)選技術(shù)方案中,所述擴(kuò)展屬性塊有一個引用計(jì)數(shù)字段,用于記錄inode指向該擴(kuò)展屬性塊的的個數(shù)。
[0013]本發(fā)明提供的第四優(yōu)選技術(shù)方案中,所述inode為文件系統(tǒng)中保存元數(shù)據(jù)信息的一種磁盤結(jié)構(gòu),inode中包含有文件對應(yīng)的擴(kuò)展屬性塊號blkid。
[0014]本發(fā)明提供的第五優(yōu)選技術(shù)方案中,所述步驟(2)的步驟如下:
[0015]A、將每個xfile文件的位圖鏈表頭放入控制結(jié)構(gòu)的xfile鏈表中;
[0016]B、將擴(kuò)展屬性塊的塊id和塊內(nèi)容的hash表頭分別放入控制結(jié)構(gòu)的blkid_hhead和 content_hhead 中;
[0017]C、利用要添加的擴(kuò)展屬性構(gòu)造臨時塊,以塊內(nèi)容的hash值為索引在content_hhead中查找擴(kuò)展屬性塊;
[0018]D、若沒有查找到則從xfile鏈表中查找比特位為O的位圖;
[0019]D-1、若沒有查到則創(chuàng)建新的xfile文件,xfile文件的位圖初值為0,將xfile文件的位圖鏈表頭放入控制結(jié)構(gòu)的xfile鏈表中;
[0020]D-2、若查到則置該比特位為1,根據(jù)該比特位所屬的xfile文件的id和比特位的偏移量計(jì)算blkid,分配新塊,賦值blkid及塊內(nèi)容,并將新塊的塊id和塊內(nèi)容的hash表頭分別放入控制結(jié)構(gòu)的blkid_hhead和content_hhead中;
[0021]E、將該塊的引用計(jì)數(shù)加1,設(shè)置inode的blkid為該塊的id,若inode原有擴(kuò)展屬性則將原來塊對應(yīng)的引用計(jì)數(shù)減I。
[0022]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:
[0023]該方法將所有擴(kuò)展屬性相同的文件及目錄指向相同的擴(kuò)展屬性塊,在擴(kuò)展屬性的應(yīng)用場景中大大節(jié)省了存儲空間,一個底層文件存放多個擴(kuò)展屬性塊,一個擴(kuò)展屬性塊由多個inode指向,大大節(jié)省了底層文件系統(tǒng)的文件個數(shù),降低了底層壓力。
【附圖說明】
[0024]圖1是擴(kuò)展屬性磁盤結(jié)構(gòu)
[0025]圖2是擴(kuò)展屬性內(nèi)存結(jié)構(gòu)
[0026]圖3是添加擴(kuò)展屬性的流程圖
【具體實(shí)施方式】
[0027]下面結(jié)合附圖對本發(fā)明作進(jìn)一步詳細(xì)說明。
[0028]如圖1所示,用一批獨(dú)立的文件xfile存放擴(kuò)展屬性,每個xfile文件前面存放位圖,位圖中包含1024個比特位,位圖之后存放擴(kuò)展屬性塊,每塊長度可設(shè)為4k,每個比特位對應(yīng)一個擴(kuò)展屬性塊;比特位為I表示該塊已被分配使用,為O表示該塊空閑。整個分布式系統(tǒng)擴(kuò)展屬性塊統(tǒng)一編號,每個擴(kuò)展屬性塊有一個引用計(jì)數(shù)字段,用于記錄有多少inode指向該塊,當(dāng)引用計(jì)數(shù)為O時表示該塊沒有inode使用,可以回收。
[0029]如圖2所示,將每個xfile文件的位圖鏈表頭放入控制結(jié)構(gòu)的xfile鏈表中,方便進(jìn)行塊分配和回收;將擴(kuò)展屬性塊的塊id和塊內(nèi)容的hash表頭分別放入控制結(jié)構(gòu)的blkid_hhead和content_hhead中,以滿足多種查詢需要。
[0030]如圖3所示,擴(kuò)展屬性的存儲方法,具體步驟如下:
[0031]A、將每個xfile文件的位圖鏈表頭放入控制結(jié)構(gòu)的xfile鏈表中;
[0032]B、將擴(kuò)展屬性塊的塊id和塊內(nèi)容的hash表頭分別放入控制結(jié)構(gòu)的blkid_hhead和 content_hhead 中;
[0033]C、利用要添加的擴(kuò)展屬性構(gòu)造臨時塊,以塊內(nèi)容的hash值為索引在content_hhead中查找擴(kuò)展屬性塊;
[0034]D、若沒有查找到則從xfile鏈表中查找比特位為O的位圖;
[0035]D-1、若沒有查到則創(chuàng)建新的xfile文件,xfile文件的位圖初值為0,將xfile文件的位圖鏈表頭放入控制結(jié)構(gòu)的xfile鏈表中;
[0036]D-2、若查到則置該比特位為1,根據(jù)該比特位所屬的xfile文件的id和比特位的偏移量計(jì)算blkid,分配新塊,賦值blkid及塊內(nèi)容,并將新塊的塊id和塊內(nèi)容的hash表頭分別放入控制結(jié)構(gòu)的blkid_hhead和content_hhead中;
[0037]E、將該塊的引用計(jì)數(shù)加1,設(shè)置inode的blkid為該塊的id,若inode原有擴(kuò)展屬性則將原來塊對應(yīng)的引用計(jì)數(shù)減I。
[0038]擴(kuò)展屬性的回收方法,具體步驟如下:
[0039](I)將所有擴(kuò)展屬性塊讀入內(nèi)存;
[0040](2)以hash表為入口掃描所有內(nèi)存塊;
[0041](3)將內(nèi)存塊引用計(jì)數(shù)為0(沒有線程使用該塊)且磁盤引用計(jì)數(shù)為O (沒有inode指向該塊)的塊對應(yīng)的位圖清0,并釋放內(nèi)存塊;
[0042](4)若磁盤引用計(jì)數(shù)不為O且內(nèi)存塊引用計(jì)數(shù)為O的內(nèi)存塊達(dá)到1024個,則回收該內(nèi)存塊。
[0043]最后應(yīng)當(dāng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非對其限制,盡管參照上述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:依然可以對本發(fā)明的【具體實(shí)施方式】進(jìn)行修改或者等同替換,而未脫離本發(fā)明精神和范圍的任何修改或者等同替換,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
【主權(quán)項(xiàng)】
1.一種文件擴(kuò)展屬性的存儲方法,其特征在于,所述方法包括如下步驟: (1)創(chuàng)建存放擴(kuò)展屬性的獨(dú)立文件Xfile; (2)將文件的擴(kuò)展屬性存放到xfile文件中的擴(kuò)展屬性塊中。
2.根據(jù)權(quán)利要求1所述文件擴(kuò)展屬性的存儲方法,其特征在于,每個所述xfile文件包含位圖和擴(kuò)展屬性塊,每個擴(kuò)展屬性塊長度設(shè)為4k。
3.根據(jù)權(quán)利要求2所述文件擴(kuò)展屬性的存儲方法,其特征在于,所述位圖中包含1024個比特位,每位對應(yīng)一個擴(kuò)展屬性塊,比特位為I表示對應(yīng)的擴(kuò)展屬性塊已被分配使用,為O表不對應(yīng)的擴(kuò)展屬性塊空閑。
4.根據(jù)權(quán)利要求1所述文件擴(kuò)展屬性的存儲方法,其特征在于,所述擴(kuò)展屬性塊有一個引用計(jì)數(shù)字段,用于記錄inode指向該擴(kuò)展屬性塊的的個數(shù)。
5.根據(jù)權(quán)利要求4所述文件擴(kuò)展屬性的存儲方法,其特征在于,所述inode為文件系統(tǒng)中保存元數(shù)據(jù)信息的一種磁盤結(jié)構(gòu),inode中包含有文件對應(yīng)的擴(kuò)展屬性塊號blkid。
6.根據(jù)權(quán)利要求5所述文件擴(kuò)展屬性的存儲方法,其特征在于,所述步驟(2)的步驟如下: A、將每個xfile文件的位圖鏈表頭放入控制結(jié)構(gòu)的xfile鏈表中; B、將擴(kuò)展屬性塊的塊id和塊內(nèi)容的hash表頭分別放入控制結(jié)構(gòu)的blkid_hhead和content_hhead 中; C、利用要添加的擴(kuò)展屬性構(gòu)造臨時塊,以塊內(nèi)容的hash值為索引在content_hhead中查找擴(kuò)展屬性塊; D、若沒有查找到則從xfile鏈表中查找比特位為O的位圖; D-1、若沒有查到則創(chuàng)建新的xfile文件,xfile文件的位圖初值為0,將xfile文件的位圖鏈表頭放入控制結(jié)構(gòu)的xfile鏈表中; D-2、若查到則置該比特位為1,根據(jù)該比特位所屬的xfile文件的id和比特位的偏移量計(jì)算blkid,分配新塊,賦值blkid及塊內(nèi)容,并將新塊的塊id和塊內(nèi)容的hash表頭分別放入控制結(jié)構(gòu)的blkid_hhead和content_hhead中; E、將該塊的引用計(jì)數(shù)加1,設(shè)置inode的blkid為該塊的id,若inode原有擴(kuò)展屬性則將原來塊對應(yīng)的引用計(jì)數(shù)減I。
【專利摘要】本發(fā)明提供一種文件擴(kuò)展屬性的存儲方法,該方法首先創(chuàng)建一批存放擴(kuò)展屬性的獨(dú)立文件xfile;然后將文件的擴(kuò)展屬性存放到xfile文件中的擴(kuò)展屬性塊中。使用該方法將所有擴(kuò)展屬性相同的文件及目錄指向相同的擴(kuò)展屬性塊,在擴(kuò)展屬性的應(yīng)用場景中大大節(jié)省了存儲空間,并且一個底層文件存放多個擴(kuò)展屬性塊,一個擴(kuò)展屬性塊由多個inode指向,大大節(jié)省了底層文件系統(tǒng)的文件個數(shù),降低了底層壓力。
【IPC分類】G06F17-30
【公開號】CN104598533
【申請?zhí)枴緾N201410837840
【發(fā)明人】馬照云, 楊浩, 張攀勇
【申請人】曙光云計(jì)算技術(shù)有限公司
【公開日】2015年5月6日
【申請日】2014年12月29日
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
双牌县| 英超| 益阳市| 宝兴县| 绥芬河市| 尼玛县| 湘乡市| 吉安县| 临海市| 岳阳县| 班玛县| 合江县| 九龙城区| 常州市| 繁峙县| 吐鲁番市| 蓝田县| 凌源市| 惠州市| 彩票| 崇明县| 武鸣县| 丹东市| 阿拉尔市| 大名县| 来凤县| 昌黎县| 庆阳市| 黔西| 济阳县| 延长县| 富平县| 肇州县| 宿州市| 旌德县| 滨海县| 彰武县| 法库县| 唐海县| 浏阳市| 白沙|