專利名稱:一種基于對象存儲設(shè)備的對象文件組織方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)分布式存儲技術(shù)領(lǐng)域,尤其是一種基于對象存儲設(shè)備的對 象文件組織方法。
技術(shù)背景對象是對象存儲系統(tǒng)中的基本單位,一個(gè)對象是文件的數(shù)據(jù)和一組屬性的組 合。對象的屬性可以包括文件的RAID參數(shù)、.服務(wù)質(zhì)量、訪問信息和數(shù)據(jù)分布信息等。對象存儲設(shè)備對外提供對象接口,以對象作為基本存取單元。對象存儲設(shè)備 具有一定的智能,有自己的CPU、內(nèi)存、網(wǎng)絡(luò)和磁盤系統(tǒng),實(shí)現(xiàn)數(shù)據(jù)存儲、智能 分布和對象元數(shù)據(jù)管理的功能。在對象存儲設(shè)備中,所有的對象都有唯一的標(biāo)識 符,通過對象標(biāo)識符訪問該文件對象。對象存儲設(shè)備管理文件對象數(shù)據(jù),數(shù)據(jù)放 置在標(biāo)準(zhǔn)磁盤設(shè)備上,但不提供塊接口的形式,客戶端要通過對象標(biāo)識符和偏移 量來進(jìn)行數(shù)據(jù)讀寫操作。對象存儲設(shè)備可以通過自身的CPU和內(nèi)存資源來對數(shù)據(jù)分布進(jìn)行優(yōu)化,通過設(shè)置緩存的支持?jǐn)?shù)據(jù)的預(yù)取和緩沖讀取,減少物理磁盤讀取次數(shù)。在傳統(tǒng)的文件系統(tǒng)中,都是使用一個(gè)間接的數(shù)據(jù)塊映射表來記錄每個(gè)文件的 數(shù)據(jù)塊的分布情況。對一個(gè)超大文件的存儲,需要占用很多的數(shù)據(jù)塊,這樣的數(shù) 據(jù)塊映射表很大,比較難以維護(hù)。數(shù)據(jù)塊的分配是由塊分配器來控制的, 一般的 塊分配器一次只能分配一個(gè)數(shù)據(jù)塊,這就意味著向磁盤系統(tǒng)寫入數(shù)據(jù)時(shí),就需要 調(diào)用很多次塊分配器。由于塊分配器在在分配空間時(shí)無法獲取總共需要分配的塊 數(shù),因此無法對所分配的空間在位置上進(jìn)行優(yōu)化。Lustre是一個(gè)由Cluster File System公司開發(fā)的開源文件系統(tǒng),系統(tǒng)由客 戶端、集群管理系統(tǒng)和對象存儲系統(tǒng)(Object Store Target)組成。CMU的NASD 釆用了智能磁盤驅(qū)動(dòng)器設(shè)備,這種設(shè)備提供給用戶的不是磁盤塊接口,而是磁盤 對象接口。 Lustre和CMU的NASD這兩個(gè)系統(tǒng)中都釆用了傳統(tǒng)的文件系統(tǒng),Lustre 使用的是Linux中的Ext3, NASD使用的是經(jīng)過修改的IJFS,由于傳統(tǒng)的文件系統(tǒng)沒 有充分利用對象的大小不同的特點(diǎn),在空間分配上采用較小分塊的分配方法,數(shù) 據(jù)塊的分布比較零散,分配的速率比較低。在對象存取方法上,缺乏高效的緩存機(jī)制增加了磁盤的讀寫次數(shù),無法充分發(fā)揮對象存儲系統(tǒng)的優(yōu)勢。 發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題是采用連續(xù)分配多個(gè)數(shù)據(jù)塊的方法,減少査找和 分配空閑塊的時(shí)間,彌補(bǔ)當(dāng)前分布式文件系統(tǒng)中對象文件系統(tǒng)磁盤空間分配局限 和不足的基于對象存儲設(shè)備的對象文件組織方法。本發(fā)明解決上述問題,所采用的技術(shù)方案是該方法的具體步驟為,(1) 在磁盤中建立對象文件系統(tǒng)的布局,將對象描述、對象位圖、數(shù)據(jù)位 圖、對象節(jié)點(diǎn)表信息加載在內(nèi)存中;(2) 空間分配器在分配空間前檢測對象文件的大?。?3) 如果已知對象文件的大小,采用預(yù)分配的方法,在磁盤上為該對象文 件分配空間;(4) 如果不知道對象文件的大小,先將對象文件的部分?jǐn)?shù)據(jù)寫入緩沖區(qū);(5) 檢測緩沖區(qū)是否被填滿或者客戶端是否有要求釋放緩存數(shù)據(jù),為緩沖 區(qū)的數(shù)據(jù)在磁盤上分配空間,將數(shù)據(jù)寫入磁盤;當(dāng)緩沖區(qū)的數(shù)據(jù)要遠(yuǎn)遠(yuǎn)大于磁盤 的邏輯數(shù)據(jù)分塊大小時(shí),空間分配器為其劃分存儲的區(qū)間。本發(fā)明所述預(yù)分配的方法過程為,(a) 按照對象文件的大小,決定此對象文件所需空間的分組位置;(b) 在分組內(nèi)査找最合適的區(qū)間,如果找到則使用該區(qū)間保存數(shù)據(jù);(C)如果未找到合適的區(qū)間,則先分配對象文件大小l/2的空間,然后跳 轉(zhuǎn)到步驟(a);(d) 鎖定找到的區(qū)間,準(zhǔn)備將該區(qū)間分配給對象文件;(e) 判斷該區(qū)間的大小是否等于對象文件的大小,如果等于對象文件的大 小則直接進(jìn)行分配;(f) 如果該區(qū)間的大于對象文件的大小,則分割該區(qū)間,將區(qū)間的前面一 段分配給對象文件,后面一段則根據(jù)大小放入相應(yīng)的區(qū)間分組。本發(fā)明所述步驟(4)中,采用內(nèi)存緩沖區(qū)緩存對象文件的部分?jǐn)?shù)據(jù),其中 查找對象節(jié)點(diǎn)信息的過程為,(a) 根據(jù)對象ID在緩存中查找對象節(jié)點(diǎn)信息;(b) 如果在緩存中査詢命中,返回該對象節(jié)點(diǎn)信息;(c) 如果在緩存中未査詢到,檢査請求等待列表,若其中有該對象ID的節(jié) 點(diǎn)信息請求,則添加到等待隊(duì)列;(d) 在磁盤上讀取該對象ID對應(yīng)的節(jié)點(diǎn)信息,將結(jié)果返回給所有的請求等待者;(e) 將查詢到的節(jié)點(diǎn)信息放入緩存,釆用最近最小使用策略進(jìn)行緩存替換。 本發(fā)明所述步驟(5)中磁盤的邏輯數(shù)據(jù)分塊大小為1Kbyte或者4Kbyte。 本發(fā)明所述磁盤的存儲分區(qū)從邏輯上劃分為若干數(shù)據(jù)塊,每個(gè)塊1024 byte或者4096 byte,數(shù)據(jù)塊的大小在創(chuàng)建系統(tǒng)時(shí)由系統(tǒng)管理員設(shè)置,或交給文件系 統(tǒng)的創(chuàng)建程序去決定。本發(fā)明所述的區(qū)間為磁盤上連續(xù)的若干數(shù)據(jù)塊,用起始位置和長度來表示一 個(gè)區(qū)間。本發(fā)明與現(xiàn)有技術(shù)相比,具有以下有益效果該方法所采用的對象文件系統(tǒng)繼承了傳統(tǒng)通用文件系統(tǒng)的優(yōu)良特性,包括穩(wěn)定性、高效性、高可靠性,通過區(qū) 間管理磁盤空間的機(jī)制保證了大對象的對寫效率,通過對象元數(shù)據(jù)的日志機(jī)制保證了數(shù)據(jù)的一致性和高容錯(cuò)特性;空間按照區(qū)間分配,對象的存儲具有空間連續(xù) 性,具有高效的空間管理效率,且緩沖區(qū)機(jī)制能保證了對象訪問的高性能。
圖1為本發(fā)明的分布式文件系統(tǒng)環(huán)境圖。圖2為對象文件系統(tǒng)與傳統(tǒng)文件系統(tǒng)的比較圖。圖3為對象文件系統(tǒng)磁盤布局示意圖。圖4為空間分配器的總體流程圖。圖5為磁盤空間預(yù)分配方法的流程圖。
具體實(shí)施方式
在對象文件系統(tǒng)中,文件數(shù)據(jù)按照對象的方式來組織和管理,每個(gè)對象具有 一個(gè)全局的對象ID,對象還包括大小、創(chuàng)建修改時(shí)間、訪問特征和關(guān)聯(lián)關(guān)系等屬性。通用的Ext3文件系統(tǒng)對大文件的支持不夠理想,文件數(shù)據(jù)塊可能會分布在 不連續(xù)的磁盤空間上,并需要維護(hù)很長的文件塊列表,本發(fā)明在Ext3文件系統(tǒng) 的基礎(chǔ)上進(jìn)行了改進(jìn),對于小對象(4 512Kbyte)采用Ext3文件系統(tǒng)原有的方式進(jìn)行存放,對于大對象(512Kbyte以上)按照區(qū)間劃分放入磁盤的若干個(gè)連續(xù)空 間里,這樣減少了文件塊列表的長度和磁頭尋道和旋轉(zhuǎn)的延時(shí),保證了對大對象讀寫的高效率。本發(fā)明將磁盤上連續(xù)的若干數(shù)據(jù)塊稱為區(qū)間,使用起始位置和長度的方法表 示一個(gè)區(qū)間。磁盤空間的分配不再使用原有的固定大小的塊分配方法,而使用區(qū) 間來分配空間。這樣可以取代原有很長的數(shù)據(jù)塊列表,使用少量的區(qū)間號就能表 示整個(gè)文件所分配的空間,并且空間在分布上是相對連續(xù)的,使得磁盤空間管理 更加高效。該方法的具體步驟為,(1) 在磁盤中建立對象文件系統(tǒng)的布局,將對象描述、對象位圖、數(shù)據(jù)位 圖、對象節(jié)點(diǎn)表信息加載在內(nèi)存中;(2) 空間分配器在分配空間前檢測對象文件的大??;(3) 如果己知對象文件的大小,采用預(yù)分配的方法,在磁盤上為該對象文 件分配空間;(4) 如果不知道對象文件的大小,先將對象文件的部分?jǐn)?shù)據(jù)寫入緩沖區(qū);(5) 檢測緩沖區(qū)是否被填滿或者客戶端是否有要求釋放緩存數(shù)據(jù),為緩沖 區(qū)的數(shù)據(jù)在磁盤上分配空間,將數(shù)據(jù)寫入磁盤;當(dāng)緩沖區(qū)的數(shù)據(jù)要遠(yuǎn)遠(yuǎn)大于磁盤 的邏輯數(shù)據(jù)分塊大小時(shí),空間分配器為其劃分存儲的區(qū)間。其中預(yù)分配的方法過程為-(a) 按照對象文件的大小,決定此對象文件所需空間的分組位置;(b) 在分組內(nèi)查找最合適的區(qū)間,如果找到則使用該區(qū)間保存數(shù)據(jù);(c) 如果未找到合適的區(qū)間,則先分配對象文件大小1/2的空間,然后跳 轉(zhuǎn)到步驟(a);(d) 鎖定找到的區(qū)間,準(zhǔn)備將該區(qū)間分配給對象文件;(e) 判斷該區(qū)間的大小是否等于對象文件的大小,如果等于對象文件的大 小則直接進(jìn)行分配;(f) 如果該區(qū)間的大于對象文件的大小,則分割該區(qū)間,將區(qū)間的前面一 段分配給對象文件,后面一段則根據(jù)大小放入相應(yīng)的區(qū)間分組。在本發(fā)明中,預(yù)分配方法在文件系統(tǒng)層面提供了相應(yīng)的API接口, P2P軟件、多源下載軟件等可以利用此接口預(yù)先創(chuàng)建一個(gè)與要下載文件相同大小的空文件, 預(yù)先分配好足夠的存儲空間,保證以后的下載不會因?yàn)榇疟P空間不足而失敗,并 且這些空間在磁盤上是連續(xù)的,不會產(chǎn)生過多的磁盤空間碎片。與傳統(tǒng)文件系統(tǒng) 的盡快分配策略不同的是,本發(fā)明在對象大小未知的情況下,采用延遲分配的方 法,將文件對象的部分?jǐn)?shù)據(jù)將先寫入到緩沖區(qū),當(dāng)緩沖區(qū)填滿或者客戶端要求釋 放緩存數(shù)據(jù)時(shí),才將緩沖區(qū)的數(shù)據(jù)寫入磁盤。緩沖區(qū)的數(shù)據(jù)要遠(yuǎn)遠(yuǎn)大于磁盤的邏 輯數(shù)據(jù)分塊大小(lKbyte或者4Kbyte),空間分配器將為其劃分存儲的區(qū)間。這 樣的策略優(yōu)化了整個(gè)文件系統(tǒng)的數(shù)據(jù)塊分配,顯著提升性能。上述步驟(4)中,采用內(nèi)存緩沖區(qū)緩存對象文件的部分?jǐn)?shù)據(jù),其中査找對 象節(jié)點(diǎn)信息的過程為(a) 根據(jù)對象ID在緩存中查找對象節(jié)點(diǎn)信息;(b) 如果在緩存中查詢命中,返回該對象節(jié)點(diǎn)信息;(c) 如果在緩存中未査詢到,檢査請求等待列表,若其中有該對象ID的節(jié) 點(diǎn)信息請求,則添加到等待隊(duì)列;(d) 在磁盤上讀取該對象ID對應(yīng)的節(jié)點(diǎn)信息,將結(jié)果返回給所有的請求等待者;(e) 將査詢到的節(jié)點(diǎn)信息放入緩存,采用最近最小使用策略進(jìn)行緩存替換。 參見圖l,整個(gè)系統(tǒng)由元數(shù)據(jù)管理服務(wù)器集群、對象存儲服務(wù)器集群和文件對象訪問客戶端組成。元數(shù)據(jù)服務(wù)器管理對象的元數(shù)據(jù)信息,維護(hù)文件到對象的 映射關(guān)系,負(fù)責(zé)管理用戶權(quán)限和身份認(rèn)證。對象存儲服務(wù)器通過基于對象的訪問 接口向客戶端提供數(shù)據(jù)讀寫操作,管理和組織磁盤上的數(shù)據(jù),對磁盤空間進(jìn)行分 配,本發(fā)明的對象文件組織方法是對象存儲服務(wù)器的關(guān)鍵組成部分。參見圖2,對象文件存儲系統(tǒng)與傳統(tǒng)文件系統(tǒng)相比,其改進(jìn)之處是對象文 件存儲系統(tǒng)將存儲組件從內(nèi)核空間中轉(zhuǎn)移到存儲子系統(tǒng)的底層,提供磁盤空間和 容量的管理、數(shù)據(jù)塊的存儲分配和數(shù)據(jù)緩存功能。參見圖3,對于本對象文件系統(tǒng)來說,磁盤存儲分區(qū)首先從邏輯上劃分為一 個(gè)個(gè)數(shù)據(jù)塊,每個(gè)塊1024 byte或者4096 byte,這個(gè)大小在創(chuàng)建系統(tǒng)時(shí)由系統(tǒng) 管理員設(shè)置,也可以交給文件系統(tǒng)的創(chuàng)建程序去決定。文件系統(tǒng)的創(chuàng)建程序根據(jù) 磁盤分區(qū)的大小,選擇一個(gè)合適的值。這些數(shù)據(jù)塊又被劃分到若干個(gè)存儲空間里,每個(gè)存儲空間里有多少個(gè)塊是在創(chuàng)建文件系統(tǒng)時(shí)劃分好的。
在本對象文件系統(tǒng)中,磁盤的起始部位定義了文件系統(tǒng)的基本參數(shù),劃分所 需的空間用來完成文件系統(tǒng)的基本功能。為了保持與普通文件系統(tǒng)的兼容性,從 磁盤分區(qū)的開始(即第1個(gè)字節(jié))到1024個(gè)字節(jié)的這些空間用來保存磁盤頭信息, 磁盤頭描述了整個(gè)對象文件系統(tǒng)的信息,這部分空間被稱為超級塊,包括文件系 統(tǒng)簽名標(biāo)志、磁盤號、空間總量、已使用量、文件系統(tǒng)狀態(tài)、掛載時(shí)間、日志文 件的位置和大小、磁盤上存放的對象數(shù)、數(shù)據(jù)塊計(jì)數(shù)、保留的數(shù)據(jù)塊計(jì)數(shù)、空閑 數(shù)據(jù)塊計(jì)數(shù)、數(shù)據(jù)塊大小、最后一次操作的序列號、系統(tǒng)內(nèi)部標(biāo)識和超級塊版本 號等。為了保證可靠性,要保存兩個(gè)超級塊,在對象文件系統(tǒng)里分配的到ID分 別為0和1。
在區(qū)段描述中記錄對象位圖、數(shù)據(jù)位圖和對象節(jié)點(diǎn)表的位置,通過這三個(gè)位 置指針進(jìn)行定位。對象節(jié)點(diǎn)表中保存著對象結(jié)點(diǎn)(Onode)信息,相當(dāng)于傳統(tǒng)文件 系統(tǒng)Inode, 0node里保存著該對象的數(shù)據(jù)塊列表,這個(gè)列表的大小定義為15, 前12個(gè)指針為直接數(shù)據(jù)塊指針,這些數(shù)據(jù)塊里保存的就是對象數(shù)據(jù)。若這12 個(gè)直接數(shù)據(jù)塊存放不下全部的數(shù)據(jù),第13個(gè)指針為間接數(shù)據(jù)塊指針,對應(yīng)的數(shù) 據(jù)塊里保存的全是數(shù)據(jù)塊指針。第14個(gè)和第15個(gè)指針分別是二級和三級的數(shù)據(jù) 塊指針,這樣的分層結(jié)構(gòu)足夠保存足夠多的對象數(shù)據(jù)列表。
對象查找表是一個(gè)哈希表,用來實(shí)現(xiàn)對象ID到對象Onode號的映射,每個(gè) 對象表在哈希表中占一項(xiàng),哈希表的大小等于磁盤中所存放的對象數(shù)。區(qū)間表用 來存儲管理區(qū)間的分配情況,每個(gè)區(qū)間按照大小被保存到不同的分組內(nèi),在分組 內(nèi)對區(qū)間進(jìn)行排序,這樣能便于空間的分配。文件系統(tǒng)的命名空間不是由對象文 件系統(tǒng)實(shí)現(xiàn)的,對象文件系統(tǒng)不提供文件路徑名字的解析,這部分的工作將由元 數(shù)據(jù)服務(wù)器來完成。
參見圖4,空間分配器在分配空間之前,如果已經(jīng)獲取對象的大小,將采用 預(yù)分配方法。否則,采用延遲分配策略,先將數(shù)據(jù)寫入緩沖區(qū),當(dāng)緩沖區(qū)填充滿 或者數(shù)據(jù)已經(jīng)寫入完成時(shí),將對緩沖區(qū)內(nèi)的數(shù)據(jù)按照預(yù)分配方法劃分空間。
參見圖5,在分配磁盤空間時(shí),分配對象文件系統(tǒng)要提供以對象為接口的磁 盤讀寫操作,對于對象的讀取操作,需要將對象ID作為參數(shù)傳入,經(jīng)過哈希表 的查詢先找到該對象的0node號,在0node表中查詢到對象在磁盤上的起始位置和所占用的區(qū)間,得到區(qū)間信息后,就可以從磁盤上讀取對象的數(shù)據(jù)。對于新對 象的寫操作,就需要為該對象分配存儲空間。
在磁盤空間的管理方面,將磁盤上的每一個(gè)空閑區(qū)間按照近似大小分成若干 個(gè)組,每個(gè)組的大小可以由系統(tǒng)管理員在運(yùn)行初始時(shí)進(jìn)行配置,也可以在文件系
統(tǒng)格式化的時(shí)候根據(jù)磁盤容量決定。在每個(gè)組內(nèi)對區(qū)間大小進(jìn)行排序,如要申請 分配一個(gè)大小為N的區(qū)間時(shí),需要執(zhí)行以下步驟
(1) 按照對象大小N,決定此對象所需空間的分組位置;
(2) 在分組內(nèi)查找最合適的區(qū)間,由于分組內(nèi)的區(qū)間是經(jīng)過排序的,可以
在O(logn)時(shí)間內(nèi)檢測到是否有合適的區(qū)間來存放數(shù)據(jù)。如果在分組找到合適的
區(qū)間,則執(zhí)行歩驟(3);如果沒有找到合適的區(qū)間,則準(zhǔn)備分配對象大小1/2
的空間,跳轉(zhuǎn)到開始重新執(zhí)行該過程。
(3) 準(zhǔn)備將這個(gè)區(qū)間分配給該對象,鎖定這個(gè)區(qū)間以防止其分配給其他對
象;
(4) 判斷這個(gè)區(qū)間的大小是否等于對象大小,如果等于對象大小則直接進(jìn) 行分配,跳轉(zhuǎn)到步驟(6);
(5) 分割這個(gè)區(qū)間,將這個(gè)分區(qū)的前面一段分配給對象,后面一段根據(jù)大
小放入相應(yīng)的區(qū)間分組;
(6) 此次空間分配完成,過程結(jié)束。 由于磁盤是按照固定大小的塊來管理剩余空間的,分配到的分區(qū)大小一般是
大于對象大小的,選取分區(qū)的前一段放置數(shù)據(jù),后一段的空閑空間進(jìn)行回收放入 空閑分區(qū)表。
對于大的對象一次無法分配到所需空間的,則先嘗試分配一半的空間,若無 法滿足則嘗試四分之一的空間,經(jīng)過多次分配后,將最終得到多個(gè)區(qū)間段組成的 對象存儲空間。雖然這些區(qū)段不連續(xù),但每個(gè)區(qū)段的大小是大于磁盤數(shù)據(jù)塊的大 小的,能夠減少傳統(tǒng)文件系統(tǒng)的塊分配列表。
本對象文件系統(tǒng)掛載后,對象位圖和數(shù)據(jù)位圖會加載到內(nèi)存中,對象節(jié)點(diǎn)表
由于占用空間很大并不會加載,設(shè)置了對象節(jié)點(diǎn)表的緩存。通過對象ID要獲取 對應(yīng)的0node,首先在緩存中查詢,如果沒有找到,則需要到磁盤上讀取。在讀 取磁盤之前,先查看Onode的請求等待列表中是否有已經(jīng)有這個(gè)Onode請求,發(fā)現(xiàn)有這個(gè)請求則加入等待列表中等待,從磁盤讀取到0node后通知所有的等待 者。通過LRU策略將查詢到的0node放入緩存,使以后的訪問盡可能的命中。
使用對象緩沖區(qū)來保存部分訪問數(shù)據(jù),由于緩沖區(qū)的大小是有限的,部分?jǐn)?shù) 據(jù)有可能會被LRU策略替換出去。這樣在讀一個(gè)對象的數(shù)據(jù)時(shí),有些數(shù)據(jù)緩沖區(qū) 中有,有些是缺失的。將要請求的對象數(shù)據(jù)的位移和長度與緩沖區(qū)內(nèi)的數(shù)據(jù)進(jìn)行 比對,找到缺失數(shù)據(jù)的位移和長度,從磁盤上請求這些缺失的數(shù)據(jù),這樣就有效 地減少了磁盤的10次數(shù)。
權(quán)利要求
1、一種基于對象存儲設(shè)備的對象文件組織方法,其特征是具體步驟為,(1)在磁盤中建立對象文件系統(tǒng)的布局,將對象描述、對象位圖、數(shù)據(jù)位圖、對象節(jié)點(diǎn)表信息加載在內(nèi)存中;(2)空間分配器在分配空間前檢測對象文件的大?。?3)如果已知對象文件的大小,采用預(yù)分配的方法,在磁盤上為該對象文件分配空間;(4)如果不知道對象文件的大小,先將對象文件的部分?jǐn)?shù)據(jù)寫入緩沖區(qū);(5)檢測緩沖區(qū)是否被填滿或者客戶端是否有要求釋放緩存數(shù)據(jù),為緩沖區(qū)的數(shù)據(jù)在磁盤上分配空間,將數(shù)據(jù)寫入磁盤;當(dāng)緩沖區(qū)的數(shù)據(jù)要遠(yuǎn)遠(yuǎn)大于磁盤的邏輯數(shù)據(jù)分塊大小時(shí),空間分配器為其劃分存儲的區(qū)間。
2、 根據(jù)權(quán)利要求1所述的基于對象存儲設(shè)備的對象文件組織方法,其特征 是所述預(yù)分配的方法過程為,(a) 按照對象文件的大小,決定此對象文件所需空間的分組位置;(b) 在分組內(nèi)查找最合適的區(qū)間,如果找到則使用該區(qū)間保存數(shù)據(jù);(C)如果未找到合適的區(qū)間,則先分配對象文件大小1/2的空間,然后跳轉(zhuǎn)到步驟(a);(d) 鎖定找到的區(qū)間,準(zhǔn)備將該區(qū)間分配給對象文件;(e) 判斷該區(qū)間的大小是否等于對象文件的大小,如果等于對象文件的大 小則直接進(jìn)行分配;(f) 如果該區(qū)間的大于對象文件的大小,則分割該區(qū)間,將區(qū)間的前面一 段分配給對象文件,后面一段則根據(jù)大小放入相應(yīng)的區(qū)間分組。
3、 根據(jù)權(quán)利要求1所述的基于對象存儲設(shè)備的對象文件組織方法,其特征 是所述步驟(4)中,采用內(nèi)存緩沖區(qū)緩存對象文件的部分?jǐn)?shù)據(jù),其中査找對象節(jié)點(diǎn)信息的過程為,(a) 根據(jù)對象ID在緩存中查找對象節(jié)點(diǎn)信息;(b) 如果在緩存中査詢命中,返回該對象節(jié)點(diǎn)信息;(c) 如果在緩存中未査詢到,檢査請求等待列表,若其中有該對象ID的節(jié) 點(diǎn)信息請求,則添加到等待隊(duì)列;(d) 在磁盤上讀取該對象ID對應(yīng)的節(jié)點(diǎn)信息,將結(jié)果返回給所有的請求等待者;(e)將査詢到的節(jié)點(diǎn)信息放入緩存,采用最近最小使用策略進(jìn)行緩存替換。
4、 根據(jù)權(quán)利要求1所述的基于對象存儲設(shè)備的對象文件組織方法,其特征 是所述步驟(5)中磁盤的邏輯數(shù)據(jù)分塊大小為1Kbyte或者4Kbyte。
5、 根據(jù)權(quán)利要求1所述的基于對象存儲設(shè)備的對象文件組織方法,其特征 是所述磁盤的存儲分區(qū)從邏輯上劃分為若干數(shù)據(jù)塊,每個(gè)塊1024 byte或者 4096 byte,數(shù)據(jù)塊的大小在創(chuàng)建系統(tǒng)時(shí)由系統(tǒng)管理員設(shè)置,或交給文件系統(tǒng)的 創(chuàng)建程序去決定。
6、 根據(jù)權(quán)利要求2所述的基于對象存儲設(shè)備的對象文件組織方法,其特征 是:所述的區(qū)間為磁盤上連續(xù)的若干數(shù)據(jù)塊,用起始位置和長度來表示一個(gè)區(qū)間。
全文摘要
本發(fā)明涉及一種基于對象存儲設(shè)備的對象文件組織方法。其在磁盤中建立對象文件系統(tǒng)的布局,將對象描述、對象位圖等信息加載在內(nèi)存中;空間分配器在分配空間前檢測對象文件的大小;如已知對象文件的大小,采用預(yù)分配的方法,在磁盤上為該對象文件分配空間;如不知道對象文件的大小,先將對象文件的部分?jǐn)?shù)據(jù)寫入緩沖區(qū);檢測緩沖區(qū)是否被填滿或客戶端是否要求釋放緩存數(shù)據(jù),為緩沖區(qū)的數(shù)據(jù)在磁盤上分配空間,將數(shù)據(jù)寫入磁盤;當(dāng)緩沖區(qū)的數(shù)據(jù)要遠(yuǎn)大于磁盤的邏輯數(shù)據(jù)分塊大小時(shí),空間分配器為其劃分存儲的區(qū)間。本發(fā)明采用連續(xù)分配多個(gè)數(shù)據(jù)塊的方法,能減少查找和分配空閑塊的時(shí)間,彌補(bǔ)當(dāng)前分布式文件系統(tǒng)中對象文件系統(tǒng)磁盤空間分配局限和不足。
文檔編號G06F17/30GK101556557SQ20091009856
公開日2009年10月14日 申請日期2009年5月14日 優(yōu)先權(quán)日2009年5月14日
發(fā)明者健 吳, 吳朝暉, 鵬 孫, 尹建偉, 瑩 李, 鄧水光 申請人:浙江大學(xué)