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

一種小文件的存取方法、系統(tǒng)及控制節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的制作方法

文檔序號(hào):7776722閱讀:165來(lái)源:國(guó)知局
一種小文件的存取方法、系統(tǒng)及控制節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的制作方法
【專利摘要】本發(fā)明適用于云存儲(chǔ)【技術(shù)領(lǐng)域】,提供了一種小文件的存取方法、系統(tǒng)及控制節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn),所述方法包括:控制節(jié)點(diǎn)根據(jù)客戶端發(fā)送的創(chuàng)建小文件命令創(chuàng)建一個(gè)新的聚合文件或者從聚合文件列表中選擇一個(gè)已有的聚合文件,同時(shí)根據(jù)所述聚合文件的屬性信息先生成小文件的序號(hào),再生成小文件的標(biāo)識(shí)以及用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送寫小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)該指令將小文件的數(shù)據(jù)寫入相應(yīng)的文件塊,并將小文件的數(shù)據(jù)在文件塊中的起始位置和小文件的長(zhǎng)度寫入文件塊的索引區(qū)域。本發(fā)明,后續(xù)支持對(duì)于小文件的修改、刪除、鎖定、解鎖等功能,并且可以提升檢索海量小文件時(shí)的性能。
【專利說(shuō)明】一種小文件的存取方法、系統(tǒng)及控制節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于云存儲(chǔ)【技術(shù)領(lǐng)域】,尤其涉及一種小文件的存取方法、系統(tǒng)及控制節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)。
【背景技術(shù)】
[0002]隨著云計(jì)算、云存儲(chǔ)技術(shù)的廣泛發(fā)展和應(yīng)用,如何存儲(chǔ)海量(幾十億)小文件(幾十kB到幾MB的圖片,文檔等)成為分布式文件系統(tǒng)應(yīng)用的難題。
[0003]現(xiàn)有的分布式文件系統(tǒng),如Hadoop分布式文件系統(tǒng)(Hadoop Distributed FileSystem,HDFS)在存儲(chǔ)海量小文件時(shí)有著巨大的缺陷,由于HDFS的namenode (主節(jié)點(diǎn))內(nèi)存的限制,通常IOOw個(gè)文件需要至少3GB的內(nèi)存空間,因此,HDFS無(wú)法存儲(chǔ)和管理十億級(jí)別的文件。HDFS也提供HAR FILE和Sequence FILE的模式來(lái)緩解該問題,但是這兩種存儲(chǔ)方式都是通過(guò)特定的命令,將已經(jīng)存儲(chǔ)的文件轉(zhuǎn)換為這兩種存儲(chǔ)方式,由于存儲(chǔ)結(jié)構(gòu)的問題,無(wú)法支持對(duì)于小文件的修改,刪除,鎖定,解鎖功能,同時(shí)檢索海量小文件時(shí)的性能也有待提升。

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

[0004]本發(fā)明實(shí)施例提供了一種小文件的存取方法、系統(tǒng)及控制節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn),旨在解決現(xiàn)有技術(shù)提供的文件的存取方法,無(wú)法支持對(duì)于小文件的修改、刪除、鎖定、解鎖等功能,并且檢索海量小文件時(shí)的性能也有待提升的問題。
[0005]一方面,提供一種一種小文件的存取方法,所述方法包括:
[0006]控制節(jié)點(diǎn)接收客戶端發(fā)送的創(chuàng)建小文件命令;
[0007]控制節(jié)點(diǎn)根據(jù)所述創(chuàng)建小文件命令創(chuàng)建一個(gè)新的聚合文件或者從聚合文件列表中選擇一個(gè)已有的聚合文件,同時(shí)根據(jù)所述聚合文件的屬性信息生成所述小文件在所述聚合文件中的序號(hào);
[0008]控制節(jié)點(diǎn)根據(jù)所述聚合文件的屬性信息以及所述小文件在所述聚合文件中的序號(hào)生成所述小文件的標(biāo)識(shí)以及用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送至客戶端,客戶端根據(jù)用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送寫小文件指令,由所述存儲(chǔ)節(jié)點(diǎn)根據(jù)所述寫小文件指令將所述小文件的數(shù)據(jù)寫入相應(yīng)的文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域。
[0009]進(jìn)一步地,所述聚合文件的屬性信息中包括聚合文件的標(biāo)識(shí)和聚合文件的存儲(chǔ)塊列表,所述存儲(chǔ)塊列表包括聚合文件中的每個(gè)文件塊的序號(hào)、每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù)以及存儲(chǔ)每個(gè)文件塊的存儲(chǔ)節(jié)點(diǎn)的信息。
[0010]進(jìn)一步地,所述控制節(jié)點(diǎn)根據(jù)所述聚合文件的屬性信息以及所述小文件在所述聚合文件中的序號(hào)生成所述小文件的標(biāo)識(shí)以及用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息包括:
[0011]控制節(jié)點(diǎn)根據(jù)所述聚合文件的標(biāo)識(shí)以及所述小文件在所述聚合文件中的序號(hào)生成所述小文件的標(biāo)識(shí);
[0012]控制節(jié)點(diǎn)根據(jù)所述小文件在所述聚合文件中的序號(hào)以及每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù),計(jì)算得到用于存儲(chǔ)所述小文件的文件塊的序號(hào);
[0013]控制節(jié)點(diǎn)根據(jù)所述用于存儲(chǔ)所述小文件的文件塊的序號(hào)以及用于存儲(chǔ)每個(gè)文件塊的存儲(chǔ)節(jié)點(diǎn)的信息得到用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息。
[0014]進(jìn)一步地,所述存儲(chǔ)節(jié)點(diǎn)根據(jù)所述寫小文件指令將所述小文件的數(shù)據(jù)寫入相應(yīng)的文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域包括:
[0015]存儲(chǔ)節(jié)點(diǎn)從所述寫小文件指令中提取出所述小文件的標(biāo)識(shí);
[0016]存儲(chǔ)節(jié)點(diǎn)根據(jù)所述小文件的標(biāo)識(shí)得到存儲(chǔ)所述小文件的聚合文件的標(biāo)識(shí)以及所述小文件在所述聚合文件中的序號(hào);
[0017]存儲(chǔ)節(jié)點(diǎn)根據(jù)所述小文件在所述聚合文件中的序號(hào)以及每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù),計(jì)算得到用于存儲(chǔ)所述小文件的文件塊的序號(hào);
[0018]存儲(chǔ)節(jié)點(diǎn)將所述小文件的數(shù)據(jù)寫入所述文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域。
[0019]進(jìn)一步地,在所述控制節(jié)點(diǎn)根據(jù)所述聚合文件的屬性信息以及所述小文件在所述聚合文件中的序號(hào)生成所述小文件的標(biāo)識(shí)以及用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送至客戶端,客戶端根據(jù)用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送寫小文件指令,由所述存儲(chǔ)節(jié)點(diǎn)根據(jù)所述寫小文件指令將所述小文件的數(shù)據(jù)寫入相應(yīng)的文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域之后,所述方法還包括:
[0020]控制節(jié)點(diǎn)接收客戶端發(fā)送的修改小文件指令;
[0021]控制節(jié)點(diǎn)根據(jù)所述修改小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送修改小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)所述修改小文件指令在用于在存儲(chǔ)所述小文件的文件塊的末尾插入所述小文件的修改數(shù)據(jù),同時(shí)在所述文件塊的索引區(qū)域中,將所述小文件的數(shù)據(jù)在文件塊中的起始位置更新為所述修改數(shù)據(jù)的起始存儲(chǔ)位置,并將所述小文件的長(zhǎng)度更新為所述修改數(shù)據(jù)的長(zhǎng)度。
[0022]進(jìn)一步地,在所述控制節(jié)點(diǎn)根據(jù)所述聚合文件的屬性信息以及所述小文件在所述聚合文件中的序號(hào)生成所述小文件的標(biāo)識(shí)以及用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送至客戶端,客戶端根據(jù)用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送寫小文件指令,由所述存儲(chǔ)節(jié)點(diǎn)根據(jù)所述寫小文件指令將所述小文件的數(shù)據(jù)寫入相應(yīng)的文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域之后,所述方法還包括:
[0023]控制節(jié)點(diǎn)接收客戶端發(fā)送的讀取小文件指令;
[0024]控制節(jié)點(diǎn)根據(jù)所述讀取小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送讀取小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)所述讀取小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索弓丨,再讀取索引中存儲(chǔ)的該小文件的起始位置和長(zhǎng)度信息,最后根據(jù)所述起始位置和長(zhǎng)度信息讀取對(duì)應(yīng)的數(shù)據(jù)。
[0025]進(jìn)一步地,在所述控制節(jié)點(diǎn)根據(jù)所述聚合文件的屬性信息以及所述小文件在所述聚合文件中的序號(hào)生成所述小文件的標(biāo)識(shí)以及用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送至客戶端,客戶端根據(jù)用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送寫小文件指令,由所述存儲(chǔ)節(jié)點(diǎn)根據(jù)所述寫小文件指令將所述小文件的數(shù)據(jù)寫入相應(yīng)的文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域之后,所述方法還包括:
[0026]控制節(jié)點(diǎn)接收客戶端發(fā)送的刪除小文件指令;
[0027]控制節(jié)點(diǎn)根據(jù)所述刪除小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送刪除小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)該刪除小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,將索引中的小文件狀態(tài)修改為刪除狀態(tài)。
[0028]進(jìn)一步地,在所述控制節(jié)點(diǎn)根據(jù)所述刪除小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送刪除小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)該刪除小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,將索引中的小文件狀態(tài)修改為刪除狀態(tài)之后,所述方法還包括:
[0029]控制節(jié)點(diǎn)統(tǒng)計(jì)聚合文件的所有文件塊中的有效數(shù)據(jù)比率,對(duì)于有效數(shù)據(jù)比率低于給定比率的文件塊,讀取存儲(chǔ)該文件塊的存儲(chǔ)節(jié)點(diǎn)的信息;
[0030]控制節(jié)點(diǎn)向?qū)?yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送垃圾回收和清盤文件塊命令,由相應(yīng)的存儲(chǔ)節(jié)點(diǎn)根據(jù)該命令將所有有效數(shù)據(jù)合并,生成新的聚合文件。
[0031]另一方面,提供一種控制節(jié)點(diǎn),所述控制節(jié)點(diǎn)包括:
[0032]創(chuàng)建文件指令接收單元,用于接收客戶端發(fā)送的創(chuàng)建小文件命令;
[0033]小文件序號(hào)生成單元,用于根據(jù)所述創(chuàng)建小文件命令創(chuàng)建一個(gè)新的聚合文件或者從聚合文件列表中選擇一個(gè)已有的聚合文件,同時(shí)根據(jù)所述聚合文件的屬性信息生成所述小文件在所述聚合文件中的序號(hào);
[0034]標(biāo)識(shí)和存儲(chǔ)節(jié)點(diǎn)信息生成單元,用于根據(jù)所述聚合文件的屬性信息以及所述小文件在所述聚合文件中的序號(hào)生成所述小文件的標(biāo)識(shí)以及用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送至客戶端,客戶端根據(jù)用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送寫小文件指令,由所述存儲(chǔ)節(jié)點(diǎn)根據(jù)所述寫小文件指令將所述小文件的數(shù)據(jù)寫入相應(yīng)的文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域。
[0035]進(jìn)一步地,所述聚合文件的屬性信息中包括聚合文件的標(biāo)識(shí)和聚合文件的存儲(chǔ)塊列表,所述存儲(chǔ)塊列表包括聚合文件中的每個(gè)文件塊的序號(hào)、每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù)以及存儲(chǔ)每個(gè)文件塊的存儲(chǔ)節(jié)點(diǎn)的信息。
[0036]進(jìn)一步地,所述標(biāo)識(shí)和存儲(chǔ)節(jié)點(diǎn)信息生成單元包括:
[0037]小文件標(biāo)識(shí)生成模塊,用于根據(jù)所述聚合文件的標(biāo)識(shí)以及所述小文件在所述聚合文件中的序號(hào)生成所述小文件的標(biāo)識(shí);
[0038]文件塊序號(hào)生成模塊,用于根據(jù)所述小文件在所述聚合文件中的序號(hào)以及每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù),計(jì)算得到用于存儲(chǔ)所述小文件的文件塊的序號(hào);[0039]存儲(chǔ)節(jié)點(diǎn)信息獲取模塊,用于根據(jù)所述用于存儲(chǔ)所述小文件的文件塊的序號(hào)以及用于存儲(chǔ)每個(gè)文件塊的存儲(chǔ)節(jié)點(diǎn)的信息得到用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息。
[0040]進(jìn)一步地,在所述控制節(jié)點(diǎn)還包括:
[0041]修改小文件指令接收單元,用于接收客戶端發(fā)送的修改小文件指令;
[0042]小文件修改單元,用于根據(jù)所述修改小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送修改小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)所述修改小文件指令在用于在存儲(chǔ)所述小文件的文件塊的末尾插入所述小文件的修改數(shù)據(jù),同時(shí)在所述文件塊的索引區(qū)域中,將所述小文件的數(shù)據(jù)在文件塊中的起始位置更新為所述修改數(shù)據(jù)的起始存儲(chǔ)位置,并將所述小文件的長(zhǎng)度更新為所述修改數(shù)據(jù)的長(zhǎng)度;
[0043]讀取小文件指令接收單元,用于接收客戶端發(fā)送的讀取小文件指令;
[0044]小文件讀取單元,用于根據(jù)所述讀取小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送讀取小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)所述讀取小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,再讀取索引中存儲(chǔ)的該小文件的起始位置和長(zhǎng)度信息,最后根據(jù)所述起始位置和長(zhǎng)度信息讀取對(duì)應(yīng)的數(shù)據(jù);
[0045]刪除小文件指令接收單元,用于接收客戶端發(fā)送的刪除小文件指令;
[0046]小文件刪除單元,用于根據(jù)所述刪除小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送刪除小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)該刪除小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,將索引中的小文件狀態(tài)修改為刪除狀態(tài);
[0047]存儲(chǔ)節(jié)點(diǎn)信息讀取單元,用于統(tǒng)計(jì)聚合文件的所有文件塊中的有效數(shù)據(jù)比率,對(duì)于有效數(shù)據(jù)比率低于給定比率的文件塊,讀取存儲(chǔ)該文件塊的存儲(chǔ)節(jié)點(diǎn)的信息;
[0048]新的聚合文件生成單元,用于向?qū)?yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送垃圾回收和清盤文件塊命令,由相應(yīng)的存儲(chǔ)節(jié)點(diǎn)根據(jù)該命令將所有有效數(shù)據(jù)合并,生成新的聚合文件。
[0049]再一方面,提供一種存儲(chǔ)節(jié)點(diǎn),所述存儲(chǔ)節(jié)點(diǎn)包括:
[0050]寫小文件指令接收單元,用于接收客戶端發(fā)送的寫小文件指令;
[0051]數(shù)據(jù)寫入單元,用于根據(jù)所述寫小文件指令將所述小文件的數(shù)據(jù)寫入相應(yīng)的文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域;
[0052]進(jìn)一步地,所述數(shù)據(jù)寫入單元包括:
[0053]小文件的標(biāo)識(shí)獲取模塊,用于從所述寫小文件指令中提取出所述小文件的標(biāo)識(shí);
[0054]小文件序號(hào)獲取模塊,用于根據(jù)所述小文件的標(biāo)識(shí)得到存儲(chǔ)所述小文件的聚合文件的標(biāo)識(shí)以及所述小文件在所述聚合文件中的序號(hào);
[0055]文件塊序號(hào)獲取模塊,用于根據(jù)所述小文件在所述聚合文件中的序號(hào)以及每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù),計(jì)算得到用于存儲(chǔ)所述小文件的文件塊的序號(hào);
[0056]數(shù)據(jù)寫入模塊,用于將所述小文件的數(shù)據(jù)寫入所述文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域。
[0057]進(jìn)一步地,所述存儲(chǔ)節(jié)點(diǎn)還包括:[0058]修改小文件指令接收單元,用于接收客戶端發(fā)送的修改小文件指令;
[0059]文件修改單元,用于根據(jù)所述修改小文件指令在用于在存儲(chǔ)所述小文件的文件塊的末尾插入所述小文件的修改數(shù)據(jù),同時(shí)在所述文件塊的索引區(qū)域中,將所述小文件的數(shù)據(jù)在文件塊中的起始位置更新為所述修改數(shù)據(jù)的起始存儲(chǔ)位置,并將所述小文件的長(zhǎng)度更新為所述修改數(shù)據(jù)的長(zhǎng)度;
[0060]讀取小文件指令接收單元,用于接收客戶端發(fā)送的讀取小文件指令;
[0061]小文件讀取單元,用于根據(jù)所述讀取小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,再讀取索引中存儲(chǔ)的該小文件的起始位置和長(zhǎng)度信息,最后根據(jù)所述起始位置和長(zhǎng)度信息讀取對(duì)應(yīng)的數(shù)據(jù);
[0062]刪除小文件指令接收單元,用于接收客戶端發(fā)送的刪除小文件指令;
[0063]小文件刪除單元,用于根據(jù)所述刪除小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,將索引中的小文件狀態(tài)修改為刪除狀態(tài);
[0064]垃圾回收和清盤文件塊命令接收單元,用于接收控制節(jié)點(diǎn)發(fā)送的垃圾回收和清盤文件塊命令;
[0065]新的聚合文件生成單元,用于根據(jù)所述命令將所有有效數(shù)據(jù)合并,生成新的聚合文件。
[0066]再一方面,提供一種小文件的存取系統(tǒng),所述系統(tǒng)包括客戶端、如上所述的控制節(jié)點(diǎn)和如上所述的存儲(chǔ)節(jié)點(diǎn),所述控制節(jié)點(diǎn)與至少一個(gè)存儲(chǔ)節(jié)點(diǎn)連接,所述客戶端分別與所述控制節(jié)點(diǎn)和所述存儲(chǔ)節(jié)點(diǎn)連接。
[0067]在本發(fā)明實(shí)施例,將小文件存儲(chǔ)在聚合文件的文件塊中,小文件的索引存儲(chǔ)在聚合文件的文件塊中,無(wú)需外部索引,小文件的索引和數(shù)據(jù)是融合在聚合文件的一個(gè)文件塊中,將云存儲(chǔ)系統(tǒng)帶來(lái)的數(shù)據(jù)一致性、容錯(cuò)性等特性能完美體現(xiàn),使用簡(jiǎn)單、方便;而如果采用外部索引的方式,由于小文件的索引文件和數(shù)據(jù)文件是分開存儲(chǔ)的,則必須另外涉及一個(gè)外部程序,通過(guò)該外部程序來(lái)保證索引文件和數(shù)據(jù)文件的一致性等特性。另外,小文件的標(biāo)識(shí)可以用聚合文件的標(biāo)識(shí)與小文件在聚合文件中的序號(hào)來(lái)進(jìn)行唯一標(biāo)識(shí),后續(xù),對(duì)小文件進(jìn)行修改、刪除、鎖定、解鎖或者訪問小文件時(shí),可以直接通過(guò)該小文件標(biāo)識(shí)來(lái)獲取小文件所在的文件塊,進(jìn)而通過(guò)對(duì)該文件塊進(jìn)行操作可以實(shí)現(xiàn)。
【專利附圖】

【附圖說(shuō)明】
[0068]圖1是本發(fā)明實(shí)施例一提供的小文件的存取方法的實(shí)現(xiàn)流程圖;
[0069]圖2是本發(fā)明實(shí)施例一提供的整個(gè)文件的整體結(jié)構(gòu)示意圖;
[0070]圖3是本發(fā)明實(shí)施例一提供的文件塊的結(jié)構(gòu)示意圖;
[0071]圖4是本發(fā)明實(shí)施例二提供的小文件的修改方法的實(shí)現(xiàn)流程圖;
[0072]圖5是本發(fā)明實(shí)施例三提供的小文件的訪問方法的實(shí)現(xiàn)流程圖;
[0073]圖6是本發(fā)明實(shí)施例四提供的小文件的刪除方法的實(shí)現(xiàn)流程圖;
[0074]圖7是本發(fā)明實(shí)施例二提供的修改小文件后的文件塊的結(jié)構(gòu)變化示意圖;
[0075]圖8是本發(fā)明實(shí)施例五提供的聚合文件的清盤方法的實(shí)現(xiàn)流程圖;
[0076]圖9是本發(fā)明實(shí)施例六提供的控制節(jié)點(diǎn)的具體結(jié)構(gòu)框圖;
[0077]圖10是本發(fā)明實(shí)施例七提供的存儲(chǔ)節(jié)點(diǎn)的具體結(jié)構(gòu)框圖;[0078]圖11是本發(fā)明實(shí)施例八提供的小文件的存取系統(tǒng)的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0079]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0080]在本發(fā)明實(shí)施例中,將小文件存儲(chǔ)在聚合文件的文件塊中,小文件的索引存儲(chǔ)在聚合文件的文件塊中,無(wú)需外部索引,小文件的索引和數(shù)據(jù)是融合在聚合文件的一個(gè)文件塊中,將云存儲(chǔ)系統(tǒng)帶來(lái)的數(shù)據(jù)一致性、容錯(cuò)性等特性能完美體現(xiàn),使用簡(jiǎn)單、方便;而如果采用外部索引的方式,由于小文件的索引文件和數(shù)據(jù)文件是分開存儲(chǔ)的,則必須另外涉及一個(gè)外部程序,通過(guò)該外部程序來(lái)保證索引文件和數(shù)據(jù)文件的一致性等特性。
[0081]以下結(jié)合具體實(shí)施例對(duì)本發(fā)明的實(shí)現(xiàn)進(jìn)行詳細(xì)描述:
[0082]實(shí)施例一
[0083]圖1示出了本發(fā)明實(shí)施例一提供的小文件的存取方法的實(shí)現(xiàn)流程,以控制節(jié)點(diǎn)側(cè)為例進(jìn)行說(shuō)明,詳述如下:
[0084]在步驟SlOl中,控制節(jié)點(diǎn)接收客戶端發(fā)送的創(chuàng)建小文件命令。
[0085]在本發(fā)明實(shí)施例中,控制節(jié)點(diǎn)接收客戶端發(fā)送的創(chuàng)建小文件命令,該命令中包括該小文件的復(fù)制份數(shù),根據(jù)該復(fù)制份數(shù),控制節(jié)點(diǎn)可以將該小文件分布式存儲(chǔ)于與復(fù)制份數(shù)個(gè)數(shù)相同的至少兩個(gè)存儲(chǔ)節(jié)點(diǎn)中。
[0086]需要說(shuō)明的是,本實(shí)施例提供的文件的存儲(chǔ)方法適用于分布式文件系統(tǒng)(SkyDistributed File System, SDFS),該分布式文件系統(tǒng)中包括控制節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)兩部分,一個(gè)控制節(jié)點(diǎn)可以連接至少一個(gè)存儲(chǔ)節(jié)點(diǎn)。其中,控制節(jié)點(diǎn)存儲(chǔ)所有文件的屬性信息,存儲(chǔ)節(jié)點(diǎn)中的各個(gè)文件塊用于存放聚合文件的數(shù)據(jù)信息,小文件通過(guò)特定的結(jié)構(gòu)合并存儲(chǔ)在聚合文件中。整個(gè)文件的整體結(jié)構(gòu)如圖2所示,其中,控制節(jié)點(diǎn)中包括聚合文件的屬性信息,比如聚合文件的文件標(biāo)識(shí)id、聚合文件的文件塊列表BlockSize以及聚合文件的文件類型Type,具體的,BlockSize中包括文件塊blockl, block2等等,直至blockn ;存儲(chǔ)節(jié)點(diǎn)I中存儲(chǔ)有blockl, block2,其中blockl中存儲(chǔ)的小文件是Xxx.rar, block2中存儲(chǔ)的小文件是Xxx.doc ;文件塊blockn存儲(chǔ)在存儲(chǔ)節(jié)點(diǎn)2中,blockn中存儲(chǔ)的小文件是Xxx.jpg。
[0087]在步驟S102中,控制節(jié)點(diǎn)根據(jù)接收到的創(chuàng)建小文件命令創(chuàng)建一個(gè)新的聚合文件或者從聚合文件列表中選擇一個(gè)已有的聚合文件,同時(shí)根據(jù)該聚合文件的屬性信息生成小文件在該聚合文件中的序號(hào)。
[0088]在本發(fā)明實(shí)施例中,控制節(jié)點(diǎn)中存儲(chǔ)有一個(gè)聚合文件列表,在該列表中保存有存儲(chǔ)節(jié)點(diǎn)中存儲(chǔ)的每個(gè)聚合文件的文件標(biāo)識(shí)i d。
[0089]如果該列表為空,則控制節(jié)點(diǎn)創(chuàng)建一個(gè)新的聚合文件,并生成該新的聚合文件的屬性信息,同時(shí)設(shè)置該小文件在該新的聚合文件中的序號(hào)為1,當(dāng)然,也可以為0,在此不做限制。
[0090]如果該列表不為空,則控制節(jié)點(diǎn)從該列表中選擇一個(gè)已有的聚合文件,同時(shí)設(shè)置該小文件在該聚合文件中的序號(hào)為該聚合文件中的已經(jīng)存儲(chǔ)的小文件的序號(hào)加I。
[0091]具體的,聚合文件的屬性信息中存儲(chǔ)有聚合文件中的文件塊的個(gè)數(shù)以及每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù),根據(jù)這些信息即可得到聚合文件中的小文件的個(gè)數(shù),繼而得到將要?jiǎng)?chuàng)建的小文件的序號(hào)。當(dāng)然,屬性信息中也可以包括當(dāng)前聚合文件中最大的小文件序號(hào),將要?jiǎng)?chuàng)建的小文件的序號(hào)為當(dāng)前最大的小文件序號(hào)加1,具體方式在此不再限制。
[0092]具體的,控制節(jié)點(diǎn)中存儲(chǔ)有聚合文件的屬性信息,屬性信息中包括每個(gè)聚合文件的文件標(biāo)識(shí)id、聚合文件的文件塊列表BlockSize以及聚合文件的文件類型Type。
[0093]其中,聚合文件的文件標(biāo)識(shí)id用于唯一標(biāo)識(shí)一個(gè)聚合文件,通過(guò)聚合文件的標(biāo)識(shí)可以獲取到相應(yīng)的聚合文件;
[0094]BlockSize中包括聚合文件中的每個(gè)文件塊的標(biāo)識(shí)、每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù)以及存儲(chǔ)每個(gè)文件塊的存儲(chǔ)節(jié)點(diǎn)的信息;
[0095]Type用于標(biāo)識(shí)聚合文件的類型,本實(shí)施例中用3bit來(lái)進(jìn)行文件類型的標(biāo)識(shí),“I”代表該文件為聚合文件。[0096]小文件沒有單獨(dú)的文件屬性,但是有唯一的64bit的文件標(biāo)識(shí)id,該文件標(biāo)識(shí)id包括聚合文件id標(biāo)示、聚合文件的標(biāo)識(shí)id和小文件序號(hào)(小文件在聚合文件中的序號(hào))三部分,如下所示:
[0097]000 I 0000…0000 I 00…00
[0098]3bit 44b it 17bit
[0099]其中,3bit的聚合文件id標(biāo)示,“I”代表該64bit的文件標(biāo)識(shí)id為聚合文件id,“O”代表該64bit的文件標(biāo)識(shí)id為小文件的標(biāo)識(shí)id ;
[0100]44bit(6byte)為小文件所在的聚合文件的id ;
[0101]17bit表示小文件在聚合文件中的序號(hào)。
[0102]其中,在存儲(chǔ)節(jié)點(diǎn)中,具體的文件塊的結(jié)構(gòu)有所不同,普通文件的具體文件塊只是該文件的某段數(shù)據(jù),聚合文件的每個(gè)文件塊中由于包含多個(gè)小文件,因此需要采取一定的結(jié)構(gòu)支持讀取該文件塊中的某個(gè)小文件,文件塊的結(jié)構(gòu)可以參見圖3,包括索引段數(shù)據(jù)和文件數(shù)據(jù)兩部分。
[0103]其中,索引段數(shù)據(jù)包括Head和索引區(qū)域,索引區(qū)域用于存儲(chǔ)文件塊中的每一個(gè)小文件對(duì)應(yīng)的索引,一個(gè)小文件唯一對(duì)應(yīng)一個(gè)索引。
[0104]Head (4byte):用于存放索引區(qū)域中存儲(chǔ)的索引的個(gè)數(shù);
[0105]索引區(qū)域的大小是:Head中存儲(chǔ)的索引的個(gè)數(shù)*每個(gè)索引的大小(lObyte)。
[0106]在創(chuàng)建聚合文件的文件塊時(shí),先為文件塊中的每一個(gè)小文件建立一個(gè)對(duì)應(yīng)的索弓丨,每個(gè)索引中包含該小文件在文件塊中的起始o(jì)ffset (5byte,文件塊最大1TB),小文件長(zhǎng)度length (4byte,單個(gè)小文件最大4G),當(dāng)然,索引中也可以包括小文件狀態(tài)(lbyte,標(biāo)記小文件是否被刪除、鎖定等文件狀態(tài)),雖然在圖3中未注明。
[0107]通過(guò)小文件在聚合文件中的序號(hào)(簡(jiǎn)稱小文件序號(hào))可以直接計(jì)算出小文件對(duì)應(yīng)的索引所在位置,具體計(jì)算公式如下:
[0108]索引的位置=小文件序號(hào)/每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù)*每個(gè)索引的大小(IObyte) +4 (head中當(dāng)前存儲(chǔ)的小文件的個(gè)數(shù))。
[0109]索引段數(shù)據(jù)之后存儲(chǔ)的是文件數(shù)據(jù),因?yàn)槊總€(gè)文件塊中存儲(chǔ)的小文件的大小是不固定的,而在一個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù)是固定的,因此聚合文件的每個(gè)文件塊的大小是不固定的。[0110]在步驟S103中,控制節(jié)點(diǎn)根據(jù)聚合文件的屬性信息以及小文件在聚合文件中的序號(hào)生成小文件的標(biāo)識(shí)以及用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送至客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送寫小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)寫小文件指令將小文件的數(shù)據(jù)寫入相應(yīng)的文件塊,并將該小文件的數(shù)據(jù)在文件塊中的起始位置和該小文件的長(zhǎng)度寫入該文件塊的索引區(qū)域。
[0111]在本發(fā)明實(shí)施例中,控制節(jié)點(diǎn)通過(guò)步驟S102得到小文件所在的聚合文件的標(biāo)識(shí)以及所述小文件在所述聚合文件中的序號(hào)后,根據(jù)小文件的文件標(biāo)識(shí)的結(jié)構(gòu)即可得到小文件的標(biāo)識(shí)。
[0112]存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息可以通過(guò)下述步驟獲得:
[0113]步驟1、控制節(jié)點(diǎn)根據(jù)小文件在聚合文件中的序號(hào)以及每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù),計(jì)算得到用于存儲(chǔ)小文件的文件塊的序號(hào)。
[0114]步驟2、控制節(jié)點(diǎn)根據(jù)用于存儲(chǔ)小文件的文件塊的序號(hào)以及用于存儲(chǔ)每個(gè)文件塊的存儲(chǔ)節(jié)點(diǎn)的信息得到用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息。
[0115]控制節(jié)點(diǎn)得到小文件的標(biāo)識(shí)以及用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息后,發(fā)送這些
信息至客戶端。
[0116]客戶端根據(jù)其中的用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送寫小文件指令,存儲(chǔ)節(jié)點(diǎn)接收到客戶端發(fā)發(fā)送的寫小文件指令后,先從該寫小文件指令中提取出小文件的標(biāo)識(shí),再根據(jù)小文件的標(biāo)識(shí)得到存儲(chǔ)該小文件的聚合文件的標(biāo)識(shí)以及該小文件在聚合文件中的序號(hào),然后根據(jù)該小文件在聚合文件中的序號(hào)以及聚合文件中的每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù),計(jì)算得到用于存儲(chǔ)該小文件的文件塊的序號(hào),最后將該小文件的數(shù)據(jù)寫入對(duì)應(yīng)的文件塊,并將該小文件的數(shù)據(jù)在文件塊中的起始位置offset和該小文件的長(zhǎng)度length寫入該文件塊的索引區(qū)域。
[0117]其中,文件塊的序號(hào)=小文件序號(hào)/每個(gè)文件塊存儲(chǔ)小文件的個(gè)數(shù)。
[0118]作為本發(fā)明的一個(gè)優(yōu)選實(shí)施例,在存儲(chǔ)節(jié)點(diǎn)接收到客戶端發(fā)送的寫小文件指令之前,存儲(chǔ)節(jié)點(diǎn)還可以接收控制節(jié)點(diǎn)發(fā)送的分配文件塊操作權(quán)限指令,向存儲(chǔ)節(jié)點(diǎn)分配文件塊操作權(quán)限,本實(shí)施例中,分配的文件塊操作權(quán)限是寫文件權(quán)限。
[0119]本實(shí)施例,將小文件存儲(chǔ)在聚合文件的文件塊中,小文件的索引存儲(chǔ)在聚合文件的文件塊中,無(wú)需外部索引,小文件的索引和數(shù)據(jù)是融合在聚合文件的一個(gè)文件塊中,將云存儲(chǔ)系統(tǒng)帶來(lái)的數(shù)據(jù)一致性、容錯(cuò)性等特性能完美體現(xiàn),使用簡(jiǎn)單、方便;而如果采用外部索引的方式,由于小文件的索引文件和數(shù)據(jù)文件是分開存儲(chǔ)的,則必須另外涉及一個(gè)外部程序,通過(guò)該外部程序來(lái)保證索引文件和數(shù)據(jù)文件的一致性等特性。
[0120]另外,小文件的標(biāo)識(shí)可以用聚合文件的標(biāo)識(shí)與小文件在聚合文件中的序號(hào)來(lái)進(jìn)行唯一標(biāo)識(shí),后續(xù),對(duì)小文件進(jìn)行修改、刪除、鎖定、解鎖或者訪問小文件時(shí),可以直接通過(guò)該小文件標(biāo)識(shí)來(lái)獲取小文件所在的文件塊,進(jìn)而通過(guò)對(duì)該文件塊進(jìn)行操作可以實(shí)現(xiàn)。
[0121]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述各實(shí)施例方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,相應(yīng)的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,所述的存儲(chǔ)介質(zhì),如R0M/RAM、磁盤或光盤等。
[0122]實(shí)施例二
[0123]圖4示出了本發(fā)明實(shí)施例二提供的小文件的修改方法的實(shí)現(xiàn)流程,以控制節(jié)點(diǎn)側(cè)為例進(jìn)行說(shuō)明,詳述如下:
[0124]本實(shí)施例中的步驟均是在實(shí)施例一中的步驟S103之后執(zhí)行。
[0125]在步驟S401中,控制節(jié)點(diǎn)接收客戶端發(fā)送的修改小文件指令。
[0126]在本發(fā)明實(shí)施例中,控制節(jié)點(diǎn)接收客戶端發(fā)送的修改小文件指令,該指令中包括將要修改的小文件的文件標(biāo)識(shí)。
[0127]在步驟S402中,控制節(jié)點(diǎn)根據(jù)接收到的修改小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送修改小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)該修改小文件指令在用于在存儲(chǔ)該小文件的文件塊的末尾插入該小文件的修改數(shù)據(jù),同時(shí)在該文件塊的索引區(qū)域中,將該小文件的數(shù)據(jù)在文件塊中的起始位置更新為該修改數(shù)據(jù)的起始存儲(chǔ)位置,并將該小文件的長(zhǎng)度更新為該修改數(shù)據(jù)的長(zhǎng)度。
[0128]在本發(fā)明實(shí)施例中,控制節(jié)點(diǎn)根據(jù)該小文件的文件標(biāo)識(shí)得到該小文件所在的聚合文件的標(biāo)識(shí)以及該小文件在該聚合文件中的序號(hào),再根據(jù)該聚合文件的標(biāo)識(shí)讀取該聚合文件的屬性信息,然后根據(jù)該屬性信息以及該小文件在該聚合文件中的序號(hào)得到該小文件所在的文件塊的序號(hào)以及用于存儲(chǔ)該文件塊的存儲(chǔ)節(jié)點(diǎn)的信息。
[0129]控制節(jié)點(diǎn)得到用于存儲(chǔ)該文件塊的存儲(chǔ)節(jié)點(diǎn)的信息后,發(fā)送該存儲(chǔ)節(jié)點(diǎn)的信息給客戶端。
[0130]客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送修改小文件指令,該修改小文件命令中包括將要修改的小文件的文件標(biāo)識(shí)、該小文件所在的文件塊的序號(hào),由存儲(chǔ)節(jié)點(diǎn)先根據(jù)該文件塊的序號(hào)找到對(duì)應(yīng)的文件塊以及該文件塊中存儲(chǔ)的小文件的索引,再在存儲(chǔ)該小文件的文件塊的末尾插入該小文件的修改數(shù)據(jù),同時(shí)在該文件塊的索引區(qū)域中,將該小文件的數(shù)據(jù)在文件塊中的起始位置更新為該修改數(shù)據(jù)的起始存儲(chǔ)位置,并將該小文件的長(zhǎng)度更新為該修改數(shù)據(jù)的長(zhǎng)度。修改小文件后的文件塊的結(jié)構(gòu)變化如圖7所示,其中,圖7中的I標(biāo)識(shí)客戶端向控制節(jié)點(diǎn)發(fā)送修改小文件指令并接收控制節(jié)點(diǎn)返回的用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,2表示控制節(jié)點(diǎn)向存儲(chǔ)節(jié)點(diǎn)分配文件塊操作權(quán)限,3表示客戶端想存儲(chǔ)節(jié)點(diǎn)發(fā)送修改小文件指令,4表示存儲(chǔ)節(jié)點(diǎn)根據(jù)該指令修改文件塊的結(jié)構(gòu)。
[0131 ] 本發(fā)明實(shí)施例中,采用在文件塊的末尾追加修改數(shù)據(jù)而不直接用修改數(shù)據(jù)覆蓋原數(shù)據(jù)的原因?yàn)?由于小文件的修改數(shù)據(jù)和原數(shù)據(jù)往往大小不一致,因此不能放在原數(shù)據(jù)所在的位置。采用在文件塊的末尾追加修改數(shù)據(jù)能很好的解決該問題,原先的小文件數(shù)據(jù)暫時(shí)放在原處,這段無(wú)用數(shù)據(jù)會(huì)在之后的小文件垃圾回收后合并掉。
[0132]作為本發(fā)明的一個(gè)優(yōu)選實(shí)施例,在存儲(chǔ)節(jié)點(diǎn)接收到客戶端發(fā)送的修改小文件指令之前,存儲(chǔ)節(jié)點(diǎn)還可以接收控制節(jié)點(diǎn)發(fā)送的分配文件塊操作權(quán)限指令,向存儲(chǔ)節(jié)點(diǎn)分配文件塊操作權(quán)限,本實(shí)施例中,分配的文件塊操作權(quán)限是修改文件權(quán)限。
[0133]本實(shí)施例,通過(guò)小文件的文件標(biāo)識(shí),可以小文件所在的文件塊的序號(hào),然后根據(jù)該序號(hào)找到對(duì)應(yīng)的文件塊以及該文件塊中存儲(chǔ)的小文件的索引,在該文件塊的末尾插入修改數(shù)據(jù),同時(shí)根據(jù)修改數(shù)據(jù)的存儲(chǔ)位置以及修改數(shù)據(jù)的長(zhǎng)度更新小文件的索引信息,實(shí)現(xiàn)了小文件數(shù)據(jù)的修改。
[0134]實(shí)施例三[0135]圖5示出了本發(fā)明實(shí)施例三提供的小文件的訪問方法的實(shí)現(xiàn)流程,以控制節(jié)點(diǎn)側(cè)為例進(jìn)行說(shuō)明,詳述如下:
[0136]本實(shí)施例中的步驟均是在實(shí)施例一中的步驟S103之后執(zhí)行。
[0137]在步驟S501中,控制節(jié)點(diǎn)接收客戶端發(fā)送的讀取小文件指令。
[0138]在本發(fā)明實(shí)施例中,控制節(jié)點(diǎn)接收客戶端發(fā)送的讀取小文件指令,該指令中包括將要讀取的小文件的文件標(biāo)識(shí)。
[0139]在步驟S502中,控制節(jié)點(diǎn)根據(jù)接收到的讀取小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送讀取小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)該讀取小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,再讀取索引中存儲(chǔ)的該小文件的起始位置和長(zhǎng)度信息,最后根據(jù)該起始位置和長(zhǎng)度信息讀取對(duì)應(yīng)的數(shù)據(jù)。
[0140]在本發(fā)明實(shí)施例中,控制節(jié)點(diǎn)根據(jù)該小文件的文件標(biāo)識(shí)得到該小文件所在的聚合文件的標(biāo)識(shí)以及該小文件在該聚合文件中的序號(hào),再根據(jù)該聚合文件的標(biāo)識(shí)讀取該聚合文件的屬性信息,然后根據(jù)該屬性信息以及該小文件在該聚合文件中的序號(hào)得到該小文件所在的文件塊的序號(hào)以及用于存儲(chǔ)該文件塊的存儲(chǔ)節(jié)點(diǎn)的信息。
[0141]控制節(jié)點(diǎn)得到用于存儲(chǔ)該文件塊的存儲(chǔ)節(jié)點(diǎn)的信息后,發(fā)送該存儲(chǔ)節(jié)點(diǎn)的信息給客戶端。
[0142]客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送讀取小文件指令,該讀取小文件命令中包括將要讀取的小文件的文件標(biāo)識(shí)、該小文件所在的文件塊的序號(hào),由存儲(chǔ)節(jié)點(diǎn)先根據(jù)該文件塊的序號(hào)找到對(duì)應(yīng)的文件塊以及該文件塊中存儲(chǔ)的小文件的索引,再讀取索引中存儲(chǔ)的該小文件的起始位置和長(zhǎng)度信息,最后根據(jù)該起始位置和長(zhǎng)度信息從文件數(shù)據(jù)區(qū)域讀取對(duì)應(yīng)的數(shù)據(jù)。
[0143]本實(shí)施例,通過(guò)小文件的文件標(biāo)識(shí),可以小文件所在的文件塊的序號(hào),然后根據(jù)該序號(hào)找到對(duì)應(yīng)的文件塊以及該文件塊中存儲(chǔ)的小文件的索引,再讀取索引中存儲(chǔ)的該小文件的起始位置和長(zhǎng)度信息,最后根據(jù)該起始位置和長(zhǎng)度信息讀取對(duì)應(yīng)的數(shù)據(jù),實(shí)現(xiàn)了小文件數(shù)據(jù)的讀取。
[0144]實(shí)施例四
[0145]圖6示出了本發(fā)明實(shí)施例四提供的小文件的刪除方法的實(shí)現(xiàn)流程,以控制節(jié)點(diǎn)側(cè)為例進(jìn)行說(shuō)明,詳述如下:
[0146]本實(shí)施例中的步驟均是在實(shí)施例一中的步驟S103之后執(zhí)行。
[0147]對(duì)于小文件的刪除功能,利用block中的文件塊的索引中的小文件狀態(tài)字段進(jìn)行記錄。
[0148]在步驟S601中,控制節(jié)點(diǎn)接收客戶端發(fā)送的刪除小文件指令。
[0149]在本發(fā)明實(shí)施例中,控制節(jié)點(diǎn)接收客戶端發(fā)送的刪除小文件指令,該指令中包括將要?jiǎng)h除的小文件的文件標(biāo)識(shí)。
[0150]在步驟S602中,控制節(jié)點(diǎn)根據(jù)接收到的刪除小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送刪除小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)該刪除小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,將索引中的小文件狀態(tài)修改為刪除狀態(tài)。[0151]在本發(fā)明實(shí)施例中,控制節(jié)點(diǎn)根據(jù)該小文件的文件標(biāo)識(shí)得到該小文件所在的聚合文件的標(biāo)識(shí)以及該小文件在該聚合文件中的序號(hào),再根據(jù)該聚合文件的標(biāo)識(shí)讀取該聚合文件的屬性信息,然后根據(jù)該屬性信息以及該小文件在該聚合文件中的序號(hào)得到該小文件所在的文件塊的序號(hào)以及用于存儲(chǔ)該文件塊的存儲(chǔ)節(jié)點(diǎn)的信息。
[0152]控制節(jié)點(diǎn)得到用于存儲(chǔ)該文件塊的存儲(chǔ)節(jié)點(diǎn)的信息后,發(fā)送該存儲(chǔ)節(jié)點(diǎn)的信息給客戶端。
[0153]客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送刪除小文件指令,該刪除小文件命令中包括將要?jiǎng)h除的小文件的文件標(biāo)識(shí)、該小文件所在的文件塊的序號(hào),由存儲(chǔ)節(jié)點(diǎn)先根據(jù)該文件塊的序號(hào)找到對(duì)應(yīng)的文件塊以及該文件塊中存儲(chǔ)的小文件的索引,將索引中的小文件狀態(tài)修改為刪除狀態(tài)。
[0154]作為本發(fā)明的一個(gè)優(yōu)選實(shí)施例,在存儲(chǔ)節(jié)點(diǎn)接收到客戶端發(fā)送的刪除小文件指令之前,存儲(chǔ)節(jié)點(diǎn)還可以接收控制節(jié)點(diǎn)發(fā)送的分配文件塊操作權(quán)限指令,向存儲(chǔ)節(jié)點(diǎn)分配文件塊操作權(quán)限,本實(shí)施例中,分配的文件塊操作權(quán)限是刪除文件權(quán)限。
[0155]本實(shí)施例,通過(guò)小文件的文件標(biāo)識(shí),可以小文件所在的文件塊的序號(hào),然后根據(jù)該序號(hào)找到對(duì)應(yīng)的文件塊以及該文件塊中存儲(chǔ)的小文件的索引,將索引中的小文件狀態(tài)修改為刪除狀態(tài),實(shí)現(xiàn)了小文件的刪除操作。
[0156]實(shí)施例五
[0157]圖8示出了本發(fā)明實(shí)施例五提供的聚合文件的清盤方法的實(shí)現(xiàn)流程,以控制節(jié)點(diǎn)側(cè)為例進(jìn)行說(shuō)明,詳述如下:
[0158]本實(shí)施例中的步驟均是在實(shí)施例四中的步驟S602之后執(zhí)行。
[0159]由于將大量小文件聚合存儲(chǔ)成大的聚合文件,實(shí)施例四中描述的小文件的刪除的結(jié)果僅僅是通過(guò)聚合文件的文件塊中對(duì)應(yīng)的小文件的索引的標(biāo)示符,小文件狀態(tài)修改為刪除狀態(tài)來(lái)實(shí)現(xiàn),并不實(shí)際刪除該小文件的數(shù)據(jù),因此需要在適當(dāng)?shù)臅r(shí)機(jī)進(jìn)行聚合文件的垃圾回收和清盤操作來(lái)壓縮合并文件塊。
[0160]在步驟S801中,控制節(jié)點(diǎn)統(tǒng)計(jì)聚合文件的所有文件塊中的有效數(shù)據(jù)比率,對(duì)于有效數(shù)據(jù)比率低于給定比率的文件塊,讀取存儲(chǔ)該文件塊的存儲(chǔ)節(jié)點(diǎn)的信息。
[0161]在本發(fā)明實(shí)施例中,有效數(shù)據(jù)比率等于已經(jīng)刪除的小文件個(gè)數(shù)/總的小文件個(gè)數(shù)。
[0162]對(duì)于有效數(shù)據(jù)比率低于給定比率的文件塊,進(jìn)行垃圾回收和清盤操作,并且刪除那些無(wú)有效數(shù)據(jù)的文件塊。
[0163]需要說(shuō)明的是,在步驟S801之前,控制節(jié)點(diǎn)還可以執(zhí)行:定時(shí)掃描在一定時(shí)間以前的聚合文件,并發(fā)起聚合文件垃圾回收和清盤功能。
[0164]在步驟S802中,控制節(jié)點(diǎn)向?qū)?yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送垃圾回收和清盤文件塊命令,由相應(yīng)的存儲(chǔ)節(jié)點(diǎn)根據(jù)該命令將所有有效數(shù)據(jù)合并,生成新的聚合文件。
[0165]在本發(fā)明實(shí)施例中,控制節(jié)點(diǎn)向有效數(shù)據(jù)比率低于給定比率的文件塊所在的存儲(chǔ)節(jié)點(diǎn)發(fā)起垃圾回收和清盤塊命令,由該存儲(chǔ)節(jié)點(diǎn)將所有有效數(shù)據(jù)合并,生成新的聚合文件,并向控制節(jié)點(diǎn)返回垃圾回收和清盤結(jié)果。
[0166]其中,合并生成新的聚合文件的過(guò)程與步驟S102中描述的方式相同,只不過(guò)步驟S102中是由客戶端發(fā)起創(chuàng)建聚合文件的過(guò)程,而本過(guò)程中是由控制節(jié)點(diǎn)自行啟動(dòng)。[0167]本實(shí)施例,在實(shí)施例四的基礎(chǔ)上,實(shí)現(xiàn)了對(duì)聚合文件中的小文件的數(shù)據(jù)的刪除操作。
[0168]實(shí)施例六
[0169]圖9示出了本發(fā)明實(shí)施例六提供的控制節(jié)點(diǎn)的具體結(jié)構(gòu)框圖,為了便于說(shuō)明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。該控制節(jié)點(diǎn)9包括:創(chuàng)建文件指令接收單元91、小文件序號(hào)生成單元92和標(biāo)識(shí)和存儲(chǔ)節(jié)點(diǎn)信息生成單元93。
[0170]其中,創(chuàng)建文件指令接收單元91,用于接收客戶端發(fā)送的創(chuàng)建小文件命令;
[0171]小文件序號(hào)生成單元92,用于根據(jù)創(chuàng)建小文件命令創(chuàng)建一個(gè)新的聚合文件或者從聚合文件列表中選擇一個(gè)已有的聚合文件,同時(shí)根據(jù)聚合文件的屬性信息生成小文件在聚合文件中的序號(hào);
[0172]標(biāo)識(shí)和存儲(chǔ)節(jié)點(diǎn)信息生成單元93,用于根據(jù)聚合文件的屬性信息以及小文件在聚合文件中的序號(hào)生成小文件的標(biāo)識(shí)以及用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送至客戶端,客戶端根據(jù)用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送寫小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)寫小文件指令將小文件的數(shù)據(jù)寫入相應(yīng)的文件塊,并將小文件的數(shù)據(jù)在文件塊中的起始位置和小文件的長(zhǎng)度寫入文件塊的索引區(qū)域。
[0173]具體的,聚合文件的屬性信息中包括聚合文件的標(biāo)識(shí)和聚合文件的存儲(chǔ)塊列表,存儲(chǔ)塊列表包括聚合文件中的每個(gè)文件塊的序號(hào)、每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù)以及存儲(chǔ)每個(gè)文件塊的存儲(chǔ)節(jié)點(diǎn)的信息。
[0174]具體的,標(biāo)識(shí)和存儲(chǔ)節(jié)點(diǎn)信息生成單元93包括:
[0175]小文件標(biāo)識(shí)生成模塊,用于根據(jù)所述聚合文件的標(biāo)識(shí)以及所述小文件在所述聚合文件中的序號(hào)生成所述小文件的標(biāo)識(shí);
[0176]文件塊序號(hào)生成模塊,用于根據(jù)所述小文件在所述聚合文件中的序號(hào)以及每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù),計(jì)算得到用于存儲(chǔ)所述小文件的文件塊的序號(hào);
[0177]存儲(chǔ)節(jié)點(diǎn)信息獲取模塊,用于根據(jù)所述用于存儲(chǔ)所述小文件的文件塊的序號(hào)以及用于存儲(chǔ)每個(gè)文件塊的存儲(chǔ)節(jié)點(diǎn)的信息得到用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息。
[0178]另外,優(yōu)選的,該控制節(jié)點(diǎn)9還包括:
[0179]修改小文件指令接收單元,用于接收客戶端發(fā)送的修改小文件指令;
[0180]小文件修改單元,用于根據(jù)修改小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送修改小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)修改小文件指令在用于在存儲(chǔ)小文件的文件塊的末尾插入小文件的修改數(shù)據(jù),同時(shí)在文件塊的索引區(qū)域中,將小文件的數(shù)據(jù)在文件塊中的起始位置更新為修改數(shù)據(jù)的起始存儲(chǔ)位置,并將小文件的長(zhǎng)度更新為修改數(shù)據(jù)的長(zhǎng)度;
[0181]讀取小文件指令接收單元,用于接收客戶端發(fā)送的讀取小文件指令;
[0182]小文件讀取單元,用于根據(jù)讀取小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送讀取小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)讀取小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,再讀取索引中存儲(chǔ)的該小文件的起始位置和長(zhǎng)度信息,最后根據(jù)該起始位置和長(zhǎng)度信息讀取對(duì)應(yīng)的數(shù)據(jù);
[0183]刪除小文件指令接收單元,用于接收客戶端發(fā)送的刪除小文件指令;[0184]小文件刪除單元,用于根據(jù)刪除小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送刪除小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)該刪除小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,將索引中的小文件狀態(tài)修改為刪除狀態(tài);
[0185]存儲(chǔ)節(jié)點(diǎn)信息讀取單元,用于統(tǒng)計(jì)聚合文件的所有文件塊中的有效數(shù)據(jù)比率,對(duì)于有效數(shù)據(jù)比率低于給定比率的文件塊,讀取存儲(chǔ)該文件塊的存儲(chǔ)節(jié)點(diǎn)的信息;
[0186]新的聚合文件生成單元,用于向?qū)?yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送垃圾回收和清盤文件塊命令,由相應(yīng)的存儲(chǔ)節(jié)點(diǎn)根據(jù)該命令將所有有效數(shù)據(jù)合并,生成新的聚合文件。
[0187]本發(fā)明實(shí)施例提供的控制節(jié)點(diǎn)可以應(yīng)用在前述對(duì)應(yīng)的方法實(shí)施例中,詳情參見上述前述方法實(shí)施例的描述,在此不再贅述。
[0188]本實(shí)施例,將小文件存儲(chǔ)在聚合文件的文件塊中,小文件的索引存儲(chǔ)在聚合文件的文件塊中,無(wú)需外部索引,小文件的索引和數(shù)據(jù)是融合在聚合文件的一個(gè)文件塊中,將云存儲(chǔ)系統(tǒng)帶來(lái)的數(shù)據(jù)一致性、容錯(cuò)性等特性能完美體現(xiàn),使用簡(jiǎn)單、方便;而如果采用外部索引的方式,由于小文件的索引文件和數(shù)據(jù)文件是分開存儲(chǔ)的,則必須另外涉及一個(gè)外部程序,通過(guò)該外部程序來(lái)保證索引文件和數(shù)據(jù)文件的一致性等特性。
[0189]另外,小文件的標(biāo)識(shí)可以用聚合文件的標(biāo)識(shí)與小文件在聚合文件中的序號(hào)來(lái)進(jìn)行唯一標(biāo)識(shí),后續(xù),對(duì)小文件進(jìn)行修改、刪除、鎖定、解鎖或者訪問小文件時(shí),可以直接通過(guò)該小文件標(biāo)識(shí)來(lái)獲取小文件所在的文件塊,進(jìn)而通過(guò)對(duì)該文件塊進(jìn)行操作可以實(shí)現(xiàn)。
[0190]實(shí)施例七
[0191]圖10示出了本發(fā)明實(shí)施例七提供的存儲(chǔ)節(jié)點(diǎn)的具體結(jié)構(gòu)框圖,為了便于說(shuō)明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。該存儲(chǔ)節(jié)點(diǎn)10包括:寫小文件指令接收單元101、數(shù)據(jù)寫入單元102。
[0192]其中,寫小文件指令接收單元101,用于接收客戶端發(fā)送的寫小文件指令;
[0193]數(shù)據(jù)寫入單元102,用于根據(jù)寫小文件指令將小文件的數(shù)據(jù)寫入相應(yīng)的文件塊,并將小文件的數(shù)據(jù)在文件塊中的起始位置和小文件的長(zhǎng)度寫入文件塊的索引區(qū)域。
[0194]具體的,數(shù)據(jù)寫入單元102包括:
[0195]小文件的標(biāo)識(shí)獲取模塊,用于從寫小文件指令中提取出小文件的標(biāo)識(shí);
[0196]小文件序號(hào)獲取模塊,用于根據(jù)小文件的標(biāo)識(shí)得到存儲(chǔ)小文件的聚合文件的標(biāo)識(shí)以及小文件在聚合文件中的序號(hào);
[0197]文件塊序號(hào)獲取模塊,用于根據(jù)小文件在聚合文件中的序號(hào)以及每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù),計(jì)算得到用于存儲(chǔ)所述小文件的文件塊的序號(hào);
[0198]數(shù)據(jù)寫入模塊,用于將小文件的數(shù)據(jù)寫入文件塊,并將小文件的數(shù)據(jù)在文件塊中的起始位置和小文件的長(zhǎng)度寫入文件塊的索引區(qū)域。
[0199]進(jìn)一步地,該存儲(chǔ)節(jié)點(diǎn)10還包括:
[0200]修改小文件指令接收單元,用于接收客戶端發(fā)送的修改小文件指令;
[0201]文件修改單元,用于根據(jù)修改小文件指令在用于存儲(chǔ)小文件的文件塊的末尾插入小文件的修改數(shù)據(jù),同時(shí)在文件塊的索引區(qū)域中,將小文件的數(shù)據(jù)在文件塊中的起始位置更新為修改數(shù)據(jù)的起始存儲(chǔ)位置,并將小文件的長(zhǎng)度更新為修改數(shù)據(jù)的長(zhǎng)度;
[0202]讀取小文件指令接收單元,用于接收客戶端發(fā)送的讀取小文件指令;[0203]小文件讀取單元,用于根據(jù)讀取小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,再讀取索引中存儲(chǔ)的該小文件的起始位置和長(zhǎng)度信息,最后根據(jù)該起始位置和長(zhǎng)度信息讀取對(duì)應(yīng)的數(shù)據(jù);
[0204]刪除小文件指令接收單元,用于接收客戶端發(fā)送的刪除小文件指令;
[0205]小文件刪除單元,用于根據(jù)刪除小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,將索引中的小文件狀態(tài)修改為刪除狀態(tài);
[0206]垃圾回收和清盤文件塊命令接收單元,用于接收控制節(jié)點(diǎn)發(fā)送的垃圾回收和清盤文件塊命令;
[0207]新的聚合文件生成單元,用于根據(jù)該命令將所有有效數(shù)據(jù)合并,生成新的聚合文件。
[0208]本發(fā)明實(shí)施例提供的存儲(chǔ)節(jié)點(diǎn)可以應(yīng)用在前述對(duì)應(yīng)的方法實(shí)施例中,詳情參見上述前述方法實(shí)施例的描述,在此不再贅述。
[0209]本實(shí)施例,將小文件存儲(chǔ)在聚合文件的文件塊中,小文件的索引存儲(chǔ)在聚合文件的文件塊中,無(wú)需外部索引,小文件的索引和數(shù)據(jù)是融合在聚合文件的一個(gè)文件塊中,將云存儲(chǔ)系統(tǒng)帶來(lái)的數(shù)據(jù)一致性、容錯(cuò)性等特性能完美體現(xiàn),使用簡(jiǎn)單、方便;而如果采用外部索引的方式,由于小文件的索引文件和數(shù)據(jù)文件是分開存儲(chǔ)的,則必須另外涉及一個(gè)外部程序,通過(guò)該外部程序來(lái)保證索引文件和數(shù)據(jù)文件的一致性等特性。
[0210]另外,小文件的標(biāo)識(shí)可以用聚合文件的標(biāo)識(shí)與小文件在聚合文件中的序號(hào)來(lái)進(jìn)行唯一標(biāo)識(shí),后續(xù),對(duì)小文件進(jìn)行修改、刪除、鎖定、解鎖或者訪問小文件時(shí),可以直接通過(guò)該小文件標(biāo)識(shí)來(lái)獲取小文件所在的文件塊,進(jìn)而通過(guò)對(duì)該文件塊進(jìn)行操作可以實(shí)現(xiàn)。
[0211]實(shí)施例八
[0212]圖11示出了本發(fā)明實(shí)施例八提供的小文件的存取系統(tǒng)的具體結(jié)構(gòu)框圖,為了便于說(shuō)明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。該小文件的存取系統(tǒng)11包括客戶端111、如實(shí)施例六描述的控制節(jié)點(diǎn)112和如實(shí)施例七描述的存儲(chǔ)節(jié)點(diǎn)113,一個(gè)控制節(jié)點(diǎn)與至少一個(gè)存儲(chǔ)節(jié)點(diǎn)連接,客戶端分別與控制節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)連接。其中,客戶端用于向控制節(jié)點(diǎn)發(fā)送操作文件請(qǐng)求命令,該命令包括創(chuàng)建小文件命令,還可以包括修改小文件命令、訪問小文件命令、刪除小文件命令、垃圾回收和清盤文件塊命令??刂乒?jié)點(diǎn)中存儲(chǔ)有聚合文件的屬性信息,接收到客戶端發(fā)送的命令后,控制節(jié)點(diǎn)即可根據(jù)該命令查找到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)再次發(fā)送該命令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)該命令對(duì)存儲(chǔ)于其中的文件塊進(jìn)行相應(yīng)的操作。
[0213]本實(shí)施例,將小文件存儲(chǔ)在聚合文件的文件塊中,小文件的索引存儲(chǔ)在聚合文件的文件塊中,無(wú)需外部索引,小文件的索引和數(shù)據(jù)是融合在聚合文件的一個(gè)文件塊中,將云存儲(chǔ)系統(tǒng)帶來(lái)的數(shù)據(jù)一致性、容錯(cuò)性等特性能完美體現(xiàn),使用簡(jiǎn)單、方便;而如果采用外部索引的方式,由于小文件的索引文件和數(shù)據(jù)文件是分開存儲(chǔ)的,則必須另外涉及一個(gè)外部程序,通過(guò)該外部程序來(lái)保證索引文件和數(shù)據(jù)文件的一致性等特性。
[0214]另外,小文件的標(biāo)識(shí)可以用聚合文件的標(biāo)識(shí)與小文件在聚合文件中的序號(hào)來(lái)進(jìn)行唯一標(biāo)識(shí),后續(xù),對(duì)小文件進(jìn)行修改、刪除、鎖定、解鎖或者訪問小文件時(shí),可以直接通過(guò)該小文件標(biāo)識(shí)來(lái)獲取小文件所在的文件塊,進(jìn)而通過(guò)對(duì)該文件塊進(jìn)行操作可以實(shí)現(xiàn)。[0215]本發(fā)明實(shí)施例提供的小文件的存取系統(tǒng)可以應(yīng)用在前述對(duì)應(yīng)的方法實(shí)施例中,詳情參見上述前述方法實(shí)施例的描述,在此不再贅述。
[0216]值得注意的是,上述系統(tǒng)實(shí)施例中,所包括的各個(gè)單元只是按照功能邏輯進(jìn)行劃分的,但并不局限于上述的劃分,只要能夠?qū)崿F(xiàn)相應(yīng)的功能即可;另外,各功能單元的具體名稱也只是為了便于相互區(qū)分,并不用于限制本發(fā)明的保護(hù)范圍。
[0217]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種小文件的存取方法,其特征在于,所述方法包括: 控制節(jié)點(diǎn)接收客戶端發(fā)送的創(chuàng)建小文件命令; 控制節(jié)點(diǎn)根據(jù)所述創(chuàng)建小文件命令創(chuàng)建一個(gè)新的聚合文件或者從聚合文件列表中選擇一個(gè)已有的聚合文件,同時(shí)根據(jù)所述聚合文件的屬性信息生成所述小文件在所述聚合文件中的序號(hào); 控制節(jié)點(diǎn)根據(jù)所述聚合文件的屬性信息以及所述小文件在所述聚合文件中的序號(hào)生成所述小文件的標(biāo)識(shí)以及用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送至客戶端,客戶端根據(jù)用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送寫小文件指令,由所述存儲(chǔ)節(jié)點(diǎn)根據(jù)所述寫小文件指令將所述小文件的數(shù)據(jù)寫入相應(yīng)的文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域。
2.如權(quán)利要求1所述的方法,其特征在于,所述聚合文件的屬性信息中包括聚合文件的標(biāo)識(shí)和聚合文件的存儲(chǔ)塊列表,所述存儲(chǔ)塊列表包括聚合文件中的每個(gè)文件塊的序號(hào)、每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù)以及存儲(chǔ)每個(gè)文件塊的存儲(chǔ)節(jié)點(diǎn)的信息。
3.如權(quán)利要求2所述的方法,其特征在于,所述控制節(jié)點(diǎn)根據(jù)所述聚合文件的屬性信息以及所述小文件在所述聚合文件中的序號(hào)生成所述小文件的標(biāo)識(shí)以及用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息包括: 控制節(jié)點(diǎn)根據(jù)所述聚合文件的標(biāo)識(shí)以及所述小文件在所述聚合文件中的序號(hào)生成所述小文件的標(biāo)識(shí); 控制節(jié)點(diǎn)根據(jù)所述小文件在所述聚合文件中的序號(hào)以及每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù),計(jì)算得到用于存 儲(chǔ)所述小文件的文件塊的序號(hào); 控制節(jié)點(diǎn)根據(jù)所述用于存儲(chǔ)所述小文件的文件塊的序號(hào)以及用于存儲(chǔ)每個(gè)文件塊的存儲(chǔ)節(jié)點(diǎn)的信息得到用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息。
4.如權(quán)利要求2所述的方法,其特征在于,所述存儲(chǔ)節(jié)點(diǎn)根據(jù)所述寫小文件指令將所述小文件的數(shù)據(jù)寫入相應(yīng)的文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域包括: 存儲(chǔ)節(jié)點(diǎn)從所述寫小文件指令中提取出所述小文件的標(biāo)識(shí); 存儲(chǔ)節(jié)點(diǎn)根據(jù)所述小文件的標(biāo)識(shí)得到存儲(chǔ)所述小文件的聚合文件的標(biāo)識(shí)以及所述小文件在所述聚合文件中的序號(hào); 存儲(chǔ)節(jié)點(diǎn)根據(jù)所述小文件在所述聚合文件中的序號(hào)以及每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù),計(jì)算得到用于存儲(chǔ)所述小文件的文件塊的序號(hào); 存儲(chǔ)節(jié)點(diǎn)將所述小文件的數(shù)據(jù)寫入所述文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域。
5.如權(quán)利要求1至4任一項(xiàng)所述的方法,其特征在于,在所述控制節(jié)點(diǎn)根據(jù)所述聚合文件的屬性信息以及所述小文件在所述聚合文件中的序號(hào)生成所述小文件的標(biāo)識(shí)以及用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送至客戶端,客戶端根據(jù)用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送寫小文件指令,由所述存儲(chǔ)節(jié)點(diǎn)根據(jù)所述寫小文件指令將所述小文件的數(shù)據(jù)寫入相應(yīng)的文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域之后,所述方法還包括: 控制節(jié)點(diǎn)接收客戶端發(fā)送的修改小文件指令;控制節(jié)點(diǎn)根據(jù)所述修改小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送修改小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)所述修改小文件指令在用于在存儲(chǔ)所述小文件的文件塊的末尾插入所述小文件的修改數(shù)據(jù),同時(shí)在所述文件塊的索引區(qū)域中,將所述小文件的數(shù)據(jù)在文件塊中的起始位置更新為所述修改數(shù)據(jù)的起始存儲(chǔ)位置,并將所述小文件的長(zhǎng)度更新為所述修改數(shù)據(jù)的長(zhǎng)度。
6.如權(quán)利要求1至4任一項(xiàng)所述的方法,其特征在于,在所述控制節(jié)點(diǎn)根據(jù)所述聚合文件的屬性信息以及所述小文件在所述聚合文件中的序號(hào)生成所述小文件的標(biāo)識(shí)以及用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送至客戶端,客戶端根據(jù)用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送寫小文件指令,由所述存儲(chǔ)節(jié)點(diǎn)根據(jù)所述寫小文件指令將所述小文件的數(shù)據(jù)寫入相應(yīng)的文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域之后,所述方法還包括: 控制節(jié)點(diǎn)接收客戶端發(fā)送的讀取小文件指令; 控制節(jié)點(diǎn)根據(jù)所述讀取小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送讀取小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)所述讀取小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,再讀取索引中存儲(chǔ)的該小文件的起始位置和長(zhǎng)度信息,最后根據(jù)所述起始位置和長(zhǎng)度信息讀取對(duì)應(yīng)的數(shù)據(jù)。
7.如權(quán)利要求1至4任一項(xiàng)所述的方法,其特征在于,在所述控制節(jié)點(diǎn)根據(jù)所述聚合文件的屬性信息以及所述小文件在所述聚合文件中的序號(hào)生成所述小文件的標(biāo)識(shí)以及用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送至客戶端,客戶端根據(jù)用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送寫小文件指令,由所述存儲(chǔ)節(jié)點(diǎn)根據(jù)所述寫小文件指令將所述小文件`的數(shù)據(jù)寫入相應(yīng)的文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域之后,所述方法還包括: 控制節(jié)點(diǎn)接收客戶端發(fā)送的刪除小文件指令; 控制節(jié)點(diǎn)根據(jù)所述刪除小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送刪除小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)該刪除小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,將索引中的小文件狀態(tài)修改為刪除狀態(tài)。
8.如權(quán)利要求7所述的方法,其特征在于,在所述控制節(jié)點(diǎn)根據(jù)所述刪除小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送刪除小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)該刪除小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,將索引中的小文件狀態(tài)修改為刪除狀態(tài)之后,所述方法還包括: 控制節(jié)點(diǎn)統(tǒng)計(jì)聚合文件的所有文件塊中的有效數(shù)據(jù)比率,對(duì)于有效數(shù)據(jù)比率低于給定比率的文件塊,讀取存儲(chǔ)該文件塊的存儲(chǔ)節(jié)點(diǎn)的信息; 控制節(jié)點(diǎn)向?qū)?yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送垃圾回收和清盤文件塊命令,由相應(yīng)的存儲(chǔ)節(jié)點(diǎn)根據(jù)該命令將所有有效數(shù)據(jù)合并,生成新的聚合文件。
9.一種控制節(jié)點(diǎn),其特征在于,所述控制節(jié)點(diǎn)包括:創(chuàng)建文件指令接收單元,用于接收客戶端發(fā)送的創(chuàng)建小文件命令; 小文件序號(hào)生成單元,用于根據(jù)所述創(chuàng)建小文件命令創(chuàng)建一個(gè)新的聚合文件或者從聚合文件列表中選擇一個(gè)已有的聚合文件,同時(shí)根據(jù)所述聚合文件的屬性信息生成所述小文件在所述聚合文件中的序號(hào); 標(biāo)識(shí)和存儲(chǔ)節(jié)點(diǎn)信息生成單元,用于根據(jù)所述聚合文件的屬性信息以及所述小文件在所述聚合文件中的序號(hào)生成所述小文件的標(biāo)識(shí)以及用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送至客戶端,客戶端根據(jù)用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送寫小文件指令,由所述存儲(chǔ)節(jié)點(diǎn)根據(jù)所述寫小文件指令將所述小文件的數(shù)據(jù)寫入相應(yīng)的文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域。
10.如權(quán)利要求9所述的控制節(jié)點(diǎn),其特征在于,所述聚合文件的屬性信息中包括聚合文件的標(biāo)識(shí)和聚合文件的存儲(chǔ)塊列表,所述存儲(chǔ)塊列表包括聚合文件中的每個(gè)文件塊的序號(hào)、每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù)以及存儲(chǔ)每個(gè)文件塊的存儲(chǔ)節(jié)點(diǎn)的信息。
11.如權(quán)利要求10所述的控制節(jié)點(diǎn),其特征在于,所述標(biāo)識(shí)和存儲(chǔ)節(jié)點(diǎn)信息生成單元包括: 小文件標(biāo)識(shí)生成模塊,用于根據(jù)所述聚合文件的標(biāo)識(shí)以及所述小文件在所述聚合文件中的序號(hào)生成所述小文件的標(biāo)識(shí); 文件塊序號(hào)生成模塊,用于根據(jù)所述小文件在所述聚合文件中的序號(hào)以及每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù),計(jì)算得到用于存儲(chǔ)所述小文件的文件塊的序號(hào); 存儲(chǔ)節(jié)點(diǎn)信息獲取模塊,用于根據(jù)所述用于存儲(chǔ)所述小文件的文件塊的序號(hào)以及用于存儲(chǔ)每個(gè)文件塊的存儲(chǔ)節(jié)點(diǎn)的信息得到用于存儲(chǔ)所述小文件的存儲(chǔ)節(jié)點(diǎn)的信息。
12.如權(quán)利要求9 至11任一項(xiàng)所述的控制節(jié)點(diǎn),其特征在于,在所述控制節(jié)點(diǎn)還包括: 修改小文件指令接收單元,用于接收客戶端發(fā)送的修改小文件指令; 小文件修改單元,用于根據(jù)所述修改小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送修改小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)所述修改小文件指令在用于在存儲(chǔ)所述小文件的文件塊的末尾插入所述小文件的修改數(shù)據(jù),同時(shí)在所述文件塊的索引區(qū)域中,將所述小文件的數(shù)據(jù)在文件塊中的起始位置更新為所述修改數(shù)據(jù)的起始存儲(chǔ)位置,并將所述小文件的長(zhǎng)度更新為所述修改數(shù)據(jù)的長(zhǎng)度; 讀取小文件指令接收單元,用于接收客戶端發(fā)送的讀取小文件指令; 小文件讀取單元,用于根據(jù)所述讀取小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送讀取小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)所述讀取小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,再讀取索引中存儲(chǔ)的該小文件的起始位置和長(zhǎng)度信息,最后根據(jù)所述起始位置和長(zhǎng)度信息讀取對(duì)應(yīng)的數(shù)據(jù); 刪除小文件指令接收單元,用于接收客戶端發(fā)送的刪除小文件指令; 小文件刪除單元,用于根據(jù)所述刪除小文件指令得到用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息,并發(fā)送給客戶端,客戶端根據(jù)用于存儲(chǔ)小文件的存儲(chǔ)節(jié)點(diǎn)的信息向相應(yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送刪除小文件指令,由存儲(chǔ)節(jié)點(diǎn)根據(jù)該刪除小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,將索引中的小文件狀態(tài)修改為刪除狀態(tài); 存儲(chǔ)節(jié)點(diǎn)信息讀取單元,用于統(tǒng)計(jì)聚合文件的所有文件塊中的有效數(shù)據(jù)比率,對(duì)于有效數(shù)據(jù)比率低于給定比率的文件塊,讀取存儲(chǔ)該文件塊的存儲(chǔ)節(jié)點(diǎn)的信息; 新的聚合文件生成單元,用于向?qū)?yīng)的存儲(chǔ)節(jié)點(diǎn)發(fā)送垃圾回收和清盤文件塊命令,由相應(yīng)的存儲(chǔ)節(jié)點(diǎn)根據(jù)該命令將所有有效數(shù)據(jù)合并,生成新的聚合文件。
13.一種存儲(chǔ)節(jié)點(diǎn),其特征在于,所述存儲(chǔ)節(jié)點(diǎn)包括: 寫小文件指令接收單元,用于接收客戶端發(fā)送的寫小文件指令; 數(shù)據(jù)寫入單元,用于根據(jù)所述寫小文件指令將所述小文件的數(shù)據(jù)寫入相應(yīng)的文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域。
14.如權(quán)利要求13所述的存儲(chǔ)節(jié)點(diǎn),其特征在于,所述數(shù)據(jù)寫入單元包括: 小文件的標(biāo)識(shí)獲取模塊,用于從所述寫小文件指令中提取出所述小文件的標(biāo)識(shí); 小文件序號(hào)獲取模塊,用于根據(jù)所述小文件的標(biāo)識(shí)得到存儲(chǔ)所述小文件的聚合文件的標(biāo)識(shí)以及所述小文件在所述聚合文件中的序號(hào); 文件塊序號(hào)獲取模塊,用于根據(jù)所述小文件在所述聚合文件中的序號(hào)以及每個(gè)文件塊中存儲(chǔ)的小文件的個(gè)數(shù),計(jì)算得到用于存儲(chǔ)所述小文件的文件塊的序號(hào); 數(shù)據(jù)寫入模塊,用于將所述小文件的數(shù)據(jù)寫入所述文件塊,并將所述小文件的數(shù)據(jù)在文件塊中的起始位置和所述小文件的長(zhǎng)度寫入所述文件塊的索引區(qū)域。
15.如權(quán)利要求13或14所述的存儲(chǔ)節(jié)點(diǎn),其特征在于,所述存儲(chǔ)節(jié)點(diǎn)還包括: 修改小文件指令接收單元,用于接收客戶端發(fā)送的修改小文件指令; 文件修改單元,用于根據(jù)所述修改小文件指令在用于在存儲(chǔ)所述小文件的文件塊的末尾插入所述小文件的修改數(shù)據(jù),同時(shí)在所述文件塊的索引區(qū)域中,將所述小文件的數(shù)據(jù)在文件塊中的起始位置更新為所述修改數(shù)據(jù)的起始存儲(chǔ)位置,并將所述小文件的長(zhǎng)度更新為所述修改數(shù)據(jù)的長(zhǎng)度; 讀取小文件指令接收單元,用于接收客戶端發(fā)送的讀取小文件指令; 小文件讀取單元,用于根據(jù)所述讀取小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,再讀取索引中存儲(chǔ)的該小文件的起始位置和長(zhǎng)度信息,最后根據(jù)所述起始位置和長(zhǎng)度信息讀取對(duì)應(yīng)的數(shù)據(jù); 刪除小文件指令接收單元,用于接收客戶端發(fā)送的刪除小文件指令; 小文件刪除單元,用于根據(jù)所述刪除小文件指令先查找到文件塊中存儲(chǔ)的該小文件的索引,將索引中的小文件狀態(tài)修改為刪除狀態(tài); 垃圾回收和清盤文件塊命令接收單元,用于接收控制節(jié)點(diǎn)發(fā)送的垃圾回收和清盤文件塊命令; 新的聚合文件生成單元,用于根據(jù)所述命令將所有有效數(shù)據(jù)合并,生成新的聚合文件。
16.一種小文件的存取系統(tǒng),其特征在于,所述系統(tǒng)包括客戶端、如權(quán)利要求9至12任一項(xiàng)所述的控制節(jié)點(diǎn)和如權(quán)利要求13至15任一項(xiàng)所述的存儲(chǔ)節(jié)點(diǎn),所述控制節(jié)點(diǎn)與至少一個(gè)存儲(chǔ)節(jié)點(diǎn)連接,所述客戶端分別與所述控制節(jié)點(diǎn)和所述存儲(chǔ)節(jié)點(diǎn)連接。
【文檔編號(hào)】H04L29/08GK103605726SQ201310575327
【公開日】2014年2月26日 申請(qǐng)日期:2013年11月15日 優(yōu)先權(quán)日:2013年11月15日
【發(fā)明者】徐君, 倪濤, 郭家棟 申請(qǐng)人:中安消技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
鄢陵县| 察雅县| 大连市| 河津市| 堆龙德庆县| 柳林县| 山东省| 大洼县| 新和县| 樟树市| 青川县| 加查县| 万年县| 崇明县| 新民市| 克什克腾旗| 阜新市| 麦盖提县| 万年县| 安塞县| 富宁县| 辽中县| 桦南县| 林口县| 车险| 长海县| 灵石县| 舒城县| 汤原县| 雷山县| 南投县| 莎车县| 惠安县| 紫金县| 上高县| 长乐市| 高台县| 叶城县| 额尔古纳市| 清水河县| 灯塔市|