两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種分布式文件系統(tǒng)及分布式文件系統(tǒng)的構(gòu)建方法

文檔序號(hào):6632481閱讀:259來(lái)源:國(guó)知局
一種分布式文件系統(tǒng)及分布式文件系統(tǒng)的構(gòu)建方法
【專利摘要】本發(fā)明涉及一種分布式文件系統(tǒng)及分布式文件系統(tǒng)的構(gòu)建方法,包括以下步驟:封裝訪問(wèn)函數(shù),定義結(jié)構(gòu)體文件;將磁盤(pán)上的所有文件按照預(yù)先定義的預(yù)定數(shù)據(jù)塊大小拆分為多個(gè)預(yù)定數(shù)據(jù)塊大小的數(shù)據(jù)塊;將拆分后的每個(gè)數(shù)據(jù)塊分別以鍵值對(duì)的形式存儲(chǔ)在分布式開(kāi)源數(shù)據(jù)庫(kù)中;根據(jù)每個(gè)數(shù)據(jù)塊的鍵頭部和文件的文件名建立文件分配表;當(dāng)外部應(yīng)用發(fā)起文件訪問(wèn)請(qǐng)求時(shí),查詢文件分配表,得到查詢結(jié)果,對(duì)分布式開(kāi)源數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)塊讀寫(xiě)同時(shí)對(duì)分布式開(kāi)源數(shù)據(jù)庫(kù)中的文件分配表進(jìn)行修改。本發(fā)明利用HBASE對(duì)小數(shù)據(jù)塊的快速訪問(wèn),通過(guò)自動(dòng)數(shù)據(jù)拆分和匯集,實(shí)現(xiàn)對(duì)任意大小文件均能按照類似傳統(tǒng)非分布式文件系統(tǒng)一樣快速隨機(jī)存儲(chǔ)和訪問(wèn)。
【專利說(shuō)明】-種分布式文件系統(tǒng)及分布式文件系統(tǒng)的構(gòu)建方法

【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種分布式文件系統(tǒng)及分布式文件系統(tǒng)的構(gòu)建方法。

【背景技術(shù)】
[0002] 化doop是一個(gè)分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會(huì)開(kāi)發(fā)?;痙oop實(shí)現(xiàn)了一個(gè) 分布式文件系統(tǒng)(皿F巧和一種分布式計(jì)算框架(MapRe化Ce)。
[0003] 皿FS是Hadoop Distributed File System的簡(jiǎn)稱,它是一個(gè)分布式文件系統(tǒng)。 皿FS有著高容錯(cuò)性的特點(diǎn),它提供高吞吐量方法來(lái)訪問(wèn)應(yīng)用程序的數(shù)據(jù),適合那些有著超 大數(shù)據(jù)集的應(yīng)用程序,但對(duì)數(shù)據(jù)隨機(jī)訪問(wèn)和小數(shù)據(jù)集的讀寫(xiě)有著較大的效率瓶頸。
[0004] 皿ase是一個(gè)分布式的、面向列的開(kāi)源數(shù)據(jù)庫(kù),它不是關(guān)系型的數(shù)據(jù)庫(kù),數(shù)據(jù)采用 Key-Value方式存儲(chǔ),是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)。目前通用分布式文件系統(tǒng) 對(duì)小文件(小于64MB)和普通文件隨機(jī)快速訪問(wèn)具有處理效率低的問(wèn)題。


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

[0005] 本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種對(duì)小文件和普通文件隨機(jī)快速訪問(wèn)處理 效率高的分布式文件系統(tǒng)及分布式文件系統(tǒng)的構(gòu)建方法。
[0006] 本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案如下:一種分布式文件系統(tǒng)的構(gòu)建方法,包 括W下步驟:
[0007] 步驟1 ;封裝用于進(jìn)行文件訪問(wèn)的訪問(wèn)函數(shù),定義結(jié)構(gòu)體文件,所述結(jié)構(gòu)體文件用 于存儲(chǔ)文件分配表的訪問(wèn)指針;
[0008] 步驟2 ;將磁盤(pán)上的所有文件按照預(yù)先定義的預(yù)定數(shù)據(jù)塊大小拆分為多個(gè)數(shù)據(jù) 塊;
[0009] 步驟3 ;將拆分后的每個(gè)數(shù)據(jù)塊分別W鍵值對(duì)的形式存儲(chǔ)在分布式開(kāi)源數(shù)據(jù)庫(kù) 中,所述鍵值對(duì)包括鍵和鍵值,所述鍵包括鍵頭部和當(dāng)前數(shù)據(jù)塊在被拆分的文件中的序號(hào), 所述鍵值用于存儲(chǔ)數(shù)據(jù)塊;
[0010] 步驟4 ;根據(jù)每個(gè)數(shù)據(jù)塊的鍵頭部和所有被拆分文件的文件名建立文件分配表, 所述文件分配表中還包括被拆分文件的擴(kuò)展屬性;
[0011] 步驟5 ;當(dāng)外部應(yīng)用向分布式開(kāi)源數(shù)據(jù)庫(kù)發(fā)起文件訪問(wèn)請(qǐng)求時(shí),分布式開(kāi)源數(shù)據(jù) 庫(kù)根據(jù)文件訪問(wèn)請(qǐng)求中攜帶的文件名利用定義的結(jié)構(gòu)體文件查詢文件分配表,得到查詢結(jié) 果,根據(jù)封裝的訪問(wèn)函數(shù)及查詢結(jié)果對(duì)分布式開(kāi)源數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)塊讀寫(xiě)和/或?qū)Ψ植际?開(kāi)源數(shù)據(jù)庫(kù)中的文件分配表進(jìn)行修改。
[0012] 本發(fā)明的有益效果是:本發(fā)明利用HBASE對(duì)小數(shù)據(jù)塊(HBASE的數(shù)據(jù)記錄)的快 速查詢?cè)L問(wèn),通過(guò)自動(dòng)數(shù)據(jù)拆分和匯集(Map-Re化Ce),實(shí)現(xiàn)對(duì)任意大小文件均能按照類似 本地文件系統(tǒng)一樣快速隨機(jī)存儲(chǔ)和訪問(wèn),解決了目前通用分布式文件系統(tǒng)對(duì)小文件(小于 64MB)和普通文件隨機(jī)快速訪問(wèn)處理效率低的問(wèn)題。
[0013] 在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可W做如下改進(jìn)。
[0014] 進(jìn)一步,所述鍵頭部包括時(shí)間戳、主機(jī)名和流水號(hào),所述時(shí)間戳為將磁盤(pán)上的文件 拆分為數(shù)據(jù)塊時(shí)所在主機(jī)的時(shí)間,所述主機(jī)名為將磁盤(pán)上的文件拆分為數(shù)據(jù)塊時(shí)所在主機(jī) 的主機(jī)名,所述流水號(hào)用于記錄每一個(gè)數(shù)據(jù)塊的序號(hào)。
[0015] 進(jìn)一步,所述步驟5中文件訪問(wèn)請(qǐng)求具體為文件創(chuàng)建請(qǐng)求、文件復(fù)寫(xiě)請(qǐng)求或者文 件刪除請(qǐng)求。
[0016] 進(jìn)一步,當(dāng)文件訪問(wèn)請(qǐng)求為文件創(chuàng)建請(qǐng)求時(shí),分布式開(kāi)源數(shù)據(jù)庫(kù)根據(jù)文件訪問(wèn)請(qǐng) 求中攜帶的文件名利用定義的結(jié)構(gòu)體文件查詢文件分配表,得到查詢結(jié)果;
[0017] 如果文件分配表中存在與文件訪問(wèn)請(qǐng)求中的文件名相同的同名文件,則根據(jù)擴(kuò)展 屬性判斷此文件權(quán)限是否允許當(dāng)前用戶修改,如果不允許修改,則返回?zé)o權(quán)限修改的錯(cuò)誤 提示;如果允許修改,根據(jù)文件分配表中的同名文件的鍵頭部,刪除在分布式開(kāi)源數(shù)據(jù)庫(kù)中 與該同名文件對(duì)應(yīng)的鍵值,然后復(fù)用此同名文件的鍵頭部,為該鍵頭部重新寫(xiě)入數(shù)據(jù)塊;
[0018] 如果在文件分配表中未找到同名文件,則新建一個(gè)鍵值對(duì),并將鍵值對(duì)的鍵值部 分存入新的數(shù)據(jù)塊,將文件訪問(wèn)請(qǐng)求中的文件名和鍵值對(duì)的鍵頭部分別對(duì)應(yīng)存入文件分配 表,并返回創(chuàng)建文件成功提示。
[0019] 進(jìn)一步,當(dāng)文件訪問(wèn)請(qǐng)求為文件復(fù)寫(xiě)請(qǐng)求時(shí),分布式開(kāi)源數(shù)據(jù)庫(kù)根據(jù)文件訪問(wèn)請(qǐng) 求中攜帶的文件名利用定義的結(jié)構(gòu)體文件查詢文件分配表,得到查詢結(jié)果;
[0020] 如果文件分配表中存在與文件訪問(wèn)請(qǐng)求中的文件名相同的同名文件,則根據(jù)擴(kuò)展 屬性判斷此文件權(quán)限是否允許當(dāng)前用戶修改,如果不允許修改,則返回?zé)o權(quán)限修改的錯(cuò)誤 提示;如果允許修改,根據(jù)文件分配表中的同名文件的鍵頭部,在分布式開(kāi)源數(shù)據(jù)庫(kù)中刪除 與該同名文件對(duì)應(yīng)的鍵值,然后復(fù)用此同名文件的鍵頭部,為該鍵頭部重新寫(xiě)入數(shù)據(jù)塊;
[0021] 如果在文件分配表中未找到同名文件,則新建一個(gè)鍵值對(duì),將文件訪問(wèn)請(qǐng)求中的 文件名和鍵值對(duì)的鍵頭部分別對(duì)應(yīng)存入文件分配表,為鍵值對(duì)的鍵值部分存入新的數(shù)據(jù) 塊,數(shù)據(jù)塊一開(kāi)始寫(xiě)入時(shí)直接寫(xiě)入內(nèi)存中,當(dāng)內(nèi)存寫(xiě)入數(shù)據(jù)達(dá)到預(yù)定閥值或外部的應(yīng)用程 序主動(dòng)調(diào)用強(qiáng)制刷新命令要求刷新數(shù)據(jù)到磁盤(pán)時(shí),將內(nèi)存中緩存數(shù)據(jù)的當(dāng)前數(shù)據(jù)偏移量拼 接到鍵頭部,將當(dāng)前數(shù)據(jù)偏移量作為鍵值對(duì)中的鍵及作為鍵值的內(nèi)存中的數(shù)據(jù)塊一通寫(xiě)入 分布式開(kāi)源數(shù)據(jù)庫(kù),寫(xiě)入成功后,返回復(fù)寫(xiě)函數(shù)調(diào)用成功提示。
[0022] 進(jìn)一步,當(dāng)文件訪問(wèn)請(qǐng)求為文件刪除請(qǐng)求時(shí),外部的應(yīng)用程序調(diào)用刪除函數(shù),分布 式開(kāi)源數(shù)據(jù)庫(kù)根據(jù)文件訪問(wèn)請(qǐng)求中攜帶的文件名利用定義的結(jié)構(gòu)體文件查詢文件分配表, 得到查詢結(jié)果;
[0023] 如果在文件分配表中未找到同名文件,則返回刪除函數(shù)調(diào)用失敗提示;
[0024] 如果在文件分配表中找到同名文件,從文件分配表中獲取與文件刪除請(qǐng)求攜帶的 文件名對(duì)應(yīng)的鍵頭部和擴(kuò)展屬性,根據(jù)擴(kuò)展屬性判斷此文件的權(quán)限是否允許當(dāng)前用戶執(zhí)行 刪除操作,如果允許,利用獲取的鍵頭部從分布式開(kāi)源數(shù)據(jù)庫(kù)中刪除相對(duì)應(yīng)的鍵值,然后從 文件分配表中刪除與鍵頭部對(duì)應(yīng)的文件名和擴(kuò)展屬性,全部刪除完畢后,返回刪除函數(shù)調(diào) 用成功。
[0025] 進(jìn)一步,一種分布式文件系統(tǒng),包括封裝定義模塊,拆分模塊,存儲(chǔ)模塊,建立模塊 和查詢修改模塊;
[0026] 所述封裝定義模塊,用于封裝進(jìn)行文件訪問(wèn)的訪問(wèn)函數(shù),定義存儲(chǔ)文件分配表的 訪問(wèn)指針的結(jié)構(gòu)體文件;
[0027] 所述拆分模塊,用于將磁盤(pán)上的所有文件按照預(yù)先定義的預(yù)定數(shù)據(jù)塊大小拆分為 多個(gè)數(shù)據(jù)塊;
[0028] 所述存儲(chǔ)模塊,用于將拆分后的每個(gè)數(shù)據(jù)塊分別W鍵值對(duì)的形式存儲(chǔ)在分布式開(kāi) 源數(shù)據(jù)庫(kù)中,所述鍵值對(duì)包括鍵和鍵值,所述鍵包括鍵頭部和當(dāng)前數(shù)據(jù)塊在被拆分的文件 中的序號(hào),所述鍵值用于存儲(chǔ)數(shù)據(jù)塊;
[0029] 所述建立模塊,用于根據(jù)每個(gè)數(shù)據(jù)塊的鍵頭部和所有被拆分文件的文件名建立文 件分配表,所述文件分配表中還包括被拆分文件的擴(kuò)展屬性;
[0030] 所述查詢修改模塊,用于當(dāng)外部應(yīng)用向分布式開(kāi)源數(shù)據(jù)庫(kù)發(fā)起文件訪問(wèn)請(qǐng)求時(shí), 分布式開(kāi)源數(shù)據(jù)庫(kù)根據(jù)文件訪問(wèn)請(qǐng)求中攜帶的文件名利用定義的結(jié)構(gòu)體文件查詢文件分 配表,得到查詢結(jié)果,根據(jù)封裝的訪問(wèn)函數(shù)及查詢結(jié)果對(duì)分布式開(kāi)源數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)塊讀 寫(xiě)和/或?qū)Ψ植际介_(kāi)源數(shù)據(jù)庫(kù)中的文件分配表進(jìn)行修改。
[0031] 進(jìn)一步,所述存儲(chǔ)模塊存儲(chǔ)的鍵值對(duì)的鍵頭部包括時(shí)間戳、主機(jī)名和流水號(hào),所述 時(shí)間戳為將磁盤(pán)上的文件拆分為數(shù)據(jù)塊時(shí)所在主機(jī)的時(shí)間,所述主機(jī)名為將磁盤(pán)上的文件 拆分為數(shù)據(jù)塊時(shí)所在主機(jī)的主機(jī)名,所述流水號(hào)用于記錄每一個(gè)數(shù)據(jù)塊的序號(hào)。
[0032] 進(jìn)一步,所述查詢修改模塊中文件訪問(wèn)請(qǐng)求具體為文件創(chuàng)建請(qǐng)求、文件復(fù)寫(xiě)請(qǐng)求 或者文件刪除請(qǐng)求。

【專利附圖】

【附圖說(shuō)明】
[0033] 圖1為本發(fā)明方法步驟流程圖;
[0034] 圖2為本發(fā)明系統(tǒng)結(jié)構(gòu)圖。
[0035] 附圖中,各標(biāo)號(hào)所代表的部件列表如下:
[0036] 1、封裝定義模塊,2、拆分模塊,3、存儲(chǔ)模塊,4、建立模塊,5、查詢修改模塊。

【具體實(shí)施方式】
[0037] W下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并 非用于限定本發(fā)明的范圍。
[003引如圖1所示,為本發(fā)明方法步驟流程圖;圖2為本發(fā)明系統(tǒng)結(jié)構(gòu)圖。
[0039] 實(shí)施例1
[0040] 一種分布式文件系統(tǒng)的構(gòu)建方法,包括W下步驟:
[0041] 步驟1 ;封裝用于進(jìn)行文件訪問(wèn)的訪問(wèn)函數(shù),定義結(jié)構(gòu)體文件,所述結(jié)構(gòu)體文件用 于存儲(chǔ)文件分配表的訪問(wèn)指針;
[0042] 系統(tǒng)封裝標(biāo)準(zhǔn)C的文件訪問(wèn)常用函數(shù),如打開(kāi)文件(fopen)、關(guān)閉文件(fclose)、 寫(xiě)文件(fwrite)、讀文件(化ead)、文件偏移(fseek)、文件位置重置(rewind)、文件改名 (rename)等,對(duì)函數(shù)的標(biāo)準(zhǔn)聲明不變,重新定義結(jié)構(gòu)體FILE,在此結(jié)構(gòu)體中存儲(chǔ)HBASE默認(rèn) 表的訪問(wèn)句柄;
[0043] 步驟2 ;將磁盤(pán)上的所有文件按照預(yù)先定義的預(yù)定數(shù)據(jù)塊大小拆分為多個(gè)預(yù)定數(shù) 據(jù)塊大小的數(shù)據(jù)塊;
[0044] 步驟3 ;將拆分后的每個(gè)數(shù)據(jù)塊分別W鍵值對(duì)的形式存儲(chǔ)在分布式開(kāi)源數(shù)據(jù)庫(kù) 中,所述鍵值對(duì)包括鍵和鍵值,所述鍵包括鍵頭部和當(dāng)前數(shù)據(jù)塊在被拆分的文件中的序號(hào), 所述鍵值用于存儲(chǔ)數(shù)據(jù)塊;
[0045] 步驟4 ;根據(jù)每個(gè)數(shù)據(jù)塊的鍵頭部和所有被拆分文件的文件名建立文件分配表, 所述文件分配表中還包括被拆分文件的擴(kuò)展屬性;
[0046] 步驟5 ;當(dāng)外部應(yīng)用向分布式開(kāi)源數(shù)據(jù)庫(kù)發(fā)起文件訪問(wèn)請(qǐng)求時(shí),分布式開(kāi)源數(shù)據(jù) 庫(kù)根據(jù)文件訪問(wèn)請(qǐng)求中攜帶的文件名利用定義的結(jié)構(gòu)體文件查詢文件分配表,得到查詢結(jié) 果,根據(jù)封裝的訪問(wèn)函數(shù)及查詢結(jié)果對(duì)分布式開(kāi)源數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)塊讀寫(xiě)同時(shí)對(duì)分布式開(kāi) 源數(shù)據(jù)庫(kù)中的文件分配表進(jìn)行修改。
[0047]

【權(quán)利要求】
1. 一種分布式文件系統(tǒng)的構(gòu)建方法,其特征在于,包括以下步驟: 步驟1:封裝用于進(jìn)行文件訪問(wèn)的訪問(wèn)函數(shù),定義結(jié)構(gòu)體文件,所述結(jié)構(gòu)體文件用于存 儲(chǔ)文件分配表的訪問(wèn)指針; 步驟2 :將磁盤(pán)上所有文件按照預(yù)先定義的預(yù)定數(shù)據(jù)塊大小拆分為多個(gè)數(shù)據(jù)塊; 步驟3:將拆分后的每個(gè)數(shù)據(jù)塊分別以鍵值對(duì)的形式存儲(chǔ)在分布式開(kāi)源數(shù)據(jù)庫(kù)中,所 述鍵值對(duì)包括鍵和鍵值,所述鍵包括鍵頭部和當(dāng)前數(shù)據(jù)塊在被拆分的文件中的序號(hào),所述 鍵值用于存儲(chǔ)數(shù)據(jù)塊; 步驟4:根據(jù)每個(gè)數(shù)據(jù)塊的鍵頭部和所有被拆分文件的文件名建立文件分配表,所述 文件分配表中還包括被拆分文件的擴(kuò)展屬性; 步驟5 :當(dāng)外部應(yīng)用發(fā)起文件訪問(wèn)請(qǐng)求時(shí),分布式開(kāi)源數(shù)據(jù)庫(kù)根據(jù)文件訪問(wèn)請(qǐng)求中攜 帶的文件名,利用定義的結(jié)構(gòu)體文件查詢文件分配表,得到查詢結(jié)果,根據(jù)封裝的訪問(wèn)函數(shù) 及查詢結(jié)果對(duì)分布式開(kāi)源數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)塊讀寫(xiě),同時(shí)對(duì)分布式開(kāi)源數(shù)據(jù)庫(kù)中的文件分 配表進(jìn)行修改。
2. 根據(jù)權(quán)利要求1所述的構(gòu)建方法,其特征在于:所述鍵頭部包括時(shí)間戳、主機(jī)名和 流水號(hào),所述時(shí)間戳為將磁盤(pán)上的文件拆分為數(shù)據(jù)塊時(shí)所在主機(jī)的時(shí)間,所述主機(jī)名為將 磁盤(pán)上的文件拆分為數(shù)據(jù)塊時(shí)所在主機(jī)的主機(jī)名,所述流水號(hào)用于記錄每一個(gè)數(shù)據(jù)塊的序 號(hào)。
3. 根據(jù)權(quán)利要求1所述的構(gòu)建方法,其特征在于:所述步驟5中文件訪問(wèn)請(qǐng)求具體為 文件創(chuàng)建請(qǐng)求、文件復(fù)寫(xiě)請(qǐng)求或者文件刪除請(qǐng)求。
4. 根據(jù)權(quán)利要求3所述的構(gòu)建方法,其特征在于:當(dāng)文件訪問(wèn)請(qǐng)求為文件創(chuàng)建請(qǐng)求時(shí), 分布式開(kāi)源數(shù)據(jù)庫(kù)根據(jù)文件訪問(wèn)請(qǐng)求中攜帶的文件名,利用定義的結(jié)構(gòu)體文件查詢文件分 配表,得到查詢結(jié)果; 如果文件分配表中存在與文件訪問(wèn)請(qǐng)求中的文件名相同的同名文件,則根據(jù)擴(kuò)展屬性 判斷此文件權(quán)限是否允許當(dāng)前用戶修改,如果不允許修改,則返回?zé)o權(quán)限修改的錯(cuò)誤提示; 如果允許修改,根據(jù)文件分配表中的同名文件的鍵頭部,刪除在分布式開(kāi)源數(shù)據(jù)庫(kù)中與該 同名文件對(duì)應(yīng)的鍵值,然后復(fù)用此同名文件的鍵頭部,為該鍵頭部重新寫(xiě)入數(shù)據(jù)塊; 如果在文件分配表中未找到同名文件,則新建一個(gè)鍵值對(duì),并將鍵值對(duì)的鍵值部分存 入新的數(shù)據(jù)塊,將文件訪問(wèn)請(qǐng)求中的文件名和鍵值對(duì)的鍵頭部分別對(duì)應(yīng)存入文件分配表, 并返回創(chuàng)建文件成功提示。
5. 根據(jù)權(quán)利要求3所述的構(gòu)建方法,其特征在于:當(dāng)文件訪問(wèn)請(qǐng)求為文件復(fù)寫(xiě)請(qǐng)求時(shí), 分布式開(kāi)源數(shù)據(jù)庫(kù)根據(jù)文件訪問(wèn)請(qǐng)求中攜帶的文件名利用定義的結(jié)構(gòu)體文件查詢文件分 配表,得到查詢結(jié)果; 如果文件分配表中存在與文件訪問(wèn)請(qǐng)求中的文件名相同的同名文件,則根據(jù)擴(kuò)展屬性 判斷此文件權(quán)限是否允許當(dāng)前用戶修改,如果不允許修改,則返回?zé)o權(quán)限修改的錯(cuò)誤提示; 如果允許修改,根據(jù)文件分配表中的同名文件的鍵頭部,在分布式開(kāi)源數(shù)據(jù)庫(kù)中刪除與該 同名文件對(duì)應(yīng)的鍵值,然后復(fù)用此同名文件的鍵頭部,為該鍵頭部重新寫(xiě)入數(shù)據(jù)塊; 如果在文件分配表中未找到同名文件,則新建一個(gè)鍵值對(duì),將文件訪問(wèn)請(qǐng)求中的文件 名和鍵值對(duì)的鍵頭部分別對(duì)應(yīng)存入文件分配表,為鍵值對(duì)的鍵值部分存入新的數(shù)據(jù)塊,數(shù) 據(jù)塊一開(kāi)始寫(xiě)入時(shí)直接寫(xiě)入內(nèi)存中,當(dāng)內(nèi)存寫(xiě)入數(shù)據(jù)達(dá)到預(yù)定閥值或外部的應(yīng)用程序主動(dòng) 調(diào)用強(qiáng)制刷新命令要求刷新數(shù)據(jù)到磁盤(pán)時(shí),將內(nèi)存中緩存數(shù)據(jù)的當(dāng)前數(shù)據(jù)偏移量拼接到鍵 頭部,將當(dāng)前數(shù)據(jù)偏移量作為鍵值對(duì)中的鍵及作為鍵值的內(nèi)存中的數(shù)據(jù)塊一通寫(xiě)入分布式 開(kāi)源數(shù)據(jù)庫(kù),寫(xiě)入成功后,返回復(fù)寫(xiě)函數(shù)調(diào)用成功提示。
6. 根據(jù)權(quán)利要求3所述的構(gòu)建方法,其特征在于:當(dāng)文件訪問(wèn)請(qǐng)求為文件刪除請(qǐng)求時(shí), 外部的應(yīng)用程序調(diào)用刪除函數(shù),分布式開(kāi)源數(shù)據(jù)庫(kù)根據(jù)文件訪問(wèn)請(qǐng)求中攜帶的文件名利用 定義的結(jié)構(gòu)體文件查詢文件分配表,得到查詢結(jié)果; 如果在文件分配表中未找到同名文件,則返回刪除函數(shù)調(diào)用失敗提示; 如果在文件分配表中找到同名文件,從文件分配表中獲取與文件刪除請(qǐng)求攜帶的文件 名對(duì)應(yīng)的鍵頭部和擴(kuò)展屬性,根據(jù)擴(kuò)展屬性判斷此文件的權(quán)限是否允許當(dāng)前用戶執(zhí)行刪除 操作,如果允許,利用獲取的鍵頭部從分布式開(kāi)源數(shù)據(jù)庫(kù)中刪除相對(duì)應(yīng)的鍵值,然后從文件 分配表中刪除與鍵頭部對(duì)應(yīng)的文件名和擴(kuò)展屬性,全部刪除完畢后,返回刪除函數(shù)調(diào)用成 功。
7. -種分布式文件系統(tǒng),其特征在于:包括封裝定義模塊(1),拆分模塊(2),存儲(chǔ)模塊 (3),建立模塊(4)和查詢修改模塊(5); 所述封裝定義模塊(1),用于封裝進(jìn)行文件訪問(wèn)的訪問(wèn)函數(shù),定義存儲(chǔ)文件分配表的訪 問(wèn)指針的結(jié)構(gòu)體文件; 所述拆分模塊(2),用于將磁盤(pán)上所有文件按照預(yù)先定義的預(yù)定數(shù)據(jù)塊大小拆分為多 個(gè)數(shù)據(jù)塊; 所述存儲(chǔ)模塊(3),用于將拆分后的每個(gè)數(shù)據(jù)塊分別以鍵值對(duì)的形式存儲(chǔ)在分布式開(kāi) 源數(shù)據(jù)庫(kù)中,所述鍵值對(duì)包括鍵和鍵值,所述鍵包括鍵頭部和當(dāng)前數(shù)據(jù)塊在被拆分的文件 中的序號(hào),所述鍵值用于存儲(chǔ)數(shù)據(jù)塊; 所述建立模塊(4),用于根據(jù)每個(gè)數(shù)據(jù)塊的鍵頭部和所有被拆分文件的文件名建立文 件分配表,所述文件分配表中還包括被拆分文件的擴(kuò)展屬性; 所述查詢修改模塊(5),用于當(dāng)外部應(yīng)用向分布式開(kāi)源數(shù)據(jù)庫(kù)發(fā)起文件訪問(wèn)請(qǐng)求時(shí),分 布式開(kāi)源數(shù)據(jù)庫(kù)根據(jù)文件訪問(wèn)請(qǐng)求中攜帶的文件名利用定義的結(jié)構(gòu)體文件查詢文件分配 表,得到查詢結(jié)果,根據(jù)封裝的訪問(wèn)函數(shù)及查詢結(jié)果對(duì)分布式開(kāi)源數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)塊讀寫(xiě), 同時(shí)對(duì)分布式開(kāi)源數(shù)據(jù)庫(kù)中的文件分配表進(jìn)行修改。
8. 根據(jù)權(quán)利要求7所述的分布式文件系統(tǒng),其特征在于:所述存儲(chǔ)模塊(3)存儲(chǔ)的鍵 值對(duì)的鍵頭部包括時(shí)間戳、主機(jī)名和流水號(hào),所述時(shí)間戳為將磁盤(pán)上的文件拆分為數(shù)據(jù)塊 時(shí)所在主機(jī)的時(shí)間,所述主機(jī)名為將磁盤(pán)上的文件拆分為數(shù)據(jù)塊時(shí)所在主機(jī)的主機(jī)名,所 述流水號(hào)用于記錄每一個(gè)數(shù)據(jù)塊的序號(hào)。
9. 根據(jù)權(quán)利要求7所述的分布式文件系統(tǒng),其特征在于:所述查詢修改模塊(5)中文 件訪問(wèn)請(qǐng)求具體為文件創(chuàng)建請(qǐng)求、文件復(fù)寫(xiě)請(qǐng)求或者文件刪除請(qǐng)求。
【文檔編號(hào)】G06F17/30GK104331453SQ201410601171
【公開(kāi)日】2015年2月4日 申請(qǐng)日期:2014年10月30日 優(yōu)先權(quán)日:2014年10月30日
【發(fā)明者】張奇?zhèn)? 申請(qǐng)人:北京思特奇信息技術(shù)股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
富平县| 西藏| 北川| 襄樊市| 广灵县| 台东市| 永川市| 梁平县| 宣城市| 永清县| 景东| 中宁县| 仙桃市| 仲巴县| 桑日县| 黄平县| 临澧县| 安吉县| 琼结县| 重庆市| 四平市| 临湘市| 崇义县| 临洮县| 大港区| 无锡市| 宁海县| 镇平县| 登封市| 兖州市| 正宁县| 肥乡县| 广德县| 遵义市| 龙游县| 墨江| 肇东市| 长岭县| 海原县| 盐源县| 东城区|