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

一種基于位置敏感哈希的刪冗塊設(shè)備存儲(chǔ)方法

文檔序號(hào):6370334閱讀:230來(lái)源:國(guó)知局

專(zhuān)利名稱(chēng)::一種基于位置敏感哈希的刪冗塊設(shè)備存儲(chǔ)方法
技術(shù)領(lǐng)域
:本發(fā)明涉及數(shù)據(jù)存儲(chǔ)
技術(shù)領(lǐng)域
,特別涉及一種基于位置敏感哈希的刪冗塊設(shè)備存儲(chǔ)方法。
背景技術(shù)
:隨著數(shù)字信息量的爆炸式增長(zhǎng),數(shù)據(jù)占用空間越來(lái)越大;在過(guò)去的10年里,很多行業(yè)提供的存儲(chǔ)系統(tǒng)容量從數(shù)十GB發(fā)展到數(shù)百TB,甚至數(shù)PB,足足翻了10,000多倍。隨著數(shù)據(jù)的指數(shù)級(jí)增長(zhǎng),企業(yè)面臨的快速備份和恢復(fù)的時(shí)間點(diǎn)越來(lái)越多,管理保存數(shù)據(jù)的成本越來(lái)越高,數(shù)據(jù)中心的空間和電能耗費(fèi)也變得越來(lái)越多。研究發(fā)現(xiàn),應(yīng)用系統(tǒng)所保存的數(shù)據(jù),高達(dá)60%是冗余的,而且隨著時(shí)間的推移越來(lái)越嚴(yán)重。為了緩解存儲(chǔ)系統(tǒng)的空間增長(zhǎng)問(wèn)題,縮減數(shù)據(jù)占用空間,降低成本、最大程度的利用已有資源,冗余數(shù)據(jù)刪除技術(shù)(簡(jiǎn)稱(chēng)刪冗技術(shù))就應(yīng)運(yùn)而生了。一方面,利用刪冗技術(shù),可以對(duì)存儲(chǔ)空間的利用率進(jìn)行優(yōu)化。傳統(tǒng)的數(shù)據(jù)壓縮技術(shù)主要根據(jù)一些固定的模式利用傳統(tǒng)的數(shù)據(jù)分析工具和技術(shù)來(lái)消除重復(fù)數(shù)據(jù),不能有效地改善基于磁盤(pán)數(shù)據(jù)的成本效益,所以需要通過(guò)探究重復(fù)數(shù)據(jù)的特性,利用相應(yīng)的刪冗技術(shù),以消除分布在存儲(chǔ)系統(tǒng)中的相同文件或者數(shù)據(jù)塊。另一方面,利用刪冗技術(shù),可以減少在網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)量,進(jìn)而降低能量消耗和網(wǎng)絡(luò)成本。刪冗技術(shù)的目標(biāo)是消除分布在存儲(chǔ)系統(tǒng)中的相同及相似文件或者數(shù)據(jù)塊,因此能夠減少大量的磁盤(pán)消耗,并且為數(shù)據(jù)復(fù)制大大節(jié)省網(wǎng)絡(luò)帶寬。刪冗技術(shù)可以廣泛用于虛擬機(jī)存儲(chǔ)、文件服務(wù)器、郵件服務(wù)器、磁盤(pán)備份、社區(qū)網(wǎng)絡(luò)等諸多應(yīng)用領(lǐng)域。傳統(tǒng)上刪冗技術(shù)不作為主存儲(chǔ)系統(tǒng)使用,但近年來(lái),隨著云存儲(chǔ)等技術(shù)的發(fā)展,以刪冗技術(shù)構(gòu)建主存儲(chǔ)系統(tǒng)成為了一個(gè)重要的技術(shù)課題,以刪冗技術(shù)構(gòu)建的主存儲(chǔ)系統(tǒng)簡(jiǎn)稱(chēng)為刪冗存儲(chǔ)系統(tǒng)。塊設(shè)備是最基本的存儲(chǔ)設(shè)備,廣泛應(yīng)用與SAN(StorageAreaNetwork,存儲(chǔ)區(qū)域網(wǎng)絡(luò))、NAS(NetworkAttachedStorage,網(wǎng)絡(luò)附屬存儲(chǔ))等各種存儲(chǔ)系統(tǒng)中,但是構(gòu)建支持內(nèi)嵌刪冗的塊設(shè)備存儲(chǔ)系統(tǒng)時(shí),面臨兩個(gè)重大的技術(shù)挑戰(zhàn)(I)作為底層塊設(shè)備刪冗結(jié)果如何通知上層系統(tǒng),并且如何兼容已有不支持刪冗的上層存儲(chǔ)系統(tǒng)。(2)存儲(chǔ)系統(tǒng)對(duì)塊設(shè)備性能要求很高,而刪冗會(huì)產(chǎn)生大量計(jì)算開(kāi)銷(xiāo),以及增加大量刪冗元數(shù)據(jù),并且在寫(xiě)數(shù)據(jù)時(shí)需要查找寫(xiě)的數(shù)據(jù)是否在系統(tǒng)中,這會(huì)明顯增大寫(xiě)數(shù)據(jù)的時(shí)間開(kāi)銷(xiāo)。
發(fā)明內(nèi)容(一)要解決的技術(shù)問(wèn)題本發(fā)明要解決的技術(shù)問(wèn)題是如何提供一種基于位置敏感哈希的刪冗塊設(shè)備存儲(chǔ)方法,以減少刪冗寫(xiě)操作過(guò)程訪問(wèn)元數(shù)據(jù)的時(shí)間開(kāi)銷(xiāo),保證塊設(shè)備的性能要求。(二)技術(shù)方案為解決上述技術(shù)問(wèn)題,本發(fā)明提供一種基于位置敏感哈希的刪冗塊設(shè)備存儲(chǔ)方法,其包括步驟B:獲取發(fā)起刪冗寫(xiě)操作的進(jìn)程ID,根據(jù)所述進(jìn)程ID判斷是否存在對(duì)應(yīng)所述刪冗寫(xiě)操作的刪冗隊(duì)列,如果是,將所述刪冗隊(duì)列作為當(dāng)前工作隊(duì)列,執(zhí)行步驟C;否則,創(chuàng)建新的刪冗隊(duì)列作為當(dāng)前工作隊(duì)列,執(zhí)行步驟C;C:將所述刪冗寫(xiě)操作的數(shù)據(jù)分成多個(gè)數(shù)據(jù)塊,計(jì)算每個(gè)所述數(shù)據(jù)塊的數(shù)字指紋,將所述數(shù)據(jù)塊和相應(yīng)的數(shù)字指紋放入所述當(dāng)前工作隊(duì)列;D:判斷所述當(dāng)前工作隊(duì)列中所述數(shù)據(jù)塊的數(shù)量是否超過(guò)閾值,如果是,將所述閾值個(gè)所述數(shù)據(jù)塊出隊(duì)列后作為一個(gè)數(shù)據(jù)段,執(zhí)行步驟F;否則,執(zhí)行步驟E;E:判斷隊(duì)首的所述數(shù)據(jù)塊的等待時(shí)間是否超過(guò)預(yù)定時(shí)間,如果是,將所述當(dāng)前工作隊(duì)列中所有所述數(shù)據(jù)塊出隊(duì)列后作為一個(gè)數(shù)據(jù)段,執(zhí)行步驟F;否則,執(zhí)行步驟D;F:計(jì)算所述數(shù)據(jù)段的位置敏感哈希函數(shù)值,根據(jù)所述位置敏感哈希函數(shù)值判斷是否存在所述數(shù)據(jù)段的相似數(shù)據(jù)段元數(shù)據(jù)集合,如果存在,執(zhí)行步驟G;否則,創(chuàng)建一個(gè)空集合作為所述數(shù)據(jù)段的相似數(shù)據(jù)段元數(shù)據(jù)集合,執(zhí)行步驟G;G:依次判斷所述數(shù)據(jù)段中的各所述數(shù)據(jù)塊的數(shù)字指紋是否存在于所述相似數(shù)據(jù)段元數(shù)據(jù)集合中,如果是,修改所述數(shù)據(jù)塊的存儲(chǔ)地址為所述數(shù)據(jù)指紋在所述相似數(shù)據(jù)段元數(shù)據(jù)集合中對(duì)應(yīng)的元數(shù)據(jù)的存儲(chǔ)地址;否則,在所述相似數(shù)據(jù)段元數(shù)據(jù)集合中生成所述數(shù)據(jù)塊的元數(shù)據(jù),所述元數(shù)據(jù)包括所述數(shù)據(jù)塊的數(shù)字指紋和存儲(chǔ)地址。優(yōu)選地,在所述步驟B之前還包括步驟A:在塊設(shè)備層增加刪冗寫(xiě)操作,判斷當(dāng)前寫(xiě)操作的類(lèi)型是否是刪冗寫(xiě)操作,如果是,執(zhí)行步驟B;否則,直接將所述當(dāng)前寫(xiě)操作的數(shù)據(jù)寫(xiě)入二級(jí)存儲(chǔ)。優(yōu)選地,所述步驟B具體包括步驟BI:獲取發(fā)起刪冗寫(xiě)操作的進(jìn)程ID,將所述刪冗寫(xiě)操作的數(shù)據(jù)加入緩存,將通用設(shè)備層的I/O完成函數(shù)的狀態(tài)設(shè)置為待處理;B2:根據(jù)所述進(jìn)程ID判斷是否存在對(duì)應(yīng)所述刪冗寫(xiě)操作的刪冗隊(duì)列,如果是,將所述刪冗隊(duì)列作為當(dāng)前工作隊(duì)列,執(zhí)行步驟C;否則,創(chuàng)建新的刪冗隊(duì)列作為當(dāng)前工作隊(duì)列,執(zhí)行步驟C。優(yōu)選地,所述步驟C具體包括步驟將所述刪冗寫(xiě)操作的數(shù)據(jù)按照預(yù)定大小分成多個(gè)數(shù)據(jù)塊,計(jì)算所述數(shù)據(jù)塊的安全哈希函數(shù)值作為所述數(shù)據(jù)塊的數(shù)字指紋,將所述數(shù)據(jù)塊和相應(yīng)的數(shù)字指紋放入所述當(dāng)前工作隊(duì)列。優(yōu)選地,所述步驟D中,所述閾值為100。優(yōu)選地,所述步驟E中,所述預(yù)定時(shí)間為5秒。優(yōu)選地,所述步驟F具體包括步驟Fl:使用bloomfilter對(duì)所述數(shù)據(jù)段進(jìn)行歸一化處理,生成定長(zhǎng)度數(shù)據(jù)塊特征向量;F2:根據(jù)所述定長(zhǎng)度數(shù)據(jù)塊特征向量,通過(guò)基于p-stable的位置敏感哈希函數(shù)計(jì)算得到所述數(shù)據(jù)段的位置敏感哈希函數(shù)值;F3:根據(jù)所述位置敏感哈希函數(shù)值判斷二級(jí)存儲(chǔ)中是否存在所述數(shù)據(jù)段的相似數(shù)據(jù)段元數(shù)據(jù)集合,如果存在,執(zhí)行步驟G;否則,創(chuàng)建一個(gè)空集合作為所述數(shù)據(jù)段的相似數(shù)據(jù)段元數(shù)據(jù)集合,執(zhí)行步驟G。優(yōu)選地,所述步驟G具體包括步驟Gl:依次判斷所述數(shù)據(jù)段中的各所述數(shù)據(jù)塊的數(shù)字指紋是否存在于所述相似數(shù)據(jù)段元數(shù)據(jù)集合中,如果是,執(zhí)行步驟G2;否則,執(zhí)行步驟G3;G2:修改所述數(shù)據(jù)塊的存儲(chǔ)地址為所述數(shù)據(jù)指紋在所述相似數(shù)據(jù)段元數(shù)據(jù)集合中對(duì)應(yīng)的元數(shù)據(jù)的存儲(chǔ)地址,將所述元數(shù)據(jù)的引用值加1,將所述I/O完成函數(shù)的狀態(tài)設(shè)置為修改后的,返回所述數(shù)據(jù)塊的原存儲(chǔ)地址和修改后的存儲(chǔ)地址,將所述相似數(shù)據(jù)段元數(shù)據(jù)集合寫(xiě)回所述二級(jí)存儲(chǔ);G3:在所述相似數(shù)據(jù)段元數(shù)據(jù)集合中生成所述數(shù)據(jù)塊的元數(shù)據(jù),將所述I/O完成函數(shù)的狀態(tài)設(shè)置為完成,將所述相似數(shù)據(jù)段元數(shù)據(jù)集合寫(xiě)回所述二級(jí)存儲(chǔ);所述元數(shù)據(jù)包括所述數(shù)據(jù)塊的數(shù)字指紋、存儲(chǔ)地址和引用值,所述引用值的初值為I。(三)有益效果本發(fā)明的所述基于位置敏感哈希的刪冗塊設(shè)備存儲(chǔ)方法,具有以下優(yōu)勢(shì)所述方法通過(guò)將刪冗寫(xiě)操作根據(jù)進(jìn)程ID分組,有效利用同一進(jìn)程特定時(shí)間對(duì)同一文件操作帶來(lái)的數(shù)據(jù)局部性,為實(shí)現(xiàn)相似數(shù)據(jù)段刪冗提供基礎(chǔ),進(jìn)而利用位置敏感哈希函數(shù)將相似元數(shù)據(jù)集合映射到相同的哈??臻g位置,快速并準(zhǔn)確地識(shí)別出相似數(shù)據(jù)段,既有效降低了刪冗寫(xiě)操作使用內(nèi)存的次數(shù),又實(shí)現(xiàn)了對(duì)元數(shù)據(jù)集合的快速訪問(wèn),減少了刪冗寫(xiě)操作過(guò)程訪問(wèn)元數(shù)據(jù)的時(shí)間開(kāi)銷(xiāo),有效保證了刪冗塊設(shè)備寫(xiě)操作性能;所述方法既可以使支持刪冗塊設(shè)備的上層存儲(chǔ)系統(tǒng)方便使用塊設(shè)備內(nèi)嵌刪冗功能,也使已有不支持刪冗塊設(shè)備的上層存儲(chǔ)系統(tǒng)可以將本設(shè)備作為通用塊設(shè)備使用,并且上層存儲(chǔ)系統(tǒng)靈活使用刪冗寫(xiě)操作,即可減少存儲(chǔ)空間使用,也可以保證重要數(shù)據(jù)的多個(gè)副本不被刪冗;所述方法通過(guò)增加兩個(gè)I/O完成函數(shù)的狀態(tài),在不修改現(xiàn)有寫(xiě)流程的基礎(chǔ)上,支持刪冗結(jié)果返回上層存儲(chǔ)系統(tǒng),最小化上層存儲(chǔ)系統(tǒng)使用刪冗塊設(shè)備帶來(lái)的改動(dòng)。圖I是本發(fā)明的基于位置敏感哈希的刪冗塊設(shè)備存儲(chǔ)方法流程圖;圖2是相似數(shù)據(jù)段元數(shù)據(jù)集合索引表示意圖。具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方式作進(jìn)一步詳細(xì)描述。以下實(shí)施例用于說(shuō)明本發(fā)明,但不用來(lái)限制本發(fā)明的范圍。圖I是本發(fā)明的基于位置敏感哈希的刪冗塊設(shè)備存儲(chǔ)方法流程圖。如圖I所示,所述方法包括步驟A:在塊設(shè)備層增加刪冗寫(xiě)操作,判斷當(dāng)前寫(xiě)操作的類(lèi)型是否是刪冗寫(xiě)操作,如果是,執(zhí)行步驟B;否則,直接將所述當(dāng)前寫(xiě)操作的數(shù)據(jù)寫(xiě)入二級(jí)存儲(chǔ),即執(zhí)行現(xiàn)有的寫(xiě)操作。所述步驟A中,未改變?cè)械淖x、寫(xiě)操作,可以保證已有的不支持刪冗塊設(shè)備的存儲(chǔ)系統(tǒng)仍然可以按照普通塊設(shè)備方式使用刪冗塊設(shè)備;而支持刪冗塊設(shè)備的存儲(chǔ)系統(tǒng),則可以根據(jù)需要選擇使用刪冗寫(xiě)操作,讓刪冗塊設(shè)備對(duì)寫(xiě)入的數(shù)據(jù)進(jìn)行內(nèi)嵌刪冗。這樣,上層存儲(chǔ)系統(tǒng)對(duì)于重要的需要保存多個(gè)副本的數(shù)據(jù),可以仍然使用現(xiàn)有的非刪冗的寫(xiě)操作,避免刪冗塊設(shè)備將多個(gè)相同副本數(shù)據(jù)刪掉只保留一份,以保證上層系統(tǒng)對(duì)數(shù)據(jù)可靠性的要求。B:獲取發(fā)起刪冗寫(xiě)操作的進(jìn)程ID(identity,標(biāo)識(shí)號(hào)碼),根據(jù)所述進(jìn)程ID判斷是否存在對(duì)應(yīng)所述刪冗寫(xiě)操作的刪冗隊(duì)列,如果是,將所述刪冗隊(duì)列作為當(dāng)前工作隊(duì)列,執(zhí)行步驟C;否則,創(chuàng)建新的刪冗隊(duì)列作為當(dāng)前工作隊(duì)列,執(zhí)行步驟C,這里新創(chuàng)建的刪冗隊(duì)列通過(guò)所述進(jìn)程ID與所述刪冗寫(xiě)操作相對(duì)應(yīng)。上層存儲(chǔ)系統(tǒng)為了有效提高訪問(wèn)存儲(chǔ)設(shè)備的性能,一般盡可能采用順序讀、寫(xiě)操作,上層存儲(chǔ)系統(tǒng)通過(guò)建立文件緩存等方法提高對(duì)塊設(shè)備層順序訪問(wèn)比例。因此,塊設(shè)備層如果能利用經(jīng)常出現(xiàn)的數(shù)據(jù)段順序訪問(wèn)模式,將連續(xù)訪問(wèn)的數(shù)據(jù)塊元數(shù)據(jù)組織在一起,則可以實(shí)現(xiàn)多個(gè)元數(shù)據(jù)的連續(xù)訪問(wèn),這樣將大大減少對(duì)元數(shù)據(jù)進(jìn)行訪問(wèn)時(shí)帶來(lái)的磁盤(pán)隨機(jī)訪問(wèn)次數(shù),有效提高元數(shù)據(jù)處理性能。通常上層存儲(chǔ)系統(tǒng)的一個(gè)進(jìn)程在某個(gè)時(shí)間點(diǎn)上對(duì)一個(gè)文件進(jìn)行操作,因此根據(jù)發(fā)起刪冗寫(xiě)操作的進(jìn)程ID進(jìn)行分組,可以得到對(duì)一個(gè)文件連續(xù)訪問(wèn)的數(shù)據(jù)段,這種對(duì)一個(gè)文件連續(xù)訪問(wèn)的模式以后也會(huì)以很高概率重復(fù)出現(xiàn)。所述步驟B具體包括步驟BI:獲取發(fā)起刪冗寫(xiě)操作的進(jìn)程ID,將所述刪冗寫(xiě)操作的數(shù)據(jù)加入緩存,將通用設(shè)備層的1/0(輸入/輸出)完成函數(shù)的狀態(tài)設(shè)置為待處理。本發(fā)明為I/O完成函數(shù)增加待處理狀態(tài)和修改后的狀態(tài)(下述步驟G2中),即保證了不對(duì)通用塊設(shè)備寫(xiě)流程做太大改可以根據(jù)刪冗結(jié)果做相應(yīng)處理。這個(gè)流程也與通用塊設(shè)備寫(xiě)操作(即現(xiàn)有寫(xiě)操作)流程相符,最小化了上層存儲(chǔ)系統(tǒng)支持刪冗塊設(shè)備所需要的修改。所述刪冗寫(xiě)操作由獨(dú)立的刪冗線程完成。B2:所述刪冗線程根據(jù)所述進(jìn)程ID判斷是否存在對(duì)應(yīng)所述刪冗寫(xiě)操作的刪冗隊(duì)列,如果是,將所述刪冗隊(duì)列作為當(dāng)前工作隊(duì)列,執(zhí)行步驟C;否則,創(chuàng)建新的刪冗隊(duì)列作為當(dāng)前工作隊(duì)列,執(zhí)行步驟C。C:將所述刪冗寫(xiě)操作的數(shù)據(jù)按照預(yù)定大小分成多個(gè)數(shù)據(jù)塊,計(jì)算所述數(shù)據(jù)塊的安全哈希函數(shù)值作為所述數(shù)據(jù)塊的數(shù)字指紋,將所述數(shù)據(jù)塊、相應(yīng)的數(shù)字指紋以及當(dāng)前時(shí)間戳放入所述當(dāng)前工作隊(duì)列。所述安全哈希函數(shù)值采用SHA(SecureHashAlgorithm,安全散列算法)-1或者SHA-256。D:判斷所述當(dāng)前工作隊(duì)列中所述數(shù)據(jù)塊的數(shù)量是否超過(guò)閾值,如果是,將所述閾值個(gè)所述數(shù)據(jù)塊出隊(duì)列后作為一個(gè)數(shù)據(jù)段,執(zhí)行步驟F;否則,執(zhí)行步驟E。所述閾值一般為100個(gè)左右。E:判斷隊(duì)首的所述數(shù)據(jù)塊的等待時(shí)間是否超過(guò)預(yù)定時(shí)間,如果是,將所述當(dāng)前工作隊(duì)列中所有所述數(shù)據(jù)塊出隊(duì)列后作為一個(gè)數(shù)據(jù)段,執(zhí)行步驟F;否則,執(zhí)行步驟D。所述預(yù)定時(shí)間為5秒。這里采用了一個(gè)超時(shí)監(jiān)控線程,定期計(jì)算隊(duì)首的所述數(shù)據(jù)塊的時(shí)間戳與當(dāng)前時(shí)間之差,以判斷隊(duì)首的所述數(shù)據(jù)塊是否超時(shí)。F:計(jì)算所述數(shù)據(jù)段的位置敏感哈希函數(shù)值,根據(jù)所述位置敏感哈希函數(shù)值判斷是否存在所述數(shù)據(jù)段的相似數(shù)據(jù)段元數(shù)據(jù)集合,如果存在,執(zhí)行步驟G;否則,創(chuàng)建一個(gè)空集合作為所述數(shù)據(jù)段的相似數(shù)據(jù)段元數(shù)據(jù)集合,執(zhí)行步驟G。位置敏感哈希函數(shù)值(即LocationSensitiveHash,LSH)與一般的哈希函數(shù)值不同的是位置敏感性,也就是散列前的相似點(diǎn)經(jīng)過(guò)哈希之后,也能夠在一定程度上相似,并且具有一定的概率保證。因此,使用合適的位置敏感哈希函數(shù)值可以將相似的數(shù)據(jù)段映射到哈希值空間的相近位置,從而保證了相似數(shù)據(jù)段組織和識(shí)別的要求。所述步驟F具體包括步驟Fl:使用bloomfilter(一種二進(jìn)制向量數(shù)據(jù)結(jié)構(gòu))對(duì)所述數(shù)據(jù)段進(jìn)行歸一化處理,生成定長(zhǎng)度數(shù)據(jù)塊特征向量;F2:根據(jù)所述定長(zhǎng)度數(shù)據(jù)塊特征向量,通過(guò)基于p-stable的位置敏感哈希函數(shù)計(jì)算得到所述數(shù)據(jù)段的位置敏感哈希函數(shù)值;F3:根據(jù)所述位置敏感哈希函數(shù)值判斷二級(jí)存儲(chǔ)中是否存在所述數(shù)據(jù)段的相似數(shù)據(jù)段元數(shù)據(jù)集合,如果存在,執(zhí)行步驟G;否則,創(chuàng)建一個(gè)空集合作為所述數(shù)據(jù)段的相似數(shù)據(jù)段元數(shù)據(jù)集合,執(zhí)行步驟G。圖2是相似數(shù)據(jù)段元數(shù)據(jù)集合索引表示意圖,如圖2所示,在內(nèi)存中維護(hù)一個(gè)相似數(shù)據(jù)段元數(shù)據(jù)集合索引表,表中存有所述數(shù)據(jù)段的位置敏感哈希函數(shù)值和相應(yīng)的相似數(shù)據(jù)段元數(shù)據(jù)集合的地址,根據(jù)相似數(shù)據(jù)段元數(shù)據(jù)集合的地址可以在外部存儲(chǔ)(即二級(jí)存儲(chǔ))上查找到相似數(shù)據(jù)段元數(shù)據(jù)集合,進(jìn)而執(zhí)行步驟G。G:依次判斷所述數(shù)據(jù)段中的各所述數(shù)據(jù)塊的數(shù)字指紋是否存在于所述相似數(shù)據(jù)段元數(shù)據(jù)集合中,如果是,修改所述數(shù)據(jù)塊的存儲(chǔ)地址為所述數(shù)據(jù)指紋在所述相似數(shù)據(jù)段元數(shù)據(jù)集合中對(duì)應(yīng)的元數(shù)據(jù)的存儲(chǔ)地址;否則,在所述相似數(shù)據(jù)段元數(shù)據(jù)集合中生成所述數(shù)據(jù)塊的元數(shù)據(jù),所述元數(shù)據(jù)包括所述數(shù)據(jù)塊的數(shù)字指紋和存儲(chǔ)地址。在進(jìn)行所述數(shù)據(jù)段中各數(shù)據(jù)塊的查詢(xún)時(shí),如果能夠找到一個(gè)小的集合,僅僅對(duì)該集合中元素進(jìn)行數(shù)據(jù)查詢(xún)的結(jié)果就能夠與在整個(gè)數(shù)據(jù)集合中進(jìn)行數(shù)據(jù)查詢(xún)的結(jié)果在概率上相同,則可以提高數(shù)據(jù)查詢(xún)的效率。本發(fā)明正是利用了這一點(diǎn),將相似數(shù)據(jù)段(也就是包含有一定數(shù)量相似數(shù)據(jù)塊的數(shù)據(jù)段)放在一起構(gòu)成相似數(shù)據(jù)段元數(shù)據(jù)集合,從而查找該相似數(shù)據(jù)段元數(shù)據(jù)集合就可與查找所有數(shù)據(jù)段達(dá)到類(lèi)似的刪冗效果。所述步驟G具體包括步驟Gl:依次判斷所述數(shù)據(jù)段中的各所述數(shù)據(jù)塊的數(shù)字指紋是否存在于所述相似數(shù)據(jù)段元數(shù)據(jù)集合中,如果是,說(shuō)明二級(jí)存儲(chǔ)中已經(jīng)有了相同內(nèi)容的數(shù)據(jù)塊,不需要再次寫(xiě)入,從而執(zhí)行步驟G2;否則,說(shuō)明所述數(shù)據(jù)塊是新的,執(zhí)行步驟G3;G2:修改所述數(shù)據(jù)塊的存儲(chǔ)地址為所述數(shù)據(jù)指紋在所述相似數(shù)據(jù)段元數(shù)據(jù)集合中對(duì)應(yīng)的元數(shù)據(jù)的存儲(chǔ)地址,將所述元數(shù)據(jù)的引用值加1,將所述I/O完成函數(shù)的狀態(tài)設(shè)置為修改后的,返回所述數(shù)據(jù)塊的原存儲(chǔ)地址和修改后的存儲(chǔ)地址,將所述相似數(shù)據(jù)段元數(shù)據(jù)集合寫(xiě)回所述二級(jí)存儲(chǔ)。如果所述相似數(shù)據(jù)段元數(shù)據(jù)集合的存儲(chǔ)地址改變,相應(yīng)修改所述相似數(shù)據(jù)段元數(shù)據(jù)集合索引表。G3:在所述相似數(shù)據(jù)段元數(shù)據(jù)集合中生成所述數(shù)據(jù)塊的元數(shù)據(jù),將所述I/O完成函數(shù)的狀態(tài)設(shè)置為完成;所述元數(shù)據(jù)包括所述數(shù)據(jù)塊的數(shù)字指紋、存儲(chǔ)地址和引用值,所述引用值的初值為I。然后,將所述相似數(shù)據(jù)段元數(shù)據(jù)集合寫(xiě)回所述二級(jí)存儲(chǔ)。如果所述相似數(shù)據(jù)段元數(shù)據(jù)集合的存儲(chǔ)地址改變,相應(yīng)修改所述相似數(shù)據(jù)段元數(shù)據(jù)集合索引表。本發(fā)明實(shí)施例所述基于位置敏感哈希的刪冗塊設(shè)備存儲(chǔ)方法,具有一下優(yōu)勢(shì)所述方法通過(guò)將刪冗寫(xiě)操作根據(jù)進(jìn)程ID分組,有效利用同一進(jìn)程特定時(shí)間對(duì)同一文件操作帶來(lái)的數(shù)據(jù)局部性,為實(shí)現(xiàn)相似數(shù)據(jù)段刪冗提供基礎(chǔ),進(jìn)而利用位置敏感哈希函數(shù)將相似元數(shù)據(jù)集合映射到相同的哈??臻g位置,快速并準(zhǔn)確地識(shí)別出相似數(shù)據(jù)段,既有效降低了刪冗寫(xiě)操作使用內(nèi)存的次數(shù),又實(shí)現(xiàn)了對(duì)元數(shù)據(jù)集合的快速訪問(wèn),減少了刪冗寫(xiě)操作過(guò)程訪問(wèn)元數(shù)據(jù)的時(shí)間開(kāi)銷(xiāo),有效保證了刪冗塊設(shè)備寫(xiě)操作性能;所述方法既可以使支持刪冗塊設(shè)備的上層存儲(chǔ)系統(tǒng)方便使用塊設(shè)備內(nèi)嵌刪冗功能,也使已有不支持刪冗塊設(shè)備的上層存儲(chǔ)系統(tǒng)可以將本設(shè)備作為通用塊設(shè)備使用,并且上層存儲(chǔ)系統(tǒng)靈活使用刪冗寫(xiě)操作,即可減少存儲(chǔ)空間使用,也可以保證重要數(shù)據(jù)的多個(gè)副本不被刪冗;所述方法通過(guò)增加兩個(gè)I/o完成函數(shù)的狀態(tài),在不修改現(xiàn)有寫(xiě)流程的基礎(chǔ)上,支持刪冗結(jié)果返回上層存儲(chǔ)系統(tǒng),最小化上層存儲(chǔ)系統(tǒng)使用刪冗塊設(shè)備帶來(lái)的改動(dòng)。以上實(shí)施方式僅用于說(shuō)明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)
技術(shù)領(lǐng)域
的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專(zhuān)利保護(hù)范圍應(yīng)由權(quán)利要求限定。權(quán)利要求1.一種基于位置敏感哈希的刪冗塊設(shè)備存儲(chǔ)方法,其特征在于,包括步驟B:獲取發(fā)起刪冗寫(xiě)操作的進(jìn)程ID,根據(jù)所述進(jìn)程ID判斷是否存在對(duì)應(yīng)所述刪冗寫(xiě)操作的刪冗隊(duì)列,如果是,將所述刪冗隊(duì)列作為當(dāng)前工作隊(duì)列,執(zhí)行步驟C;否則,創(chuàng)建新的刪冗隊(duì)列作為當(dāng)前工作隊(duì)列,執(zhí)行步驟C;C:將所述刪冗寫(xiě)操作的數(shù)據(jù)分成多個(gè)數(shù)據(jù)塊,計(jì)算每個(gè)所述數(shù)據(jù)塊的數(shù)字指紋,將所述數(shù)據(jù)塊和相應(yīng)的數(shù)字指紋放入所述當(dāng)前工作隊(duì)列;D:判斷所述當(dāng)前工作隊(duì)列中所述數(shù)據(jù)塊的數(shù)量是否超過(guò)閾值,如果是,將所述閾值個(gè)所述數(shù)據(jù)塊出隊(duì)列后作為一個(gè)數(shù)據(jù)段,執(zhí)行步驟F;否則,執(zhí)行步驟E;E:判斷隊(duì)首的所述數(shù)據(jù)塊的等待時(shí)間是否超過(guò)預(yù)定時(shí)間,如果是,將所述當(dāng)前工作隊(duì)列中所有所述數(shù)據(jù)塊出隊(duì)列后作為一個(gè)數(shù)據(jù)段,執(zhí)行步驟F;否則,執(zhí)行步驟D;F:計(jì)算所述數(shù)據(jù)段的位置敏感哈希函數(shù)值,根據(jù)所述位置敏感哈希函數(shù)值判斷是否存在所述數(shù)據(jù)段的相似數(shù)據(jù)段元數(shù)據(jù)集合,如果存在,執(zhí)行步驟G;否則,創(chuàng)建一個(gè)空集合作為所述數(shù)據(jù)段的相似數(shù)據(jù)段元數(shù)據(jù)集合,執(zhí)行步驟G;G:依次判斷所述數(shù)據(jù)段中的各所述數(shù)據(jù)塊的數(shù)字指紋是否存在于所述相似數(shù)據(jù)段元數(shù)據(jù)集合中,如果是,修改所述數(shù)據(jù)塊的存儲(chǔ)地址為所述數(shù)據(jù)指紋在所述相似數(shù)據(jù)段元數(shù)據(jù)集合中對(duì)應(yīng)的元數(shù)據(jù)的存儲(chǔ)地址;否則,在所述相似數(shù)據(jù)段元數(shù)據(jù)集合中生成所述數(shù)據(jù)塊的元數(shù)據(jù),所述元數(shù)據(jù)包括所述數(shù)據(jù)塊的數(shù)字指紋和存儲(chǔ)地址。2.如權(quán)利要求I所述的方法,其特征在于,在所述步驟B之前還包括步驟A:在塊設(shè)備層增加刪冗寫(xiě)操作,判斷當(dāng)前寫(xiě)操作的類(lèi)型是否是刪冗寫(xiě)操作,如果是,執(zhí)行步驟B;否則,直接將所述當(dāng)前寫(xiě)操作的數(shù)據(jù)寫(xiě)入二級(jí)存儲(chǔ)。3.如權(quán)利要求I所述的方法,其特征在于,所述步驟B具體包括步驟BI:獲取發(fā)起刪冗寫(xiě)操作的進(jìn)程ID,將所述刪冗寫(xiě)操作的數(shù)據(jù)加入緩存,將通用設(shè)備層的I/O完成函數(shù)的狀態(tài)設(shè)置為待處理;B2:根據(jù)所述進(jìn)程ID判斷是否存在對(duì)應(yīng)所述刪冗寫(xiě)操作的刪冗隊(duì)列,如果是,將所述刪冗隊(duì)列作為當(dāng)前工作隊(duì)列,執(zhí)行步驟C;否則,創(chuàng)建新的刪冗隊(duì)列作為當(dāng)前工作隊(duì)列,執(zhí)行步驟C。4.如權(quán)利要求3所述的方法,其特征在于,所述步驟C具體包括步驟將所述刪冗寫(xiě)操作的數(shù)據(jù)按照預(yù)定大小分成多個(gè)數(shù)據(jù)塊,計(jì)算所述數(shù)據(jù)塊的安全哈希函數(shù)值作為所述數(shù)據(jù)塊的數(shù)字指紋,將所述數(shù)據(jù)塊和相應(yīng)的數(shù)字指紋放入所述當(dāng)前工作隊(duì)列。5.如權(quán)利要求4述的方法,其特征在于,所述步驟D中,所述閾值為100。6.如權(quán)利要求4所述的方法,其特征在于,所述步驟E中,所述預(yù)定時(shí)間為5秒。7.如權(quán)利要求4所述的方法,其特征在于,所述步驟F具體包括步驟Fl:使用bloomfilter對(duì)所述數(shù)據(jù)段進(jìn)行歸一化處理,生成定長(zhǎng)度數(shù)據(jù)塊特征向量;F2:根據(jù)所述定長(zhǎng)度數(shù)據(jù)塊特征向量,通過(guò)基于p-stable的位置敏感哈希函數(shù)計(jì)算得到所述數(shù)據(jù)段的位置敏感哈希函數(shù)值;F3:根據(jù)所述位置敏感哈希函數(shù)值判斷二級(jí)存儲(chǔ)中是否存在所述數(shù)據(jù)段的相似數(shù)據(jù)段元數(shù)據(jù)集合,如果存在,執(zhí)行步驟G;否則,創(chuàng)建一個(gè)空集合作為所述數(shù)據(jù)段的相似數(shù)據(jù)段元數(shù)據(jù)集合,執(zhí)行步驟G。8.如權(quán)利要求7所述的方法,其特征在于,所述步驟G具體包括步驟Gl:依次判斷所述數(shù)據(jù)段中的各所述數(shù)據(jù)塊的數(shù)字指紋是否存在于所述相似數(shù)據(jù)段元數(shù)據(jù)集合中,如果是,執(zhí)行步驟G2;否則,執(zhí)行步驟G3;G2:修改所述數(shù)據(jù)塊的存儲(chǔ)地址為所述數(shù)據(jù)指紋在所述相似數(shù)據(jù)段元數(shù)據(jù)集合中對(duì)應(yīng)的元數(shù)據(jù)的存儲(chǔ)地址,將所述元數(shù)據(jù)的引用值加1,將所述I/O完成函數(shù)的狀態(tài)設(shè)置為修改后的,返回所述數(shù)據(jù)塊的原存儲(chǔ)地址和修改后的存儲(chǔ)地址,將所述相似數(shù)據(jù)段元數(shù)據(jù)集合寫(xiě)回所述二級(jí)存儲(chǔ);G3:在所述相似數(shù)據(jù)段元數(shù)據(jù)集合中生成所述數(shù)據(jù)塊的元數(shù)據(jù),將所述I/O完成函數(shù)的狀態(tài)設(shè)置為完成,將所述相似數(shù)據(jù)段元數(shù)據(jù)集合寫(xiě)回所述二級(jí)存儲(chǔ);所述元數(shù)據(jù)包括所述數(shù)據(jù)塊的數(shù)字指紋、存儲(chǔ)地址和引用值,所述引用值的初值為I。全文摘要本發(fā)明公開(kāi)了一種基于位置敏感哈希的刪冗塊設(shè)備存儲(chǔ)方法,涉及數(shù)據(jù)存儲(chǔ)領(lǐng)域。該方法包括將刪冗寫(xiě)操作的數(shù)據(jù)塊和相應(yīng)的數(shù)字指紋放入當(dāng)前工作隊(duì)列;D判斷隊(duì)列中數(shù)據(jù)塊的數(shù)量是否超過(guò)閾值,如果是,將閾值個(gè)數(shù)據(jù)塊作為一個(gè)數(shù)據(jù)段,執(zhí)行步驟F;否則,執(zhí)行步驟E;E判斷隊(duì)首數(shù)據(jù)塊是否超時(shí),如果是,將所有數(shù)據(jù)塊作為一個(gè)數(shù)據(jù)段,執(zhí)行步驟F;否則,執(zhí)行步驟D;F判斷是否存在相似數(shù)據(jù)段元數(shù)據(jù)集合,如果是,執(zhí)行步驟G;否則,創(chuàng)建一個(gè)空集合,執(zhí)行步驟G;G依次判斷各數(shù)據(jù)塊的數(shù)字指紋是否存在于相似數(shù)據(jù)段元數(shù)據(jù)集合中,如果是,修改數(shù)據(jù)塊的存儲(chǔ)地址;否則,生成數(shù)據(jù)塊的元數(shù)據(jù)。該方法減少了刪冗寫(xiě)操作過(guò)程訪問(wèn)元數(shù)據(jù)的時(shí)間開(kāi)銷(xiāo)。文檔編號(hào)G06F17/30GK102722450SQ20121016824公開(kāi)日2012年10月10日申請(qǐng)日期2012年5月25日優(yōu)先權(quán)日2012年5月25日發(fā)明者余宏亮,孫競(jìng)申請(qǐng)人:清華大學(xué)
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
清河县| 额尔古纳市| 南充市| 易门县| 兰州市| 保定市| 陇川县| 千阳县| 泗水县| 淮安市| 呼和浩特市| 临朐县| 吉木萨尔县| 贵德县| 广宗县| 交城县| 慈溪市| 宁安市| 青田县| 老河口市| 柘城县| 无为县| 绍兴县| 舟山市| 安宁市| 安陆市| 东丰县| 乳山市| 开远市| 河津市| 祥云县| 西安市| 花莲市| 余干县| 宜兰市| 祥云县| 甘南县| 昔阳县| 红原县| 寿光市| 江川县|