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

一種重復(fù)數(shù)據(jù)刪除的方法及裝置制造方法

文檔序號(hào):6546830閱讀:233來(lái)源:國(guó)知局
一種重復(fù)數(shù)據(jù)刪除的方法及裝置制造方法
【專(zhuān)利摘要】本發(fā)明實(shí)施例提供了一種重復(fù)數(shù)據(jù)刪除的方法及裝置,該方法包括:根據(jù)初始接收的第一鏡像文件的數(shù)據(jù)塊所對(duì)應(yīng)的指紋建立指紋庫(kù),第一鏡像文件為初始接收的虛擬機(jī)的鏡像文件;將指紋庫(kù)劃分為至少一個(gè)指紋模塊,每個(gè)指紋模塊對(duì)應(yīng)一種操作系統(tǒng)類(lèi)型;接收第二鏡像文件,調(diào)用與第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊;獲取第二鏡像文件的數(shù)據(jù)塊對(duì)應(yīng)的指紋;將獲取的指紋與調(diào)用出的指紋模塊中的指紋一一進(jìn)行比較,刪除與調(diào)用出的指紋模塊中的指紋重復(fù)的指紋對(duì)應(yīng)的數(shù)據(jù)塊。采用本發(fā)明,能通過(guò)建立指紋庫(kù)并對(duì)指紋庫(kù)按照操作系統(tǒng)的類(lèi)型進(jìn)行劃分,提高對(duì)比指紋的效率以加快重復(fù)數(shù)據(jù)刪除的速度。
【專(zhuān)利說(shuō)明】一種重復(fù)數(shù)據(jù)刪除的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種重復(fù)數(shù)據(jù)刪除的方法及裝置。
【背景技術(shù)】
[0002]虛擬機(jī)是指通過(guò)軟件模擬的具有完整硬件系統(tǒng)功能的,運(yùn)行在一個(gè)完全隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng),在一臺(tái)物理計(jì)算機(jī)上模擬出另一臺(tái)或多臺(tái)虛擬的計(jì)算機(jī),因此可以在同一臺(tái)物理計(jì)算機(jī)上運(yùn)行多個(gè)系統(tǒng)。目前許多用戶(hù)通過(guò)運(yùn)行虛擬機(jī)來(lái)提高計(jì)算機(jī)運(yùn)行效率的方式已經(jīng)逐漸普及。然而,虛擬機(jī)的鏡像文件的數(shù)據(jù)存在很高的重復(fù)率,因此需要將重復(fù)的鏡像文件刪除,減少存儲(chǔ)系統(tǒng)中使用的存儲(chǔ)容量。一般情況下,重刪服務(wù)器接收客戶(hù)端發(fā)送的鏡像文件,再針對(duì)接收的鏡像文件進(jìn)行重復(fù)數(shù)據(jù)刪除。若此時(shí)客戶(hù)端傳輸?shù)乃俣却笥谥貏h服務(wù)器刪除鏡像文件的速度,例如同時(shí)有大量客戶(hù)端并發(fā)傳輸?shù)那闆r下,容易造成系統(tǒng)瓶頸,占用客戶(hù)端的資源,甚至可能導(dǎo)致數(shù)據(jù)的丟失。因此,如何消除系統(tǒng)瓶頸以提高重刪速度成為技術(shù)開(kāi)發(fā)人員關(guān)注的焦點(diǎn)。
[0003]一種現(xiàn)有的方法主要針對(duì)客戶(hù)端,通過(guò)限制客戶(hù)端傳輸鏡像文件的吞吐率以及并發(fā)客戶(hù)端的個(gè)數(shù)來(lái)迎合重刪服務(wù)器的吞吐率,以避免產(chǎn)生瓶頸。然而,單純從限制客戶(hù)端的角度解決系統(tǒng)的瓶頸會(huì)增加客戶(hù)端的排隊(duì)時(shí)間,并減少客戶(hù)端傳輸?shù)溺R像文件的數(shù)量,對(duì)客戶(hù)端傳輸鏡像文件帶來(lái)極大的不良影響,無(wú)法為客戶(hù)端帶來(lái)更好的服務(wù)。
[0004]另一現(xiàn)有的解決方法則主要針對(duì)重刪服務(wù)器,即提高重刪服務(wù)器的硬件性能。第一方面通過(guò)使用固態(tài)硬盤(pán)或磁盤(pán)陣列而提升重刪服務(wù)器中存儲(chǔ)系統(tǒng)的吞吐率。第二方面通過(guò)提高處理器的性能以減少對(duì)比指紋的時(shí)間,減少延遲等。第三方面在提高處理器性能的情況下通過(guò)使用更高性能的網(wǎng)卡提高網(wǎng)絡(luò)的傳輸速率,避免讓客戶(hù)端的傳輸速率影響重刪的速度。雖然提升重刪服務(wù)器的硬件性能能夠在不耽誤客戶(hù)端傳輸鏡像文件的情況下消除系統(tǒng)的瓶頸,但其硬件成本過(guò)高使諸多開(kāi)發(fā)商望而卻步。

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

[0005]本發(fā)明實(shí)施例提供一種重復(fù)數(shù)據(jù)刪除的方法及裝置,能通過(guò)建立指紋庫(kù)并對(duì)指紋庫(kù)按照操作系統(tǒng)的類(lèi)型進(jìn)行劃分,提高對(duì)比指紋的效率以加快重復(fù)數(shù)據(jù)刪除的速度。
[0006]本發(fā)明實(shí)施例第一方面提供一種重復(fù)數(shù)據(jù)刪除的方法,包括:
[0007]根據(jù)初始接收的第一鏡像文件的數(shù)據(jù)塊所對(duì)應(yīng)的指紋建立指紋庫(kù),所述第一鏡像文件為初始接收的虛擬機(jī)的鏡像文件;
[0008]將所述指紋庫(kù)劃分為至少一個(gè)指紋模塊,每個(gè)指紋模塊對(duì)應(yīng)一種操作系統(tǒng)類(lèi)型;
[0009]接收第二鏡像文件,調(diào)用與所述第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,所述第二鏡像文件為在所述初始接收的虛擬機(jī)的鏡像文件之后接收到的虛擬機(jī)的鏡像文件;
[0010]獲取所述第二鏡像文件的數(shù)據(jù)塊對(duì)應(yīng)的指紋;
[0011 ] 將所述獲取的指紋與所述調(diào)用出的指紋模塊中的指紋一一進(jìn)行比較,刪除與所述調(diào)用出的指紋模塊中的指紋重復(fù)的指紋對(duì)應(yīng)的數(shù)據(jù)塊。
[0012]結(jié)合本發(fā)明實(shí)施例第一方面的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例第一方面的第一種可能的實(shí)現(xiàn)方式中,所述第一鏡像文件和所述第二鏡像文件均攜帶類(lèi)型指示信息,所述類(lèi)型指示信息用于指示所述第一鏡像文件和所述第二鏡像文件的操作系統(tǒng)類(lèi)型以及操作系統(tǒng)的版本類(lèi)型。
[0013]結(jié)合本發(fā)明實(shí)施例第一方面的第一種可能的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例第一方面的第二種可能的實(shí)現(xiàn)方式中,所述將所述指紋庫(kù)劃分為至少一個(gè)指紋模塊,具體包括:
[0014]根據(jù)所述操作系統(tǒng)類(lèi)型將所述指紋庫(kù)劃分為至少一個(gè)指紋模塊,將無(wú)法識(shí)別的操作系統(tǒng)類(lèi)型的指紋歸為公共指紋模塊;
[0015]按照所述操作系統(tǒng)的版本類(lèi)型將每個(gè)指紋模塊劃分為至少一個(gè)指紋單元。
[0016]結(jié)合本發(fā)明實(shí)施例第一方面的第二種可能的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例第一方面的第三種可能的實(shí)現(xiàn)方式中,所述按照所述操作系統(tǒng)的版本類(lèi)型將每個(gè)指紋模塊劃分為至少一個(gè)指紋單元,具體包括:
[0017]若任意兩個(gè)版本的指紋的重復(fù)率大于第一預(yù)設(shè)值,則合并所述兩個(gè)版本對(duì)應(yīng)的指紋單元,并刪除所述合并的指紋單元中重復(fù)的指紋,所述第一預(yù)設(shè)值是根據(jù)CPU的存儲(chǔ)空間以及對(duì)比較指紋的速度的要求而設(shè)定的。
[0018]結(jié)合本發(fā)明實(shí)施例第一方面的第二種或第三種中的任一種可能的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例第一方面的第四種可能的實(shí)現(xiàn)方式中,所述接收第二鏡像文件,具體包括:
[0019]接收所述第二鏡像文件,根據(jù)所述第二鏡像文件攜帶的所述類(lèi)型指示信息識(shí)別所述第二鏡像文件的操作系統(tǒng)類(lèi)型以及所述操作系統(tǒng)的版本類(lèi)型;
[0020]所述調(diào)用與所述第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,具體包括:
[0021]調(diào)用與所述第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,在所述調(diào)用出的指紋模塊中,調(diào)出與所述第二鏡像文件的版本類(lèi)型對(duì)應(yīng)的指紋單元。
[0022]結(jié)合本發(fā)明實(shí)施例第一方面的第四種可能的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例第一方面的第五種可能的實(shí)現(xiàn)方式中,所述將所述獲取的指紋與所述調(diào)用出的指紋模塊中的指紋一一進(jìn)行比較,刪除與所述調(diào)用出的指紋模塊中的指紋重復(fù)的指紋對(duì)應(yīng)的數(shù)據(jù)塊,具體包括:
[0023]根據(jù)所述調(diào)用出的指紋模塊中與所述第二鏡像文件的版本類(lèi)型對(duì)應(yīng)的指紋單元,創(chuàng)建多個(gè)線(xiàn)程將所述獲取的指紋與所述指紋單元中的指紋一一進(jìn)行比較,刪除與所述指紋單元中的指紋重復(fù)的指紋對(duì)應(yīng)的數(shù)據(jù)塊。
[0024]結(jié)合本發(fā)明實(shí)施例第一方面的第五種可能的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例第一方面的第六種可能的實(shí)現(xiàn)方式中,創(chuàng)建所述線(xiàn)程的條件包括以下至少一種:
[0025]所述CPU的使用率小于第二預(yù)設(shè)值,所述第二預(yù)設(shè)值是根據(jù)操作系統(tǒng)對(duì)所述CPU的使用率的需求而設(shè)定的;
[0026]在所述多個(gè)線(xiàn)程將所述獲取的指紋與所述指紋單元中的指紋一一進(jìn)行比較時(shí),所述第二鏡像文件中未被比較的數(shù)據(jù)塊的指紋的數(shù)量大于第三預(yù)設(shè)值,所述第三預(yù)設(shè)值是根據(jù)對(duì)比較指紋的速度的要求而設(shè)定的;
[0027]在檢測(cè)到無(wú)線(xiàn)程執(zhí)行比較的操作時(shí),存在至少一個(gè)未被比較的數(shù)據(jù)塊的指紋。
[0028]本發(fā)明實(shí)施例第二方面提供一種重復(fù)數(shù)據(jù)刪除的裝置,包括:[0029]建立模塊,用于根據(jù)初始接收的第一鏡像文件的數(shù)據(jù)塊所對(duì)應(yīng)的指紋建立指紋庫(kù),所述第一鏡像文件為初始接收的虛擬機(jī)的鏡像文件;
[0030]劃分模塊,用于將所述建立模塊建立的指紋庫(kù)劃分為至少一個(gè)指紋模塊,每個(gè)指紋模塊對(duì)應(yīng)一種操作系統(tǒng)類(lèi)型;
[0031]調(diào)用模塊,用于接收第二鏡像文件,調(diào)用與所述第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,所述第二鏡像文件為在所述初始接收的虛擬機(jī)的鏡像文件之后接收到的虛擬機(jī)的鏡像文件;
[0032]獲取模塊,用于獲取所述第二鏡像文件的數(shù)據(jù)塊對(duì)應(yīng)的指紋;
[0033]刪除模塊,用于將所述獲取模塊獲取的指紋與所述調(diào)用模塊調(diào)用出的指紋模塊中的指紋一一進(jìn)行比較,刪除與所述調(diào)用出的指紋模塊中的指紋重復(fù)的指紋對(duì)應(yīng)的數(shù)據(jù)塊。
[0034]結(jié)合本發(fā)明實(shí)施例第二方面的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例第二方面的第一種可能的實(shí)現(xiàn)方式中,所述第一鏡像文件和所述第二鏡像文件均攜帶類(lèi)型指示信息,所述類(lèi)型指示信息用于指示所述第一鏡像文件和所述第二鏡像文件的操作系統(tǒng)類(lèi)型以及操作系統(tǒng)的版本類(lèi)型。
[0035]結(jié)合本發(fā)明實(shí)施例第二方面的第一種可能的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例第二方面的第二種可能的實(shí)現(xiàn)方式中,所述劃分模塊包括:
[0036]第一劃分單元,用于根據(jù)所述操作系統(tǒng)類(lèi)型將所述指紋庫(kù)劃分為至少一個(gè)指紋模塊,將無(wú)法識(shí)別的操作系統(tǒng)類(lèi)型的指紋歸為公共指紋模塊;
[0037]第二劃分單元,用于按照所述操作系統(tǒng)的版本類(lèi)型將每個(gè)指紋模塊劃分為至少一個(gè)指紋單元。
[0038]結(jié)合本發(fā)明實(shí)施例第二方面的第二種可能的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例第二方面的第三種可能的實(shí)現(xiàn)方式中,所述第二劃分單元,具體用于:
[0039]若任意兩個(gè)版本的指紋的重復(fù)率大于第一預(yù)設(shè)值,則合并所述兩個(gè)版本對(duì)應(yīng)的指紋單元,并刪除所述合并的指紋單元中重復(fù)的指紋,所述第一預(yù)設(shè)值是根據(jù)CPU的存儲(chǔ)空間以及對(duì)比較指紋的速度的要求而設(shè)定的。
[0040]結(jié)合本發(fā)明實(shí)施例第二方面的第二種或第三種中的任一種可能的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例第二方面的第四種可能的實(shí)現(xiàn)方式中,所述調(diào)用模塊,具體用于:
[0041]接收所述第二鏡像文件,根據(jù)所述第二鏡像文件攜帶的所述類(lèi)型指示信息識(shí)別所述第二鏡像文件的操作系統(tǒng)類(lèi)型以及所述操作系統(tǒng)的版本類(lèi)型;
[0042]所述調(diào)用模塊,具體還用于:
[0043]調(diào)用與所述第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,在所述調(diào)用出的指紋模塊中,調(diào)出與所述第二鏡像文件的版本類(lèi)型對(duì)應(yīng)的指紋單元。
[0044]結(jié)合本發(fā)明實(shí)施例第二方面的第四種可能的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例第二方面的第五種可能的實(shí)現(xiàn)方式中,所述刪除模塊,具體用于:
[0045]根據(jù)所述調(diào)用模塊調(diào)用出的指紋模塊中與所述第二鏡像文件的版本類(lèi)型對(duì)應(yīng)的指紋單元,創(chuàng)建多個(gè)線(xiàn)程將所述獲取模塊獲取的指紋與所述指紋單元中的指紋一一進(jìn)行比較,刪除與所述指紋單元中的指紋重復(fù)的指紋對(duì)應(yīng)的數(shù)據(jù)塊。
[0046]結(jié)合本發(fā)明實(shí)施例第二方面的第五種可能的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例第二方面的第六種可能的實(shí)現(xiàn)方式中,所述刪除模塊創(chuàng)建所述線(xiàn)程的條件包括以下至少一種:[0047]所述CPU的使用率小于第二預(yù)設(shè)值,所述第二預(yù)設(shè)值是根據(jù)操作系統(tǒng)對(duì)所述CPU的使用率的需求而設(shè)定的;
[0048]在所述多個(gè)線(xiàn)程將所述獲取的指紋與所述指紋單元中的指紋一一進(jìn)行比較時(shí),所述第二鏡像文件中未被比較的數(shù)據(jù)塊的指紋的數(shù)量大于第三預(yù)設(shè)值,所述第三預(yù)設(shè)值是根據(jù)對(duì)比較指紋的速度的要求而設(shè)定的;
[0049]在檢測(cè)到無(wú)線(xiàn)程執(zhí)行比較的操作時(shí),存在至少一個(gè)未被比較的數(shù)據(jù)塊的指紋。
[0050]采用本發(fā)明實(shí)施例,可針對(duì)初始接收的虛擬機(jī)的鏡像文件的數(shù)據(jù)塊對(duì)應(yīng)的指紋建立指紋庫(kù),并按照不同鏡像文件的操作系統(tǒng)類(lèi)型將指紋庫(kù)劃分為至少一個(gè)指紋模塊。當(dāng)后續(xù)接收到其他鏡像文件時(shí),調(diào)入與其他鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,并創(chuàng)建多個(gè)線(xiàn)程對(duì)其他鏡像文件中的多個(gè)數(shù)據(jù)塊所對(duì)應(yīng)的指紋與調(diào)入的指紋模塊中的指紋進(jìn)行一一對(duì)比。最后刪除與調(diào)入的指紋模塊中的指紋相同的指紋對(duì)應(yīng)的數(shù)據(jù)塊。在保證避免丟失數(shù)據(jù)的情況下提高對(duì)比指紋的效率,從而加快重復(fù)數(shù)據(jù)刪除的速度,消除由于傳輸速度大于重復(fù)數(shù)據(jù)刪除的速度所產(chǎn)生的系統(tǒng)瓶頸。
【專(zhuān)利附圖】

【附圖說(shuō)明】
[0051]為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0052]圖1是本發(fā)明實(shí)施例的一種重復(fù)數(shù)據(jù)刪除的方法的流程示意圖;
[0053]圖2是本發(fā)明實(shí)施例的另一種重復(fù)數(shù)據(jù)刪除的方法的流程示意圖;
[0054]圖3是本發(fā)明實(shí)施例的另一種重復(fù)數(shù)據(jù)刪除的方法的指紋庫(kù)的劃分示意圖;
[0055]圖4是本發(fā)明實(shí)施例的另一種重復(fù)數(shù)據(jù)刪除的方法的操作示意圖;
[0056]圖5是本發(fā)明實(shí)施例的一種重復(fù)數(shù)據(jù)刪除的裝置的結(jié)構(gòu)示意圖;
[0057]圖6是本發(fā)明實(shí)施例的一種重復(fù)數(shù)據(jù)刪除的裝置的劃分模塊的結(jié)構(gòu)示意圖;
[0058]圖7是本發(fā)明實(shí)施例提供的服務(wù)器的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0059]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0060]采用本發(fā)明,能通過(guò)建立指紋庫(kù)并對(duì)指紋庫(kù)按照操作系統(tǒng)的類(lèi)型進(jìn)行劃分,提高對(duì)比指紋的效率以加快重復(fù)數(shù)據(jù)刪除的速度。
[0061]請(qǐng)參閱圖1,圖1是本發(fā)明實(shí)施例的一種重復(fù)數(shù)據(jù)刪除的方法的流程示意圖。本發(fā)明實(shí)施例主要針對(duì)虛擬機(jī)的鏡像文件,且重復(fù)數(shù)據(jù)刪除的工作方式是異步的,即先接收客戶(hù)端傳輸?shù)溺R像文件,再對(duì)鏡像文件進(jìn)行重復(fù)數(shù)據(jù)刪除。重復(fù)數(shù)據(jù)刪除的實(shí)施裝置可由服務(wù)器實(shí)現(xiàn),服務(wù)器與眾多客戶(hù)端之間通過(guò)路由器連接,路由器作為轉(zhuǎn)發(fā)鏡像文件的中介。本發(fā)明實(shí)施例所涉及的鏡像文件可來(lái)自不同的操作系統(tǒng),每個(gè)操作系統(tǒng)在進(jìn)行重復(fù)數(shù)據(jù)刪除時(shí)是相互獨(dú)立的,因此可對(duì)不同操作系統(tǒng)并行地重復(fù)數(shù)據(jù)刪除。
[0062]此外,本發(fā)明實(shí)施例所涉及的數(shù)據(jù)塊可通過(guò)采用散列函數(shù)算法計(jì)算數(shù)據(jù)塊的散列值,該散列值即為數(shù)據(jù)塊的指紋,根據(jù)數(shù)據(jù)塊獲取指紋的方式為現(xiàn)有技術(shù),本發(fā)明實(shí)施例則不贅述。
[0063]本發(fā)明實(shí)施例所涉及的第一鏡像文件既可包括至少一個(gè)虛擬機(jī)的鏡像文件,其中這至少一個(gè)虛擬機(jī)的鏡像文件可為不同虛擬機(jī)的鏡像文件,也可為一個(gè)虛擬機(jī)的鏡像文件,本發(fā)明實(shí)施例則以第一鏡像文件包括至少一個(gè)虛擬機(jī)的鏡像文件進(jìn)行舉例說(shuō)明。
[0064]如圖1所示,本發(fā)明實(shí)施例的一種重復(fù)數(shù)據(jù)刪除的方法可以包括以下步驟。
[0065]步驟100,根據(jù)初始接收的第一鏡像文件的數(shù)據(jù)塊所對(duì)應(yīng)的指紋建立指紋庫(kù),第一鏡像文件為初始接收的虛擬機(jī)的鏡像文件。
[0066]具體實(shí)現(xiàn)中,初始狀態(tài)下,客戶(hù)端向服務(wù)器傳送第一鏡像文件,其中第一鏡像文件包括至少一個(gè)虛擬機(jī)的鏡像文件,這至少一個(gè)虛擬機(jī)的鏡像文件可為不同虛擬機(jī)的鏡像文件。每個(gè)鏡像文件被切分為至少一個(gè)數(shù)據(jù)塊,并根據(jù)每個(gè)數(shù)據(jù)塊對(duì)應(yīng)的指紋建立指紋庫(kù),將所有指紋都存儲(chǔ)在指紋庫(kù)中。其中,分割鏡像文件的切分算法可以為完全文件檢測(cè)技術(shù)(WFD, Whole File Detection)、固定分塊檢測(cè)技術(shù)(FSP, Fixed-sized Partition)、可變分塊檢測(cè)技術(shù)(O)C, Content-Defined Chunking)及滑動(dòng)塊算法等任意一種。由于分割鏡像文件的切分算法為現(xiàn)有技術(shù),本發(fā)明實(shí)施例則不進(jìn)行具體說(shuō)明。
[0067]步驟110,將指紋庫(kù)劃分為至少一個(gè)指紋模塊,每個(gè)指紋模塊對(duì)應(yīng)一種操作系統(tǒng)類(lèi)型。
[0068]具體實(shí)現(xiàn)中,由于每個(gè)鏡像文件的操作系統(tǒng)類(lèi)型不一定相同,如果將所有操作系統(tǒng)類(lèi)型的指紋集合為一個(gè)指紋庫(kù),會(huì)為查找指紋增加難度。在針對(duì)后續(xù)劃分生成的數(shù)據(jù)塊的指紋與指紋庫(kù)內(nèi)的指紋進(jìn)行比較時(shí),需要對(duì)指紋庫(kù)內(nèi)的每個(gè)指紋進(jìn)行一一比較,從而增加對(duì)比指紋的時(shí)間,降低重刪的速度,產(chǎn)生系統(tǒng)的瓶頸。此外,由于指紋庫(kù)容量很大,無(wú)法完全放入內(nèi)存,也為后續(xù)重刪帶來(lái)不便。為了加快指紋查找速度,將所有指紋按照操作系統(tǒng)類(lèi)型進(jìn)行分組,每組為一個(gè)指紋模塊,每個(gè)指紋模塊代表一個(gè)操作系統(tǒng)類(lèi)型。操作系統(tǒng)類(lèi)型可為Windows XP、WIN7或者烏班圖(Ubuntu)系統(tǒng)等等。
[0069]步驟120,接收第二鏡像文件,調(diào)用與第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,第二鏡像文件為在初始接收的虛擬機(jī)的鏡像文件之后接收到的虛擬機(jī)的鏡像文件。
[0070]具體實(shí)現(xiàn)中,服務(wù)器在建立指紋庫(kù)之后,開(kāi)始接收客戶(hù)端發(fā)送的第二鏡像文件。在接收第二鏡像文件之后,服務(wù)器識(shí)別第二鏡像文件的操作系統(tǒng)類(lèi)型,根據(jù)其操作系統(tǒng)類(lèi)型調(diào)入相應(yīng)的指紋模塊到內(nèi)存中。其中,每個(gè)鏡像文件均攜帶各自的類(lèi)型指示信息,類(lèi)型指示信息用于指示鏡像文件的操作系統(tǒng)類(lèi)型。若第二鏡像文件攜帶的類(lèi)型指示信息指示第二鏡像文件的操作系統(tǒng)類(lèi)型為WIN7,則服務(wù)器在接收第二鏡像文件之后,調(diào)入包括WIN7所有指紋的指紋模塊進(jìn)行重刪。
[0071]步驟130,獲取第二鏡像文件的數(shù)據(jù)塊對(duì)應(yīng)的指紋。
[0072]具體實(shí)現(xiàn)中,服務(wù)器將接收的第二鏡像文件劃分為至少一個(gè)數(shù)據(jù)塊,并通過(guò)計(jì)算每個(gè)數(shù)據(jù)塊的散列值獲取數(shù)據(jù)塊的指紋。
[0073]步驟140,將獲取的指紋與調(diào)用出的指紋模塊中的指紋一一進(jìn)行比較,刪除與調(diào)用出的指紋模塊中的指紋重復(fù)的指紋對(duì)應(yīng)的數(shù)據(jù)塊。[0074]具體實(shí)現(xiàn)中,服務(wù)器得到每個(gè)數(shù)據(jù)塊的指紋之后,將這些指紋與調(diào)入的指紋模塊中的指紋一一進(jìn)行比較,當(dāng)在指紋模塊中查找到有相同的指紋時(shí),則刪除該指紋對(duì)應(yīng)的數(shù)據(jù)塊,保留被刪除的數(shù)據(jù)塊在磁盤(pán)中的物理地址,以便后續(xù)需要恢復(fù)鏡像文件時(shí),通過(guò)數(shù)據(jù)塊的物理地址在服務(wù)器的磁盤(pán)中調(diào)出數(shù)據(jù)塊。
[0075]作為一種可實(shí)施的方式,若服務(wù)器根據(jù)第二鏡像文件的數(shù)據(jù)塊的指紋在指紋模塊中沒(méi)有查找到相同的指紋,可將這個(gè)數(shù)據(jù)塊的指紋保存在指紋模塊中,并保存這個(gè)數(shù)據(jù)塊在服務(wù)器的磁盤(pán)中。
[0076]通過(guò)實(shí)施圖1所描述的方法,可針對(duì)初始接收的虛擬機(jī)的鏡像文件的數(shù)據(jù)塊對(duì)應(yīng)的指紋建立指紋庫(kù),并按照不同鏡像文件的操作系統(tǒng)類(lèi)型將指紋庫(kù)劃分為至少一個(gè)指紋模塊。當(dāng)后續(xù)接收到其他鏡像文件時(shí),調(diào)入與其他鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,并對(duì)其他鏡像文件中的多個(gè)數(shù)據(jù)塊所對(duì)應(yīng)的指紋與調(diào)入的指紋模塊中的指紋進(jìn)行一一對(duì)t匕。最后刪除與調(diào)入的指紋模塊中的指紋相同的指紋對(duì)應(yīng)的數(shù)據(jù)塊。在保證避免丟失數(shù)據(jù)的情況下提高對(duì)比指紋的效率,從而加快重復(fù)數(shù)據(jù)刪除的速度,消除由于傳輸速度大于重復(fù)數(shù)據(jù)刪除的速度所產(chǎn)生的系統(tǒng)瓶頸。
[0077]請(qǐng)參閱圖2,圖2是本發(fā)明實(shí)施例的另一種重復(fù)數(shù)據(jù)刪除的方法的流程示意圖。本發(fā)明實(shí)施例主要針對(duì)虛擬機(jī)的鏡像文件,并且重復(fù)數(shù)據(jù)刪除的工作方式是異步的,即先接收客戶(hù)端傳輸?shù)溺R像文件,再對(duì)鏡像文件進(jìn)行重復(fù)數(shù)據(jù)刪除。重復(fù)數(shù)據(jù)刪除的實(shí)施裝置可由服務(wù)器實(shí)現(xiàn),服務(wù)器與眾多客戶(hù)端之間通過(guò)路由器連接,路由器作為轉(zhuǎn)發(fā)鏡像文件的中介。本發(fā)明實(shí)施例所涉及的鏡像文件來(lái)自不同的操作系統(tǒng),每個(gè)操作系統(tǒng)在進(jìn)行重復(fù)數(shù)據(jù)刪除時(shí)是相互獨(dú)立的,因此可對(duì)不同操作系統(tǒng)并行地重復(fù)數(shù)據(jù)刪除。
[0078]此外,本發(fā)明實(shí)施例所涉及的數(shù)據(jù)塊可通過(guò)采用散列函數(shù)算法計(jì)算數(shù)據(jù)塊的散列值,該散列值即為數(shù)據(jù)塊的指紋,根據(jù)數(shù)據(jù)塊獲取指紋的方式為現(xiàn)有技術(shù),本發(fā)明實(shí)施例則不贅述。
[0079]本發(fā)明實(shí)施例所涉及的第一鏡像文件既可包括至少一個(gè)虛擬機(jī)的鏡像文件,其中這至少一個(gè)虛擬機(jī)的鏡像文件可為不同虛擬機(jī)的鏡像文件,也可為一個(gè)虛擬機(jī)的鏡像文件,本發(fā)明實(shí)施例則以第一鏡像文件包括至少一個(gè)虛擬機(jī)的鏡像文件進(jìn)行舉例說(shuō)明。
[0080]如圖2所示,本發(fā)明實(shí)施例的另一種重復(fù)數(shù)據(jù)刪除的方法可以包括以下步驟。
[0081]步驟200,根據(jù)初始接收的第一鏡像文件的數(shù)據(jù)塊所對(duì)應(yīng)的指紋建立指紋庫(kù),第一鏡像文件為初始接收的虛擬機(jī)的鏡像文件。
[0082]具體實(shí)現(xiàn)中,初始狀態(tài)下的服務(wù)器的指紋庫(kù)中不存在指紋,因此,服務(wù)器在第一次接收鏡像文件時(shí),將鏡像文件中所有數(shù)據(jù)塊的指紋保存在指紋庫(kù)中,并將所有數(shù)據(jù)塊保存在磁盤(pán)中。例如,客戶(hù)端向服務(wù)器傳送第一鏡像文件,其中第一鏡像文件包括至少一個(gè)虛擬機(jī)的鏡像文件,這至少一個(gè)虛擬機(jī)的鏡像文件可為不同虛擬機(jī)的鏡像文件。每個(gè)鏡像文件被分割為至少一個(gè)數(shù)據(jù)塊,并根據(jù)每個(gè)數(shù)據(jù)塊對(duì)應(yīng)的指紋建立指紋庫(kù),將所有指紋都存儲(chǔ)在指紋庫(kù)中。其中,分割鏡像文件的切分算法可以為WFD技術(shù)、FSP技術(shù)、CDC技術(shù)及滑動(dòng)塊算法等任意一種。由于分割鏡像文件的切分算法為現(xiàn)有技術(shù),本發(fā)明實(shí)施例則不進(jìn)行具體說(shuō)明。
[0083]可選的,每個(gè)鏡像文件均攜帶類(lèi)型指示信息,所述類(lèi)型指示信息用于指示每個(gè)鏡像文件的操作系統(tǒng)類(lèi)型以及操作系統(tǒng)的版本類(lèi)型。[0084]作為一種可實(shí)施的方式,在服務(wù)器接收一個(gè)鏡像文件時(shí),除了通過(guò)鏡像文件攜帶的類(lèi)型指示信息識(shí)別鏡像文件的操作系統(tǒng)類(lèi)型之外,還可通過(guò)讀取鏡像文件內(nèi)核中的類(lèi)型代碼來(lái)識(shí)別該鏡像文件的操作系統(tǒng)類(lèi)型。
[0085]作為一種可實(shí)施的方式,可對(duì)指紋庫(kù)增加全局鎖,以保證增加指紋進(jìn)入指紋庫(kù)時(shí)是串行執(zhí)行的。若沒(méi)有對(duì)指紋庫(kù)增加全局鎖,容易導(dǎo)致多個(gè)指紋在同一時(shí)間內(nèi)進(jìn)入指紋庫(kù),而這多個(gè)指紋中存在著相同指紋的情況下,不易分辨,從而增加存儲(chǔ)容量。
[0086]步驟210,根據(jù)操作系統(tǒng)類(lèi)型將指紋庫(kù)劃分為至少一個(gè)指紋模塊,將無(wú)法識(shí)別的操作系統(tǒng)類(lèi)型的指紋歸為公共指紋模塊。
[0087]具體實(shí)現(xiàn)中,由于每個(gè)鏡像文件的操作系統(tǒng)類(lèi)型不一定相同,如果將所有操作系統(tǒng)類(lèi)型的指紋集合為一個(gè)指紋庫(kù),會(huì)為查找指紋增加難度,增加對(duì)比指紋的時(shí)間,從而降低重刪的速度,產(chǎn)生系統(tǒng)的瓶頸。此外,由于指紋庫(kù)太大,無(wú)法完全放入內(nèi)存,也為后續(xù)重刪帶來(lái)不便。結(jié)合圖3,為了加快指紋查找速度,將所有指紋按照操作系統(tǒng)類(lèi)型指示信息進(jìn)行分組,劃分為至少一個(gè)指紋模塊,每個(gè)指紋模塊代表一個(gè)操作系統(tǒng)類(lèi)型。對(duì)于無(wú)法識(shí)別的操作系統(tǒng),例如比較冷門(mén)的操作系統(tǒng)則統(tǒng)一歸為公共指紋模塊。如圖3所示的指紋庫(kù)劃分示意圖,所有指紋模塊存儲(chǔ)在磁盤(pán)中,磁盤(pán)中包括XP鏡像指紋模塊、WIN7鏡像指紋模塊、Ubuntu鏡像指紋模塊以及公共鏡像指紋模塊等等。當(dāng)需要查找其中一個(gè)指紋模塊時(shí),將該指紋模塊調(diào)入內(nèi)存中進(jìn)行查找對(duì)比即可。在下一次接收鏡像文件時(shí),通過(guò)識(shí)別該鏡像文件的操作系統(tǒng)類(lèi)型迅速調(diào)入對(duì)應(yīng)的指紋模塊進(jìn)行查找,節(jié)省對(duì)比指紋的時(shí)間。
[0088]步驟220,按照操作系統(tǒng)的版本類(lèi)型將每個(gè)指紋模塊劃分為至少一個(gè)指紋單元。
[0089]具體實(shí)現(xiàn)中,由于每個(gè)操作系統(tǒng)有不同的版本,每個(gè)版本之間的指紋不盡相同。為了提高查找指紋的精確度,可在服務(wù)器空閑的時(shí)候?qū)σ粋€(gè)操作系統(tǒng)內(nèi)的指紋根據(jù)版本的不同再進(jìn)行細(xì)分,即將每個(gè)指紋模塊再劃分為至少一個(gè)指紋單元,一個(gè)指紋單元對(duì)應(yīng)一個(gè)操作系統(tǒng)的版本類(lèi)型。
[0090]可選的,若任意兩個(gè)版本的指紋的重復(fù)率大于第一預(yù)設(shè)值,則合并兩個(gè)版本對(duì)應(yīng)的指紋單元,并刪除合并的指紋單元中重復(fù)的指紋,第一預(yù)設(shè)值是根據(jù)CPU的存儲(chǔ)空間以及對(duì)比較指紋的速度的要求而設(shè)定的。
[0091]作為一種可實(shí)施的方式,為了對(duì)分類(lèi)進(jìn)行優(yōu)化,在一個(gè)操作系統(tǒng)的指紋模塊中,通過(guò)計(jì)算兩個(gè)版本的指紋單元的指紋的重復(fù)率來(lái)進(jìn)行分類(lèi)。例如,XP系統(tǒng)中SPl版本的指紋單元與SP2版本的指紋單元的指紋的重復(fù)率在70%以上,Ubuntu系統(tǒng)中11.04版本的指紋單元和9.04版本的指紋單元的指紋的重復(fù)率為9%,而11.04版本的指紋單元和12.04版本的指紋單元的指紋的重復(fù)率為25%,這說(shuō)明同一個(gè)操作系統(tǒng)中的不同版本的指紋單元之間存在一定的重復(fù)率,其重復(fù)率遠(yuǎn)遠(yuǎn)高于不同操作系統(tǒng)之間的重復(fù)率。因此,可針對(duì)不同操作系統(tǒng)設(shè)置對(duì)應(yīng)的重復(fù)率,在一個(gè)操作系統(tǒng)的指紋模塊里,若任意兩個(gè)版本的指紋單元的指紋的重復(fù)率大于第一預(yù)設(shè)值,則將這兩個(gè)版本的指紋單元進(jìn)行合并。例如,對(duì)于Ubuntu系統(tǒng),當(dāng)Ubuntu鏡像指紋模塊中存在9.04版本、11.04版本和12.04版本的指紋單元時(shí),根據(jù)CPU的存儲(chǔ)空間以及對(duì)比較指紋的速度的要求可設(shè)置20%的重復(fù)率作為第一預(yù)設(shè)值。由于11.04版本的指紋單元和12.04版本的指紋單元的指紋的重復(fù)率為25%,超過(guò)預(yù)設(shè)的20%的重復(fù)率,則可將11.04版本的指紋單元和12.04版本的指紋單元合并為11.04的指紋單元,并將其重復(fù)的數(shù)據(jù)塊刪除,減小存儲(chǔ)容量;而11.04版本的指紋單元和9.04版本的指紋單元的指紋的重復(fù)率為9%,遠(yuǎn)遠(yuǎn)小于20%的重復(fù)率,可將他們的指紋單元區(qū)別對(duì)待。因此,如圖3所示,最后Ubuntu鏡像指紋模塊中包括9.04版本和11.04版本的指紋單元。而XP鏡像指紋模塊、WIN7鏡像指紋模塊以及公共鏡像指紋模塊能以相同的方式進(jìn)行進(jìn)一步的劃分,本實(shí)施例則不再進(jìn)行一一舉例。
[0092]作為一種可實(shí)施的方式,在對(duì)指紋模塊進(jìn)行進(jìn)一步的劃分之后,可對(duì)劃分后的每個(gè)指紋單元增加全局鎖,使不同指紋單元之間相互隔離,不同操作系統(tǒng)不同版本的鏡像文件能夠?qū)崿F(xiàn)并行重刪的操作,加快重刪的速度。
[0093]步驟230,接收第二鏡像文件,根據(jù)第二鏡像文件攜帶的類(lèi)型指示信息識(shí)別第二鏡像文件的操作系統(tǒng)類(lèi)型以及操作系統(tǒng)的版本類(lèi)型。
[0094]具體實(shí)現(xiàn)中,第二鏡像文件為在初始接收的虛擬機(jī)的鏡像文件之后接收到的虛擬機(jī)的鏡像文件。由于第二鏡像文件攜帶類(lèi)型指示信息,類(lèi)型指示信息用于指示第二鏡像文件的操作系統(tǒng)類(lèi)型以及操作系統(tǒng)的版本類(lèi)型。
[0095]可選的,服務(wù)器可在磁盤(pán)中建立一個(gè)緩沖區(qū),結(jié)合圖4所示的操作示意圖進(jìn)行詳細(xì)說(shuō)明,在接收多個(gè)鏡像文件的同時(shí),將這些鏡像文件按照接收的順序依次保存在緩沖區(qū)中以等待重刪。其中,每個(gè)鏡像文件被分割為至少一個(gè)數(shù)據(jù)塊,將這些數(shù)據(jù)塊保存在存儲(chǔ)單元中。結(jié)合圖4,以第二鏡像文件為Ubuntu系統(tǒng)下9.04版本的鏡像文件為例,按照先入先出的規(guī)則對(duì)緩沖區(qū)中的存儲(chǔ)單元al至存儲(chǔ)單元an依次調(diào)入內(nèi)存中進(jìn)行重復(fù)數(shù)據(jù)刪除。當(dāng)一個(gè)存儲(chǔ)單元al進(jìn)入內(nèi)存時(shí),服務(wù)器通過(guò)第二鏡像文件攜帶的類(lèi)型指示信息識(shí)別存儲(chǔ)單元al的操作系統(tǒng)類(lèi)型。在客戶(hù)端并發(fā)傳輸大量鏡像文件的情況下,服務(wù)器通過(guò)事先保存鏡像文件能夠避免傳輸?shù)钠款i以及發(fā)生數(shù)據(jù)丟失的情況。
[0096]作為一種可實(shí)施的方式,若客戶(hù)端傳輸速率的帶寬并未超出服務(wù)器的吞吐率,此時(shí)仍然先將鏡像文件保存在緩沖區(qū)中,以應(yīng)對(duì)客戶(hù)端傳輸吞吐率瞬時(shí)超出服務(wù)器的吞吐率的情況。
[0097]步驟240,調(diào)用與第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,在調(diào)用出的指紋模塊中,調(diào)出與第二鏡像文件的版本類(lèi)型對(duì)應(yīng)的指紋單元。
[0098]具體實(shí)現(xiàn)中,當(dāng)一個(gè)存儲(chǔ)單元al進(jìn)入內(nèi)存時(shí),服務(wù)器通過(guò)識(shí)別存儲(chǔ)單元al的操作系統(tǒng)類(lèi)型以及操作系統(tǒng)的版本類(lèi)型得知存儲(chǔ)單元al為Ubuntu系統(tǒng)的9.04版本類(lèi)型,則將磁盤(pán)中Ubuntu系統(tǒng)下9.04版本的指紋單元調(diào)入內(nèi)存。由于每個(gè)操作系統(tǒng)之間相互獨(dú)立,因此在CPU資源有空余的情況下可同時(shí)對(duì)多個(gè)操作系統(tǒng)對(duì)應(yīng)的鏡像文件進(jìn)行重刪,即可同時(shí)調(diào)入多個(gè)指紋單元或者指紋模塊到內(nèi)存中。例如,在存儲(chǔ)單元al被調(diào)入內(nèi)存中進(jìn)行重刪的同時(shí),若此時(shí)緩沖區(qū)的存儲(chǔ)單元中包含其他操作系統(tǒng)的存儲(chǔ)單元,如存儲(chǔ)單元bn為XP系統(tǒng)的鏡像文件時(shí),也可調(diào)入XP鏡像指紋模塊到內(nèi)存中參與重復(fù)數(shù)據(jù)刪除。
[0099]作為一種可實(shí)施的方式,每個(gè)指紋單元之間也相互獨(dú)立,因此,多個(gè)操作系統(tǒng)或多個(gè)系統(tǒng)版本對(duì)應(yīng)的鏡像文件可同時(shí)進(jìn)行重刪,本發(fā)明實(shí)施例則不再進(jìn)行舉例說(shuō)明。
[0100]步驟250,獲取第二鏡像文件的數(shù)據(jù)塊對(duì)應(yīng)的指紋。
[0101]具體實(shí)現(xiàn)中,服務(wù)器可通過(guò)創(chuàng)建線(xiàn)程計(jì)算存儲(chǔ)單元中每個(gè)數(shù)據(jù)塊的散列值獲取數(shù)據(jù)塊的指紋。其中,線(xiàn)程還用于將獲取的指紋與指紋模塊或指紋單元中的指紋一一進(jìn)行比較,若查找到有相同的指紋,則將存儲(chǔ)單元中相同指紋對(duì)應(yīng)的數(shù)據(jù)塊刪除,此時(shí)線(xiàn)程工作的上述過(guò)程即為重復(fù)數(shù)據(jù)刪除過(guò)程。[0102]步驟260,根據(jù)調(diào)用出的指紋模塊中與第二鏡像文件的版本類(lèi)型對(duì)應(yīng)的指紋單元,
創(chuàng)建多個(gè)線(xiàn)程將獲取的指紋與指紋單元中的指紋--進(jìn)行比較,刪除與指紋單元中的指紋
重復(fù)的指紋對(duì)應(yīng)的數(shù)據(jù)塊。
[0103]具體實(shí)現(xiàn)中,下面針對(duì)存儲(chǔ)單元al的重刪過(guò)程進(jìn)行舉例說(shuō)明。結(jié)合圖4,為了加快重刪的速度,可創(chuàng)建多個(gè)線(xiàn)程如線(xiàn)程1、線(xiàn)程2以及線(xiàn)程3,同時(shí)獲取存儲(chǔ)單元al的隊(duì)列頭部的三個(gè)數(shù)據(jù)塊的指紋,每個(gè)線(xiàn)程獲取一個(gè)數(shù)據(jù)塊的指紋,如線(xiàn)程I獲取數(shù)據(jù)塊I的指紋,線(xiàn)程2獲取數(shù)據(jù)塊2的指紋,線(xiàn)程3獲取數(shù)據(jù)塊3的指紋。三個(gè)線(xiàn)程同時(shí)分別獲取所針對(duì)
的數(shù)據(jù)塊的指紋,并與調(diào)入的Ubuntu系統(tǒng)下9.04版本的指紋單元中的指紋--進(jìn)行對(duì)比,
查找是否有與數(shù)據(jù)塊的指紋相同的指紋。
[0104]可選的,創(chuàng)建線(xiàn)程的條件包括以下至少一種:CPU的使用率小于第二預(yù)設(shè)值,第二預(yù)設(shè)值是根據(jù)操作系統(tǒng)對(duì)CPU的使用率的需求而設(shè)定的;在多個(gè)線(xiàn)程將獲取的指紋與指紋單元中的指紋一一進(jìn)行比較時(shí),第二鏡像文件中未被比較的數(shù)據(jù)塊的指紋的數(shù)量大于第三預(yù)設(shè)值,第三預(yù)設(shè)值是根據(jù)對(duì)比較指紋的速度的要求而設(shè)定的;在檢測(cè)到無(wú)線(xiàn)程執(zhí)行比較的操作時(shí),存在至少一個(gè)未被比較的數(shù)據(jù)塊的指紋。
[0105]具體實(shí)現(xiàn)中,對(duì)于條件一,CPU的使用率小于第二預(yù)設(shè)值。根據(jù)當(dāng)前服務(wù)器使用的操作系統(tǒng)對(duì)CPU的使用率的需求,可設(shè)定第一預(yù)設(shè)值為12%,在對(duì)當(dāng)前的存儲(chǔ)單元中的數(shù)據(jù)塊進(jìn)行重復(fù)數(shù)據(jù)刪除時(shí),若此時(shí)服務(wù)器的CPU的使用率低于12%,即CPU處于工作比較空閑的狀態(tài),則可以在已經(jīng)有線(xiàn)程進(jìn)行重復(fù)數(shù)據(jù)刪除的基礎(chǔ)上再創(chuàng)建線(xiàn)程參與重復(fù)數(shù)據(jù)刪除,提高重刪速度。
[0106]具體實(shí)現(xiàn)中,對(duì)于條件二,在進(jìn)行重復(fù)數(shù)據(jù)刪除時(shí),存儲(chǔ)單元中剩余的數(shù)據(jù)塊的塊數(shù)大于第三預(yù)設(shè)值。如果傳輸?shù)溺R像文件比較大,其分割的數(shù)據(jù)塊的數(shù)量也比較多,此時(shí)可增加線(xiàn)程的數(shù)量以提高重刪的速度,因此可根據(jù)服務(wù)器對(duì)比較指紋的速度的要求,設(shè)置剩余塊數(shù)(即第三預(yù)設(shè)值)為20塊。若存儲(chǔ)單元a2所對(duì)應(yīng)的鏡像文件的容量為20G,根據(jù)切分算法的規(guī)則,分割的數(shù)據(jù)塊每塊的容量可在750MB左右,則存儲(chǔ)單元a2包括了將近31塊的數(shù)據(jù)塊,在線(xiàn)程1、線(xiàn)程2以及線(xiàn)程3初始進(jìn)行重復(fù)數(shù)據(jù)刪除時(shí),存儲(chǔ)單元a2中還剩余28塊數(shù)據(jù)塊,大于第三預(yù)設(shè)值,則可以再增加線(xiàn)程的數(shù)量以提高重刪的速度。
[0107]具體實(shí)現(xiàn)中,對(duì)于條件三,存在以下兩種情況:在檢測(cè)到無(wú)線(xiàn)程對(duì)存儲(chǔ)單元al中的多個(gè)數(shù)據(jù)塊執(zhí)行重刪的操作時(shí),存在至少一個(gè)未被執(zhí)行的存儲(chǔ)單元;當(dāng)內(nèi)存中的重復(fù)數(shù)據(jù)刪除操作結(jié)束時(shí),或者線(xiàn)程暫停進(jìn)行重復(fù)數(shù)據(jù)刪除的操作時(shí),緩沖區(qū)中仍然存在至少一個(gè)未被執(zhí)行的存儲(chǔ)單元排隊(duì)等待重刪,此時(shí)將下一個(gè)存儲(chǔ)單元即存儲(chǔ)單元a2調(diào)入內(nèi)存,重新創(chuàng)建線(xiàn)程執(zhí)行重復(fù)數(shù)據(jù)刪除的操作。
[0108]具體實(shí)現(xiàn)中,若線(xiàn)程在Ubuntu系統(tǒng)下9.04版本的指紋單元中查找到相同的指紋,則將該數(shù)據(jù)塊刪除,保留被刪除的數(shù)據(jù)塊在磁盤(pán)中的物理地址,以便后續(xù)需要恢復(fù)鏡像文件時(shí),通過(guò)數(shù)據(jù)塊的物理地址在磁盤(pán)中調(diào)出數(shù)據(jù)塊。若線(xiàn)程沒(méi)有在指紋庫(kù)中查找到相同的指紋,則保留該數(shù)據(jù)塊在存儲(chǔ)單元al中,或者,將該數(shù)據(jù)塊存儲(chǔ)在磁盤(pán)中,并將對(duì)應(yīng)的指紋存入U(xiǎn)buntu系統(tǒng)下9.04版本的指紋單元。若需要恢復(fù)鏡像文件,只需根據(jù)被刪除的數(shù)據(jù)塊的磁盤(pán)物理地址查找對(duì)應(yīng)的數(shù)據(jù)塊恢復(fù)鏡像文件即可。
[0109]作為一種可實(shí)施的方式,當(dāng)線(xiàn)程對(duì)當(dāng)前的數(shù)據(jù)塊完成重刪,如當(dāng)線(xiàn)程1、線(xiàn)程2以及線(xiàn)程3對(duì)數(shù)據(jù)塊1、數(shù)據(jù)塊2以及數(shù)據(jù)塊3進(jìn)行查找并刪除完成之后,線(xiàn)程1、線(xiàn)程2以及線(xiàn)程3再同時(shí)指向數(shù)據(jù)塊4、數(shù)據(jù)塊5以及數(shù)據(jù)塊6,對(duì)這三個(gè)數(shù)據(jù)塊執(zhí)行重復(fù)數(shù)據(jù)刪除的操作。
[0110]可選的,由于內(nèi)存的處理空間有限,若一個(gè)存儲(chǔ)單元中的數(shù)據(jù)塊的數(shù)量比較多,不能一次將一個(gè)存儲(chǔ)單元中的所有數(shù)據(jù)塊調(diào)入內(nèi)存時(shí),服務(wù)器可創(chuàng)建拷貝線(xiàn)程(未圖示)將存儲(chǔ)單元al中的數(shù)據(jù)塊分多次按照一定的數(shù)量調(diào)入內(nèi)存中進(jìn)行重刪。當(dāng)拷貝線(xiàn)程(未圖示)突然停止將數(shù)據(jù)塊調(diào)入內(nèi)存中時(shí),線(xiàn)程1、線(xiàn)程2以及線(xiàn)程3暫停正在進(jìn)行的工作,并調(diào)入存儲(chǔ)單元a2,重新創(chuàng)建線(xiàn)程1、線(xiàn)程2以及線(xiàn)程3對(duì)存儲(chǔ)單元a2執(zhí)行重刪。若此時(shí)存儲(chǔ)單元al請(qǐng)求恢復(fù)重復(fù)數(shù)據(jù)刪除的操作,線(xiàn)程1、線(xiàn)程2以及線(xiàn)程3繼續(xù)對(duì)存儲(chǔ)單元a2執(zhí)行操作直到結(jié)束,再跳轉(zhuǎn)到存儲(chǔ)單元al,恢復(fù)對(duì)存儲(chǔ)單元al的操作。此舉能夠避免在存儲(chǔ)單元al頻繁暫停的情況下,造成線(xiàn)程因反復(fù)跳轉(zhuǎn)而使得存儲(chǔ)單元al以及存儲(chǔ)單元a2各自的數(shù)據(jù)不連續(xù),容易導(dǎo)致數(shù)據(jù)丟失。此外,線(xiàn)程反復(fù)在不同存儲(chǔ)單元之間跳轉(zhuǎn)也會(huì)降低重刪的速度,增加處理的時(shí)間。
[0111]通過(guò)實(shí)施圖2所描述的方法,可針對(duì)初始接收的虛擬機(jī)的鏡像文件的數(shù)據(jù)塊對(duì)應(yīng)的指紋建立指紋庫(kù),并按照不同鏡像文件的操作系統(tǒng)類(lèi)型將指紋庫(kù)劃分為至少一個(gè)指紋模塊,還可針對(duì)一個(gè)操作系統(tǒng)中的不同版本類(lèi)型將指紋模塊分為至少一個(gè)指紋單元。當(dāng)后續(xù)接收到其他鏡像文件時(shí),調(diào)入與其他鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊或者指紋單元,并創(chuàng)建多個(gè)線(xiàn)程對(duì)其他鏡像文件中的多個(gè)數(shù)據(jù)塊所對(duì)應(yīng)的指紋與調(diào)入的指紋模塊或者
指紋單元中的指紋進(jìn)行--對(duì)比。最后刪除與調(diào)入的指紋模塊中的指紋相同的指紋對(duì)應(yīng)的
數(shù)據(jù)塊。在保證避免丟失數(shù)據(jù)的情況下提高對(duì)比指紋的效率,從而加快重復(fù)數(shù)據(jù)刪除的速度,消除由于傳輸速度大于重復(fù)數(shù)據(jù)刪除的速度所產(chǎn)生的系統(tǒng)瓶頸。 [0112]請(qǐng)參閱圖5,圖5是本發(fā)明實(shí)施例的一種重復(fù)數(shù)據(jù)刪除的裝置的結(jié)構(gòu)示意圖。如圖5所示的重復(fù)數(shù)據(jù)刪除的裝置包括:建立模塊500、劃分模塊510、調(diào)用模塊520、獲取模塊530以及刪除模塊540。
[0113]建立模塊500,用于根據(jù)初始接收的第一鏡像文件的數(shù)據(jù)塊所對(duì)應(yīng)的指紋建立指紋庫(kù),第一鏡像文件為初始接收的虛擬機(jī)的鏡像文件。
[0114]劃分模塊510,用于將建立模塊500建立的指紋庫(kù)劃分為至少一個(gè)指紋模塊,每個(gè)指紋模塊對(duì)應(yīng)一種操作系統(tǒng)類(lèi)型。
[0115]調(diào)用模塊520,用于接收第二鏡像文件,調(diào)用與第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,第二鏡像文件為在初始接收的虛擬機(jī)的鏡像文件之后接收到的虛擬機(jī)的鏡像文件。
[0116]獲取模塊530,用于獲取第二鏡像文件的數(shù)據(jù)塊對(duì)應(yīng)的指紋。
[0117]刪除模塊540,用于將獲取模塊530獲取的指紋與調(diào)用模塊520調(diào)用出的指紋模塊中的指紋--進(jìn)行比較,刪除與調(diào)用出的指紋模塊中的指紋重復(fù)的指紋對(duì)應(yīng)的數(shù)據(jù)塊。
[0118]作為一種可實(shí)施的方式,調(diào)用模塊520具體用于接收第二鏡像文件,根據(jù)第二鏡像文件攜帶的類(lèi)型指示信息識(shí)別第二鏡像文件的操作系統(tǒng)類(lèi)型以及操作系統(tǒng)的版本類(lèi)型。
[0119]作為一種可實(shí)施的方式,調(diào)用模塊520具體還用于調(diào)用與第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,在調(diào)用出的指紋模塊中,調(diào)出與第二鏡像文件的版本類(lèi)型對(duì)應(yīng)的指紋單元。
[0120]作為一種可實(shí)施的方式,刪除模塊540具體用于根據(jù)調(diào)用模塊520調(diào)用出的指紋模塊中與第二鏡像文件的版本類(lèi)型對(duì)應(yīng)的指紋單元,創(chuàng)建多個(gè)線(xiàn)程將獲取模塊530獲取的
指紋與指紋單元中的指紋--進(jìn)行比較,刪除與指紋單元中的指紋重復(fù)的指紋對(duì)應(yīng)的數(shù)據(jù)塊。
[0121]作為一種可實(shí)施的方式,刪除模塊540創(chuàng)建線(xiàn)程的條件包括以下至少一種:CPU的使用率小于第二預(yù)設(shè)值,第二預(yù)設(shè)值是根據(jù)操作系統(tǒng)對(duì)CPU的使用率的需求而設(shè)定的;在多個(gè)線(xiàn)程將獲取的指紋與指紋單元中的指紋一一進(jìn)行比較時(shí),第二鏡像文件中未被比較的數(shù)據(jù)塊的指紋的數(shù)量大于第三預(yù)設(shè)值,第三預(yù)設(shè)值是根據(jù)對(duì)比較指紋的速度的要求而設(shè)定的;在檢測(cè)到無(wú)線(xiàn)程執(zhí)行比較的操作時(shí),存在至少一個(gè)未被比較的數(shù)據(jù)塊的指紋。
[0122]通過(guò)實(shí)施圖5所描述的裝置,可針對(duì)初始接收的虛擬機(jī)的鏡像文件的數(shù)據(jù)塊對(duì)應(yīng)的指紋建立指紋庫(kù),并按照不同鏡像文件的操作系統(tǒng)類(lèi)型將指紋庫(kù)劃分為至少一個(gè)指紋模塊,還可針對(duì)一個(gè)操作系統(tǒng)中的不同版本類(lèi)型將指紋模塊分為至少一個(gè)指紋單元。當(dāng)后續(xù)接收到其他鏡像文件時(shí),調(diào)入與其他鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊或者指紋單元,最后刪除與調(diào)入的指紋模塊中的指紋相同的指紋對(duì)應(yīng)的數(shù)據(jù)塊。在保證避免丟失數(shù)據(jù)的情況下提高對(duì)比指紋的效率,從而加快重復(fù)數(shù)據(jù)刪除的速度,消除由于傳輸速度大于重復(fù)數(shù)據(jù)刪除的速度所產(chǎn)生的系統(tǒng)瓶頸。
[0123]圖6是本發(fā)明實(shí)施例的一種重復(fù)數(shù)據(jù)刪除的裝置的劃分模塊的結(jié)構(gòu)示意圖;
[0124]如圖6所示 的劃分模塊510包括第一劃分單元600以及第二劃分單元610。
[0125]第一劃分單元600,用于根據(jù)操作系統(tǒng)類(lèi)型將指紋庫(kù)劃分為至少一個(gè)指紋模塊,將無(wú)法識(shí)別的操作系統(tǒng)類(lèi)型的指紋歸為公共指紋模塊。
[0126]第二劃分單元610,用于按照操作系統(tǒng)的版本類(lèi)型將每個(gè)指紋模塊劃分為至少一個(gè)指紋單元。
[0127]作為一種可實(shí)施的方式,第二劃分單元610具體用于若任意兩個(gè)版本的指紋的重復(fù)率大于第一預(yù)設(shè)值,則合并兩個(gè)版本對(duì)應(yīng)的指紋單元,并刪除合并的指紋單元中重復(fù)的指紋,第一預(yù)設(shè)值是根據(jù)CPU的存儲(chǔ)空間以及對(duì)比較指紋的速度的要求而設(shè)定的。
[0128]通過(guò)實(shí)施圖6所描述的劃分模塊510,能在建立指紋庫(kù)的基礎(chǔ)上對(duì)指紋庫(kù)進(jìn)行進(jìn)一步的劃分,能夠加快服務(wù)器比較指紋的速度,從而提高重復(fù)數(shù)據(jù)刪除的速度,增強(qiáng)服務(wù)器重復(fù)數(shù)據(jù)刪除的效率。
[0129]請(qǐng)參閱圖7,圖7是本發(fā)明實(shí)施例提供的服務(wù)器的結(jié)構(gòu)示意圖,包括至少一個(gè)處理器700 (例如CPU),至少一個(gè)網(wǎng)絡(luò)接口 710或者其他通信接口,存儲(chǔ)器720,接收器730以及至少一個(gè)通信總線(xiàn)740,用于實(shí)現(xiàn)這些裝置之間的連接通信。接收器730用于接收客戶(hù)端發(fā)送的鏡像文件。處理器700用于執(zhí)行存儲(chǔ)器720中存數(shù)的可執(zhí)行模塊,例如計(jì)算機(jī)程序。存儲(chǔ)器720可能包含高速隨機(jī)存取存儲(chǔ)器(RAM:Random Access Memory),也可能還包括非不穩(wěn)定的存儲(chǔ)器(non-volatile memory),例如至少一個(gè)磁盤(pán)存儲(chǔ)器。通過(guò)至少一個(gè)網(wǎng)絡(luò)接口 710(可以是有線(xiàn)或者無(wú)線(xiàn))實(shí)現(xiàn)該服務(wù)器與至少一個(gè)客戶(hù)端之間的通信連接,可以使用互聯(lián)網(wǎng),廣域網(wǎng),本地網(wǎng),局域網(wǎng)等。
[0130]在一些實(shí)施方式中,存儲(chǔ)器720存儲(chǔ)了程序750,程序750可以被處理器700執(zhí)行,這個(gè)程序750執(zhí)行以下步驟:
[0131]根據(jù)初始接收的第一鏡像文件的數(shù)據(jù)塊所對(duì)應(yīng)的指紋建立指紋庫(kù),第一鏡像文件為初始接收的虛擬機(jī)的鏡像文件;將指紋庫(kù)劃分為至少一個(gè)指紋模塊,每個(gè)指紋模塊對(duì)應(yīng)一種操作系統(tǒng)類(lèi)型;接收第二鏡像文件,調(diào)用與第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,第二鏡像文件為在初始接收的虛擬機(jī)的鏡像文件之后接收到的虛擬機(jī)的鏡像文件;獲取第二鏡像文件的數(shù)據(jù)塊對(duì)應(yīng)的指紋;將獲取的指紋與調(diào)用出的指紋模塊中的指紋一一進(jìn)行比較,刪除與調(diào)用出的指紋模塊中的指紋重復(fù)的指紋對(duì)應(yīng)的數(shù)據(jù)塊。
[0132]作為一種可實(shí)施的方式,第一鏡像文件和第二鏡像文件均攜帶類(lèi)型指示信息,類(lèi)型指示信息用于指示第一鏡像文件和第二鏡像文件的操作系統(tǒng)類(lèi)型以及操作系統(tǒng)的版本類(lèi)型。
[0133]程序750將指紋庫(kù)劃分為至少一個(gè)指紋模塊,具體執(zhí)行一下步驟:
[0134]根據(jù)操作系統(tǒng)類(lèi)型將指紋庫(kù)劃分為至少一個(gè)指紋模塊,將無(wú)法識(shí)別的操作系統(tǒng)類(lèi)型的指紋歸為公共指紋模塊;按照操作系統(tǒng)的版本類(lèi)型將每個(gè)指紋模塊劃分為至少一個(gè)指
紋單元。
[0135]程序750按照操作系統(tǒng)的版本類(lèi)型將每個(gè)指紋模塊劃分為至少一個(gè)指紋單元,具體執(zhí)行一下步驟: [0136]若任意兩個(gè)版本的指紋的重復(fù)率大于第一預(yù)設(shè)值,則合并兩個(gè)版本對(duì)應(yīng)的指紋單元,并刪除合并的指紋單元中重復(fù)的指紋,第一預(yù)設(shè)值是根據(jù)CPU的存儲(chǔ)空間以及對(duì)比較指紋的速度的要求而設(shè)定的。
[0137]程序750接收第二鏡像文件,具體執(zhí)行一下步驟:
[0138]接收第二鏡像文件,根據(jù)第二鏡像文件攜帶的類(lèi)型指示信息識(shí)別第二鏡像文件的操作系統(tǒng)類(lèi)型以及操作系統(tǒng)的版本類(lèi)型。
[0139]程序750調(diào)用與第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,具體執(zhí)行一下步驟:
[0140]調(diào)用與第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,在調(diào)用出的指紋模塊中,調(diào)出與第二鏡像文件的版本類(lèi)型對(duì)應(yīng)的指紋單元。
[0141]程序750將獲取的指紋與調(diào)用出的指紋模塊中的指紋一一進(jìn)行比較,刪除與調(diào)用出的指紋模塊中的指紋重復(fù)的指紋對(duì)應(yīng)的數(shù)據(jù)塊,具體執(zhí)行一下步驟:
[0142]根據(jù)調(diào)用出的指紋模塊中與第二鏡像文件的版本類(lèi)型對(duì)應(yīng)的指紋單元,創(chuàng)建多個(gè)
線(xiàn)程將獲取的指紋與指紋單元中的指紋--進(jìn)行比較,刪除與指紋單元中的指紋重復(fù)的指
紋對(duì)應(yīng)的數(shù)據(jù)塊。
[0143]程序750創(chuàng)建線(xiàn)程的條件包括以下至少一種:
[0144]CPU的使用率小于第二預(yù)設(shè)值,第二預(yù)設(shè)值是根據(jù)操作系統(tǒng)對(duì)CPU的使用率的需求而設(shè)定的;在多個(gè)線(xiàn)程將獲取的指紋與指紋單元中的指紋一一進(jìn)行比較時(shí),第二鏡像文件中未被比較的數(shù)據(jù)塊的指紋的數(shù)量大于第三預(yù)設(shè)值,第三預(yù)設(shè)值是根據(jù)對(duì)比較指紋的速度的要求而設(shè)定的;在檢測(cè)到無(wú)線(xiàn)程執(zhí)行比較的操作時(shí),存在至少一個(gè)未被比較的數(shù)據(jù)塊的指紋。
[0145]通過(guò)實(shí)施圖7所描述的服務(wù)器,可針對(duì)初始接收的虛擬機(jī)的鏡像文件的數(shù)據(jù)塊對(duì)應(yīng)的指紋建立指紋庫(kù),并按照不同鏡像文件的操作系統(tǒng)類(lèi)型將指紋庫(kù)劃分為至少一個(gè)指紋模塊。當(dāng)后續(xù)接收到其他鏡像文件時(shí),調(diào)入與其他鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,并對(duì)其他鏡像文件中的多個(gè)數(shù)據(jù)塊所對(duì)應(yīng)的指紋與調(diào)入的指紋模塊中的指紋進(jìn)行一一對(duì)比。最后刪除與調(diào)入的指紋模塊中的指紋相同的指紋對(duì)應(yīng)的數(shù)據(jù)塊。在保證避免丟失數(shù)據(jù)的情況下提高對(duì)比指紋的效率,從而加快重復(fù)數(shù)據(jù)刪除的速度,消除由于傳輸速度大于重復(fù)數(shù)據(jù)刪除的速度所產(chǎn)生的系統(tǒng)瓶頸。
[0146]以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。
[0147]本發(fā)明實(shí)施例方法中的步驟可以根據(jù)實(shí)際需要進(jìn)行順序調(diào)整、合并和刪減。
[0148]本發(fā)明實(shí)施例裝置中的模塊或單元可以根據(jù)實(shí)際需要進(jìn)行合并、劃分和刪減。
[0149]本發(fā)明實(shí)施例的模塊或模塊,可以以通用集成電路(如中央處理器CPU),或以專(zhuān)用集成電路(ASIC)來(lái)實(shí)現(xiàn)。
[0150]通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件?;谶@樣的理解,上述技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如R0M/RAM、磁碟、光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
[0151]以上所述的實(shí)施方式,并不構(gòu)成對(duì)該技術(shù)方案保護(hù)范圍的限定。任何在上述實(shí)施方式的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在該技術(shù)方案的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種重復(fù)數(shù)據(jù)刪除的方法,其特征在于,包括: 根據(jù)初始接收的第一鏡像文件的數(shù)據(jù)塊所對(duì)應(yīng)的指紋建立指紋庫(kù),所述第一鏡像文件為初始接收的虛擬機(jī)的鏡像文件; 將所述指紋庫(kù)劃分為至少一個(gè)指紋模塊,每個(gè)指紋模塊對(duì)應(yīng)一種操作系統(tǒng)類(lèi)型; 接收第二鏡像文件,調(diào)用與所述第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,所述第二鏡像文件為在所述初始接收的虛擬機(jī)的鏡像文件之后接收到的虛擬機(jī)的鏡像文件; 獲取所述第二鏡像文件的數(shù)據(jù)塊對(duì)應(yīng)的指紋; 將所述獲取的指紋與所述調(diào)用出的指紋模塊中的指紋一一進(jìn)行比較,刪除與所述調(diào)用出的指紋模塊中的指紋重復(fù)的指紋對(duì)應(yīng)的數(shù)據(jù)塊。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述第一鏡像文件和所述第二鏡像文件均攜帶類(lèi)型指示信息,所述類(lèi)型指示信息用于指示所述第一鏡像文件和所述第二鏡像文件的操作系統(tǒng)類(lèi)型以及操作系統(tǒng)的版本類(lèi)型。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于, 所述將所述指紋庫(kù)劃分為至少一個(gè)指紋模塊,具體包括: 根據(jù)所述操作系統(tǒng)類(lèi)型將所述指紋庫(kù)劃分為至少一個(gè)指紋模塊,將無(wú)法識(shí)別的操作系統(tǒng)類(lèi)型的指紋歸為公共 指紋模塊; 按照所述操作系統(tǒng)的版本類(lèi)型將每個(gè)指紋模塊劃分為至少一個(gè)指紋單元。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于, 所述按照所述操作系統(tǒng)的版本類(lèi)型將每個(gè)指紋模塊劃分為至少一個(gè)指紋單元,具體包括: 若任意兩個(gè)版本的指紋的重復(fù)率大于第一預(yù)設(shè)值,則合并所述兩個(gè)版本對(duì)應(yīng)的指紋單元,并刪除所述合并的指紋單元中重復(fù)的指紋,所述第一預(yù)設(shè)值是根據(jù)CPU的存儲(chǔ)空間以及對(duì)比較指紋的速度的要求而設(shè)定的。
5.根據(jù)權(quán)利要求3或4任一項(xiàng)所述的方法,其特征在于, 所述接收第二鏡像文件,具體包括: 接收所述第二鏡像文件,根據(jù)所述第二鏡像文件攜帶的所述類(lèi)型指示信息識(shí)別所述第二鏡像文件的操作系統(tǒng)類(lèi)型以及所述操作系統(tǒng)的版本類(lèi)型; 所述調(diào)用與所述第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,具體包括: 調(diào)用與所述第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,在所述調(diào)用出的指紋模塊中,調(diào)出與所述第二鏡像文件的版本類(lèi)型對(duì)應(yīng)的指紋單元。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于, 所述將所述獲取的指紋與所述調(diào)用出的指紋模塊中的指紋一一進(jìn)行比較,刪除與所述調(diào)用出的指紋模塊中的指紋重復(fù)的指紋對(duì)應(yīng)的數(shù)據(jù)塊,具體包括: 根據(jù)所述調(diào)用出的指紋模塊中與所述第二鏡像文件的版本類(lèi)型對(duì)應(yīng)的指紋單元,創(chuàng)建多個(gè)線(xiàn)程將所述獲取的指紋與所述指紋單元中的指紋一一進(jìn)行比較,刪除與所述指紋單元中的指紋重復(fù)的指紋對(duì)應(yīng)的數(shù)據(jù)塊。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,創(chuàng)建所述線(xiàn)程的條件包括以下至少一種: 所述CPU的使用率小于第二預(yù)設(shè)值,所述第二預(yù)設(shè)值是根據(jù)操作系統(tǒng)對(duì)所述CPU的使用率的需求而設(shè)定的;在所述多個(gè)線(xiàn)程將所述獲取的指紋與所述指紋單元中的指紋一一進(jìn)行比較時(shí),所述第二鏡像文件中未被比較的數(shù)據(jù)塊的指紋的數(shù)量大于第三預(yù)設(shè)值,所述第三預(yù)設(shè)值是根據(jù)對(duì)比較指紋的速度的要求而設(shè)定的; 在檢測(cè)到無(wú)線(xiàn)程執(zhí)行比較的操作時(shí),存在至少一個(gè)未被比較的數(shù)據(jù)塊的指紋。
8.一種重復(fù)數(shù)據(jù)刪除的裝置,其特征在于,包括: 建立模塊,用于根據(jù)初始接收的第一鏡像文件的數(shù)據(jù)塊所對(duì)應(yīng)的指紋建立指紋庫(kù),所述第一鏡像文件為初始接收的虛擬機(jī)的鏡像文件; 劃分模塊,用于將所述建立模塊建立的指紋庫(kù)劃分為至少一個(gè)指紋模塊,每個(gè)指紋模塊對(duì)應(yīng)一種操作系統(tǒng)類(lèi)型; 調(diào)用模塊,用于接收第二鏡像文件,調(diào)用與所述第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,所述第二鏡像文件為在所述初始接收的虛擬機(jī)的鏡像文件之后接收到的虛擬機(jī)的鏡像文件; 獲取模塊,用于獲取所述第二鏡像文件的數(shù)據(jù)塊對(duì)應(yīng)的指紋; 刪除模塊,用于將所述獲取模塊獲取的指紋與所述調(diào)用模塊調(diào)用出的指紋模塊中的指紋一一進(jìn)行比較,刪除與所述調(diào)用出的指紋模塊中的指紋重復(fù)的指紋對(duì)應(yīng)的數(shù)據(jù)塊。
9.根據(jù)權(quán)利要 求8所述的裝置,其特征在于, 所述第一鏡像文件和所述第二鏡像文件均攜帶類(lèi)型指示信息,所述類(lèi)型指示信息用于指示所述第一鏡像文件和所述第二鏡像文件的操作系統(tǒng)類(lèi)型以及操作系統(tǒng)的版本類(lèi)型。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述劃分模塊包括: 第一劃分單元,用于根據(jù)所述操作系統(tǒng)類(lèi)型將所述指紋庫(kù)劃分為至少一個(gè)指紋模塊,將無(wú)法識(shí)別的操作系統(tǒng)類(lèi)型的指紋歸為公共指紋模塊; 第二劃分單元,用于按照所述操作系統(tǒng)的版本類(lèi)型將每個(gè)指紋模塊劃分為至少一個(gè)指紋單元。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述第二劃分單元,具體用于: 若任意兩個(gè)版本的指紋的重復(fù)率大于第一預(yù)設(shè)值,則合并所述兩個(gè)版本對(duì)應(yīng)的指紋單元,并刪除所述合并的指紋單元中重復(fù)的指紋,所述第一預(yù)設(shè)值是根據(jù)CPU的存儲(chǔ)空間以及對(duì)比較指紋的速度的要求而設(shè)定的。
12.根據(jù)權(quán)利要求10或11任一項(xiàng)所述的裝置,其特征在于, 所述調(diào)用模塊,具體用于: 接收所述第二鏡像文件,根據(jù)所述第二鏡像文件攜帶的所述類(lèi)型指示信息識(shí)別所述第二鏡像文件的操作系統(tǒng)類(lèi)型以及所述操作系統(tǒng)的版本類(lèi)型; 所述調(diào)用模塊,具體還用于: 調(diào)用與所述第二鏡像文件的操作系統(tǒng)類(lèi)型對(duì)應(yīng)的指紋模塊,在所述調(diào)用出的指紋模塊中,調(diào)出與所述第二鏡像文件的版本類(lèi)型對(duì)應(yīng)的指紋單元。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述刪除模塊,具體用于: 根據(jù)所述調(diào)用模塊調(diào)用出的指紋模塊中與所述第二鏡像文件的版本類(lèi)型對(duì)應(yīng)的指紋單元,創(chuàng)建多個(gè)線(xiàn)程將所述獲取模塊獲取的指紋與所述指紋單元中的指紋一一進(jìn)行比較,刪除與所述指紋單元中的指紋重復(fù)的指紋對(duì)應(yīng)的數(shù)據(jù)塊。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述刪除模塊創(chuàng)建所述線(xiàn)程的條件包括以下至少一種: 所述CPU的使用率小于第二預(yù)設(shè)值,所述第二預(yù)設(shè)值是根據(jù)操作系統(tǒng)對(duì)所述CPU的使用率的需求而設(shè)定的; 在所述多個(gè)線(xiàn)程將所述獲取的指紋與所述指紋單元中的指紋一一進(jìn)行比較時(shí),所述第二鏡像文件中未被比較的數(shù)據(jù)塊的指紋的數(shù)量大于第三預(yù)設(shè)值,所述第三預(yù)設(shè)值是根據(jù)對(duì)比較指紋的速度的要求而設(shè)定的; 在檢測(cè)到無(wú)線(xiàn)程執(zhí) 行比較的操作時(shí),存在至少一個(gè)未被比較的數(shù)據(jù)塊的指紋。
【文檔編號(hào)】G06F17/30GK103995863SQ201410210106
【公開(kāi)日】2014年8月20日 申請(qǐng)日期:2014年5月19日 優(yōu)先權(quán)日:2014年5月19日
【發(fā)明者】褚艷旭, 裘杰, 江云飛 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
浑源县| 灵台县| 绩溪县| 玉门市| 白水县| 汤阴县| 桑植县| 长春市| 郴州市| 屏山县| 余庆县| 达尔| 淮滨县| 铜梁县| 盐源县| 清流县| 泗水县| 衡水市| 永德县| 韶关市| 桐庐县| 固镇县| 梓潼县| 潍坊市| 安国市| 田东县| 久治县| 河津市| 永丰县| 洪雅县| 涪陵区| 鄱阳县| 馆陶县| 二连浩特市| 桂东县| 开原市| 长沙市| 宁波市| 武宣县| 洛浦县| 米林县|