專利名稱:一種分布式文件系統(tǒng)中的文件存儲(chǔ)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù),尤其涉及一種分布式文件系統(tǒng)中的文件 存儲(chǔ)方法。
背景技術(shù):
在分布式文件系統(tǒng)架構(gòu)中,文件會(huì)^f皮分割成固定大小的塊,以彩:據(jù) 塊的形式存放在塊服務(wù)器上。由于塊服務(wù)器通常運(yùn)行Linux、 Unix等操 作系統(tǒng),因此數(shù)據(jù)塊相應(yīng)地存放在Linux、 Unix等操作系統(tǒng)的本地文件 系統(tǒng)中。
ext3、 XFS等都是通用的文件系統(tǒng),沒有對(duì)具體的應(yīng)用做相應(yīng)的優(yōu) 化。而在網(wǎng)絡(luò)電視、流々某體服務(wù)等業(yè)務(wù)應(yīng)用中,對(duì)文件系統(tǒng)的吞吐量有 著4艮高的要求。因而,在分布式文件系統(tǒng)架構(gòu)中,本地的文件系統(tǒng)就可 能成為了高吞吐量訪問的瓶頸,同時(shí)這些本地文件系統(tǒng)對(duì)數(shù)據(jù)的管理和 緩存,以及空間分配機(jī)制等有著復(fù)雜的邏輯,占用很多系統(tǒng)資源,也影 響了塊服務(wù)器的服務(wù)能力。
以ext3為例,》茲盤的空間分配以4KB為單位, 一個(gè)文件在寫入時(shí) 每次分配4KB空間。如果文件有幾十MB,該文件就被切割成很多碎片 分布在磁盤上,既導(dǎo)致寫入效率不高,也會(huì)使得在大吞吐量讀取的時(shí)候 形成瓶頸。當(dāng)文件被刪除后,這些已經(jīng)分配的磁盤空間釋放后又會(huì)成為 磁盤空間的碎片,不利于再次分配和管理。ext3的做法是進(jìn)行碎片整理, 這會(huì)增加系統(tǒng)的負(fù)擔(dān)。在文件管理方面,ext3需要將文件內(nèi)容通過幾個(gè) 數(shù)組影射到磁盤空間,數(shù)組中每個(gè)元素為文件內(nèi)每個(gè)4KB內(nèi)容所在石茲 盤的塊號(hào)。這也使得每個(gè)文件對(duì)空間的映射需要很大內(nèi)存或者復(fù)雜的算 法才能4艮好的進(jìn)行管理。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種分布式文件系統(tǒng)中的文件 存儲(chǔ)方法,提高文件的寫入效率和讀取效率,減少系統(tǒng)在之后的管理過 程中的負(fù)擔(dān)。
為解決上述技術(shù)問題,本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的 一種分布式文件系統(tǒng)中的文件存儲(chǔ)方法,包括
將磁盤空間中用于存儲(chǔ)有效數(shù)據(jù)的數(shù)據(jù)區(qū)劃分為大小為N的磁盤 塊,所述N》1MB;根據(jù)待存儲(chǔ)的文件的大小為其分配相應(yīng)數(shù)量的磁盤 塊,將所述待存儲(chǔ)的文件劃分大小為N的數(shù)據(jù)塊后依次寫入所述磁盤塊 中。
其中,所述》茲盤空間包括以下區(qū)域 系統(tǒng)信息區(qū),用于存儲(chǔ)所述分布式文件系統(tǒng)的基本信息; 文件節(jié)點(diǎn)表區(qū),包括至少一個(gè)文件節(jié)點(diǎn),用于存放文件的元信息; 空間分配表區(qū),用于存放所述數(shù)據(jù)區(qū)的各個(gè)磁盤塊的分配標(biāo)識(shí); 數(shù)據(jù)區(qū),劃分為空間大小為N的磁盤塊,用于存放文件的有效數(shù)據(jù)。 其中,所述^f茲盤空間還包括
系統(tǒng)信息備份區(qū),用于備份所述分布式文件系統(tǒng)的基本信息;
空間分配表備份區(qū),用于備份所述數(shù)據(jù)區(qū)的各個(gè)磁盤塊的分配標(biāo)識(shí)。
其中,所述系統(tǒng)信息區(qū)中存儲(chǔ)的分布式文件系統(tǒng)的基本信息包括 分布式文件系統(tǒng)標(biāo)識(shí)、版本號(hào)、磁盤容量、磁盤桂載點(diǎn)、文件節(jié)點(diǎn)表區(qū) 的位置、空間分配表區(qū)的位置、系統(tǒng)信息備份區(qū)的位置、空間分配表備 份區(qū)的位置;
所述文件節(jié)點(diǎn)表區(qū)所存放的文件的元信息包括文件名、文件大小、 文件創(chuàng)建修改時(shí)間、數(shù)據(jù)區(qū)中用于存放當(dāng)前文件的有效數(shù)據(jù)的磁盤塊的塊號(hào)。
本發(fā)明具有以下有益效果
1) 本發(fā)明中,采用將磁盤空間的數(shù)據(jù)區(qū)劃分為較大的磁盤塊(如 1MB)對(duì)文件進(jìn)行存儲(chǔ),可極大地提高了磁盤讀寫的吞吐量(因?yàn)檫B續(xù) 讀寫時(shí)磁頭移動(dòng)比較快,所以對(duì)磁盤每次讀寫的磁盤塊越大,效率越
高);
2) 由于本發(fā)明將磁盤空間的數(shù)據(jù)區(qū)劃分為較大的磁盤塊,所以在 保存文件的每個(gè)數(shù)據(jù)塊對(duì)應(yīng)的磁盤塊的塊號(hào)時(shí),所要保存的塊號(hào)較少, 節(jié)省了石茲盤空間(如文件大小為32MB、每個(gè);茲盤塊為1MB,則文件將 劃分為32個(gè)數(shù)據(jù)塊分別保存于32個(gè)磁盤塊中,最終只需要保存32個(gè) 塊號(hào));
3) 采用本發(fā)明,在文件被刪除后釋放存儲(chǔ)該文件的磁盤空間的過 程中,產(chǎn)生的碎片比較少,減少了系統(tǒng)的負(fù)擔(dān),有利于磁盤空間的再次 分配和管理。
圖1是本發(fā)明的一個(gè)實(shí)施例中磁盤結(jié)構(gòu)示意圖2是本發(fā)明的一個(gè)實(shí)施例中文件打開的方法流程圖3是本發(fā)明的一個(gè)實(shí)施例中文件讀取的方法流程圖4是本發(fā)明的 一 個(gè)實(shí)施例中向文件中寫數(shù)據(jù)的方法流程圖5是本發(fā)明的一個(gè)實(shí)施例中文件信息查詢的方法流程圖6是本發(fā)明的 一 個(gè)實(shí)施例中文件讀寫位置設(shè)定的方法流程圖7是本發(fā)明的一個(gè)實(shí)施例中文件刪除的方法流程圖8是本發(fā)明的一個(gè)實(shí)施例中文件關(guān)閉的方法流程圖。
具體實(shí)施方式
本發(fā)明的核心思想為將磁盤空間中用于存儲(chǔ)有效數(shù)據(jù)的數(shù)據(jù)區(qū)劃
分為大小為N的磁盤塊,所述N》1MB;根據(jù)待存儲(chǔ)的文件的大小為其 分配相應(yīng)數(shù)量的磁盤塊,將所述待存儲(chǔ)的文件劃分相應(yīng)大小的數(shù)據(jù)塊后 依次寫入所述磁盤塊中。
下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述 本實(shí)施例中,以N=1MB為例。
請(qǐng)參閱圖1,該圖所示為本實(shí)施例中分布式文件系統(tǒng)的磁盤結(jié)構(gòu), 主要包括系統(tǒng)信息區(qū)及系統(tǒng)信息區(qū)備份區(qū)、文件節(jié)點(diǎn)表區(qū)、空間分配表 區(qū)及空間分配表備份區(qū)、數(shù)據(jù)區(qū)幾個(gè)部分。
其中,系統(tǒng)信息區(qū)占用4KB的磁盤空間,用于存放分布式文件系 統(tǒng)的基本信息,主要包括文件系統(tǒng)標(biāo)識(shí)、版本號(hào)、磁盤容量、磁盤掛載 點(diǎn)、文件節(jié)點(diǎn)表區(qū)的位置信息、空間分配表區(qū)及空間分配表備份區(qū)的位 置信息、系統(tǒng)信息備份區(qū)的位置信息等。系統(tǒng)信息區(qū)備份區(qū)存儲(chǔ)的信息 與系統(tǒng)信息區(qū)的相同,用于備份。
文件節(jié)點(diǎn)表區(qū),最大支持49152個(gè)文件節(jié)點(diǎn),總共占用》茲盤空間 12MB,每個(gè)文件節(jié)點(diǎn)占用256個(gè)字節(jié),用于存放文件名、文件大小、 文件創(chuàng)建修改時(shí)間、存放當(dāng)前文件數(shù)據(jù)塊的石茲盤塊的塊號(hào)等信息;且將 塊號(hào)存放于一個(gè)可存儲(chǔ)32個(gè)元素的數(shù)組中,32個(gè)元素分別代表文件的 數(shù)據(jù)塊1到數(shù)據(jù)塊32對(duì)應(yīng)的磁盤塊的塊號(hào);本實(shí)施例中,每個(gè)數(shù)據(jù)塊 占用1MB的磁盤空間,所以文件大小的上限為32MB。
空間分配表區(qū),為比特位圖,每個(gè)比特位對(duì)應(yīng)1MB的》茲盤塊,用 于存儲(chǔ)對(duì)應(yīng)磁盤塊的分配標(biāo)識(shí)(用以表示本^f茲盤塊是否已被分配,0表 示未分配,l表示已分配)。以磁盤總?cè)萘?TB計(jì)算,空間分配表區(qū)共 占用了 (lTBAMB)/8 = 128KB大小的空間??臻g分配表備份區(qū)存儲(chǔ)的 數(shù)據(jù)與空間分配表區(qū)的完全相同,用于備份。
數(shù)據(jù)區(qū),為磁盤的剩余空間,劃分為大小為1MB的磁盤塊,用于存放文件的有效數(shù)據(jù)。
下面將針對(duì)于上述磁盤結(jié)構(gòu),對(duì)其相應(yīng)的文件的管理方法進(jìn)行描
述
在對(duì)上述^t盤中所保存的文件進(jìn)行管理時(shí),分布式文件系統(tǒng)在加載 的時(shí)候需要將磁盤的系統(tǒng)信息區(qū)、文件節(jié)點(diǎn)表區(qū)和空間分配表區(qū)的數(shù)據(jù) 讀入內(nèi)存,隨著本文件系統(tǒng)的運(yùn)行進(jìn)行這些數(shù)據(jù)維護(hù)和寫回磁盤的操
作;同時(shí),還需要?jiǎng)?chuàng)建打開文件表,存放所有已打開的文件的信息,如 打開的方式、讀寫的位置、文件的句柄、文件大小和對(duì)應(yīng)文件所在文件 節(jié)點(diǎn)表區(qū)的位置等。
請(qǐng)參閱圖2 ,該圖所示為文件打開方法流程,包括以下步驟
201、 塊服務(wù)器調(diào)用open接口,傳入文件名和打開標(biāo)志;
202、 根據(jù)文件名查找文件節(jié)點(diǎn)表,若找到,則執(zhí)行步驟204;若未 找到,則執(zhí)行步驟203;
203、 判斷打開標(biāo)志中是否有創(chuàng)建文件標(biāo)志,若沒有,則返回打開 失敗消息給塊服務(wù)器,結(jié)束本流程;若有,則分配新的文件節(jié)點(diǎn),執(zhí)行 步驟204;
204、 根據(jù)文件節(jié)點(diǎn)中的信息初始化文件打開結(jié)構(gòu),將該結(jié)構(gòu)加入 到打開文件表中;
205、 生成文件句柄,將該文件句柄填入到相應(yīng)的文件打開結(jié)構(gòu)中, 然后返回給塊服務(wù)器。
請(qǐng)參閱圖3 ,該圖所示為文件讀方法流程,包括以下步驟
301、 塊服務(wù)器調(diào)用read接口,傳入文件句柄和緩沖區(qū)指針;
302、 根據(jù)文件句柄查找打開文件表,在文件打開結(jié)構(gòu)里取得該文 件節(jié)點(diǎn)信息和當(dāng)前讀寫位置信息;
303 、根據(jù)讀寫位置在文件節(jié)點(diǎn)中找到對(duì)應(yīng)的磁盤塊的塊號(hào);304、 調(diào)用驅(qū)動(dòng)接口將該塊號(hào)對(duì)應(yīng)的磁盤塊中數(shù)據(jù)讀入到緩沖區(qū)中;
305、 返回讀取的字節(jié)數(shù)給塊服務(wù)器。
請(qǐng)參閱圖4 ,該圖所示為向文件中寫數(shù)據(jù)的方法流程,包括以下步
驟
401、 塊服務(wù)器調(diào)用write接口,傳入文件句柄和緩沖區(qū)指針;
402、 根據(jù)文件句柄在打開文件表中找到該打開文件的結(jié)構(gòu),取得 該文件節(jié)點(diǎn)和當(dāng)前讀寫位置信息;
403 、根據(jù)讀寫位置在文件節(jié)點(diǎn)中找到對(duì)應(yīng)的磁盤塊的塊號(hào);
404、判斷塊號(hào)是否為0;若為O,則表示沒有分配數(shù)據(jù)塊,從空間 分配表中找到第一個(gè)為0的比特位,將它所對(duì)應(yīng)的磁盤塊的塊號(hào)填入到 文件節(jié)點(diǎn)對(duì)應(yīng)的位置中,同時(shí)設(shè)置空間分配表中該比特位為1,之后執(zhí) 行步驟405;若不為O,則直接-執(zhí)行步驟405;
405 、調(diào)用驅(qū)動(dòng)接口將緩沖區(qū)中的數(shù)據(jù)寫入到該塊號(hào)對(duì)應(yīng)的磁盤塊
中;
406、返回寫入的字節(jié)數(shù)給塊服務(wù)器。
請(qǐng)參閱圖5,該圖所示為文件信息查詢的方法流程,包括以下步驟
501、 塊服務(wù)器調(diào)用stat接口,傳入文件句柄和存放文件信息的緩 沖區(qū);
502、 根據(jù)文件句柄在打開文件表中查找該打開文件的結(jié)構(gòu),取得 該文件節(jié)點(diǎn),從文件節(jié)點(diǎn)中拷貝文件信息到緩沖區(qū);
503、 成功則返回文件信息給塊服務(wù)器,否則返回失敗(找不到打 開文件結(jié)構(gòu))信息給塊服務(wù)器。
請(qǐng)參閱圖6,該圖所示為文件讀寫位置設(shè)定的方法流程,包括以下 步驟
601、塊服務(wù)器調(diào)用seek接口,傳入文件句柄和要設(shè)定的讀寫位置;602、 根據(jù)文件句柄在打開文件表中找到該打開文件的結(jié)構(gòu);
603、 比較要設(shè)定的位置和文件大小,如果在文件大小范圍內(nèi)則修 改打開文件結(jié)構(gòu)里面讀寫位置;
604、 返回成功或者失敗(設(shè)置位置不在文件大小范圍內(nèi)時(shí))給塊 服務(wù)器。
請(qǐng)參閱圖7,該圖所示為文件刪除的方法流程,包括以下步驟
701、 塊服務(wù)器調(diào)用remove接口,傳入文件名;
702、 根據(jù)文件名查找文件節(jié)點(diǎn)表,若找到對(duì)應(yīng)的文件節(jié)點(diǎn),則將 其刪除;
703、 返回成功或者失敗(找不到對(duì)應(yīng)的文件節(jié)點(diǎn)時(shí))消息給塊服 務(wù)器。
請(qǐng)參閱圖8,該圖所示為文件關(guān)閉的方法流程,包括以下步驟
801、 塊服務(wù)器調(diào)用close接口,傳入文件句柄;
802、 文件系統(tǒng)根據(jù)文件句柄在打開文件表中找到該打開文件結(jié)構(gòu), 釋方文該結(jié)構(gòu);
803、 返回成功或者失敗(找不到打開文件結(jié)構(gòu))塊服務(wù)器。
以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制,僅僅參照較佳 實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說明。本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可 以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明技術(shù)方 案的精神和范圍,均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1、一種分布式文件系統(tǒng)中的文件存儲(chǔ)方法,其特征在于,包括將磁盤空間中用于存儲(chǔ)有效數(shù)據(jù)的數(shù)據(jù)區(qū)劃分為大小為N的磁盤塊,所述N≥1MB;根據(jù)待存儲(chǔ)的文件的大小為其分配相應(yīng)數(shù)量的磁盤塊,將所述待存儲(chǔ)的文件劃分大小為N的數(shù)據(jù)塊后依次寫入所述磁盤塊中。
2、 如權(quán)利要求1所述的分布式文件系統(tǒng)中的文件存儲(chǔ)方法,其 特征在于,所述磁盤空間包括以下區(qū)域系統(tǒng)信息區(qū),用于存儲(chǔ)所述分布式文件系統(tǒng)的基本信息; 文件節(jié)點(diǎn)表區(qū),包括至少一個(gè)文件節(jié)點(diǎn),用于存^L文件的元信息; 空間分配表區(qū),用于存放所述數(shù)據(jù)區(qū)的各個(gè)磁盤塊的分配標(biāo)識(shí); 數(shù)據(jù)區(qū),劃分為空間大小為N的磁盤塊,用于存放文件的有效 數(shù)據(jù)。
3、 如權(quán)利要求2所述的分布式文件系統(tǒng)中的文件存儲(chǔ)方法,其 特征在于,所述磁盤空間還包括系統(tǒng)信息備份區(qū),用于備份所述分布式文件系統(tǒng)的基本信息; 空間分配表備份區(qū),用于備份所述數(shù)據(jù)區(qū)的各個(gè)磁盤塊的分配標(biāo)識(shí)。
4、 如權(quán)利要求3所述的分布式文件系統(tǒng)中的文件存儲(chǔ)方法,其 特征在于,所述系統(tǒng)信息區(qū)中存儲(chǔ)的分布式文件系統(tǒng)的基本信息包 括分布式文件系統(tǒng)標(biāo)識(shí)、版本號(hào)、^磁盤容量、/磁盤掛載點(diǎn)、文件節(jié) 點(diǎn)表區(qū)的位置、空間分配表區(qū)的位置、系統(tǒng)信息備份區(qū)的位置、空間 分配表備份區(qū)的位置;所述文件節(jié)點(diǎn)表區(qū)所存放的文件的元信息包括文件名、文件大 小、文件創(chuàng)建修改時(shí)間、數(shù)據(jù)區(qū)中用于存放當(dāng)前文件的有效數(shù)據(jù)的磁 盤塊的塊號(hào)。
全文摘要
本發(fā)明公開了一種分布式文件系統(tǒng)中的文件存儲(chǔ)方法,包括將磁盤空間中用于存儲(chǔ)有效數(shù)據(jù)的數(shù)據(jù)區(qū)劃分為大小為N的磁盤塊,所述N≥1MB;根據(jù)待存儲(chǔ)的文件的大小為其分配相應(yīng)數(shù)量的磁盤塊,將所述待存儲(chǔ)的文件劃分大小為N的數(shù)據(jù)塊后依次寫入所述磁盤塊中。本發(fā)明中,采用將磁盤空間的數(shù)據(jù)區(qū)劃分為較大的磁盤塊對(duì)文件進(jìn)行存儲(chǔ),可極大地提高了磁盤讀寫的吞吐量;在保存文件的每個(gè)數(shù)據(jù)塊對(duì)應(yīng)的磁盤塊的塊號(hào)時(shí),所要保存的塊號(hào)較少,節(jié)省了磁盤空間;同時(shí),在文件被刪除后釋放存儲(chǔ)該文件的磁盤空間的過程中,產(chǎn)生的碎片比較少,減少了系統(tǒng)的負(fù)擔(dān),有利于磁盤空間的再次分配和管理。
文檔編號(hào)G06F17/30GK101446976SQ200810241700
公開日2009年6月3日 申請(qǐng)日期2008年12月26日 優(yōu)先權(quán)日2008年12月26日
發(fā)明者夏艦波 申請(qǐng)人:中興通訊股份有限公司