本發(fā)明涉及云存儲(chǔ)技術(shù)領(lǐng)域,特別是涉及一種文件完整性檢查方法及裝置。
背景技術(shù):
在虛擬化管理平臺(tái),會(huì)大量地創(chuàng)建虛擬機(jī),在創(chuàng)建完虛擬機(jī)后需要為虛擬機(jī)安裝系統(tǒng),而安裝系統(tǒng)需要不同系統(tǒng)的鏡像文件,一般會(huì)將鏡像文件上傳到服務(wù)端進(jìn)行管理。由于鏡像文件都比較大,而且存放時(shí)間長(zhǎng),在管理中需要周期性的對(duì)文件進(jìn)行完整性檢查,以保證為用戶(hù)提供鏡像可用性的信息。
現(xiàn)有技術(shù)中,對(duì)文件進(jìn)行完整性檢查,是通過(guò)計(jì)算文件的循環(huán)冗余校驗(yàn)碼,將當(dāng)前計(jì)算出的校驗(yàn)碼與文件原始的校驗(yàn)碼比對(duì),判斷是否相同,來(lái)檢查當(dāng)前文件是否完整。然而,對(duì)于容量較大的文件計(jì)算校驗(yàn)碼耗時(shí)長(zhǎng),導(dǎo)致文件的完整性檢查非常耗時(shí)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種文件完整性檢查方法及裝置,可減少文件完整性檢查的耗時(shí)。
為實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:
一種文件完整性檢查方法,包括:
將文件分成多個(gè)片段,以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼;
根據(jù)計(jì)算得到的各片段文件的循環(huán)冗余校驗(yàn)碼,檢查文件是否完整。
可選地,將所述文件分成容量相等的多個(gè)片段。
可選地,所述以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼包括:
創(chuàng)建分別與各片段文件對(duì)應(yīng)的多個(gè)線(xiàn)程,每一所述線(xiàn)程以文件流方式讀取對(duì)應(yīng)的片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼。
可選地,所述根據(jù)計(jì)算得到的各片段文件的循環(huán)冗余校驗(yàn)碼,檢查文件是否完整包括:
分別將計(jì)算得到的各片段文件的循環(huán)冗余校驗(yàn)碼,與對(duì)應(yīng)片段文件的原始循環(huán)冗余校驗(yàn)碼進(jìn)行比對(duì),檢查各片段文件是否完整。
可選地,還包括:檢測(cè)文件的容量大??;
所述將文件分成多個(gè)片段,以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼包括:當(dāng)所述文件的容量大于閾值時(shí),將所述文件分成多個(gè)片段,以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼。
一種文件完整性檢查裝置,包括:
計(jì)算模塊,用于將文件分成多個(gè)片段,以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼;
檢查模塊,用于根據(jù)計(jì)算得到的各片段文件的循環(huán)冗余校驗(yàn)碼,檢查文件是否完整。
可選地,所述計(jì)算模塊用于將文件分成多個(gè)片段包括:
所述計(jì)算模塊具體用于將所述文件分成容量相等的多個(gè)片段。
可選地,所述計(jì)算模塊用于以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼包括:
所述計(jì)算模塊具體用于創(chuàng)建分別與各片段文件對(duì)應(yīng)的多個(gè)線(xiàn)程,每一所述線(xiàn)程以文件流方式讀取對(duì)應(yīng)的片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼。
可選地,所述檢查模塊用于根據(jù)計(jì)算得到的各片段文件的循環(huán)冗余校驗(yàn)碼,檢查文件是否完整包括:
所述檢查模塊具體用于分別將計(jì)算得到的各片段文件的循環(huán)冗余校驗(yàn)碼,與對(duì)應(yīng)片段文件的原始循環(huán)冗余校驗(yàn)碼進(jìn)行比對(duì),檢查各片段文件是否完整。
可選地,還包括檢測(cè)模塊,用于檢測(cè)文件的容量大??;
所述計(jì)算模塊用于將文件分成多個(gè)片段,以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼包括:
所述計(jì)算模塊具體用于當(dāng)所述文件的容量大于閾值時(shí),將所述文件分成多個(gè)片段,以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼。
由上述技術(shù)方案可知,本發(fā)明所提供的文件完整性檢查方法及裝置,將文件分成多個(gè)片段,以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼,根據(jù)計(jì)算得到的各片段文件的循環(huán)冗余校驗(yàn)碼,檢查文件是否完整。本文件完整性檢查方法及裝置中,將文件分成多個(gè)片段,以并行方式分別讀取各片段文件進(jìn)行校驗(yàn)碼計(jì)算,與現(xiàn)有計(jì)算整個(gè)文件的循環(huán)冗余校驗(yàn)碼方法相比,以并行方式計(jì)算片段文件校驗(yàn)碼的耗時(shí)少,減少了計(jì)算時(shí)間,可減少文件完整性檢查的耗時(shí)。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種文件完整性檢查方法的流程圖;
圖2為本發(fā)明實(shí)施例提供的一種文件完整性檢查裝置的示意圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明中的技術(shù)方案,下面將結(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í)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參考圖1,本發(fā)明實(shí)施例提供的一種文件完整性檢查方法,包括步驟:
S10:將文件分成多個(gè)片段,以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼。
對(duì)文件數(shù)據(jù)進(jìn)行邏輯分段,分段是連續(xù)的,分成多個(gè)片段文件。
以并行方式同時(shí)分別讀取各片段文件,在讀取中計(jì)算片段文件的循環(huán)冗余校驗(yàn)碼,可獲得各片段文件的循環(huán)冗余校驗(yàn)碼。
S11:根據(jù)計(jì)算得到的各片段文件的循環(huán)冗余校驗(yàn)碼,檢查文件是否完整。
可以看出,本實(shí)施例文件完整性檢查方法,將文件分成多個(gè)片段,以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼,根據(jù)計(jì)算得到的各片段文件的循環(huán)冗余校驗(yàn)碼,檢查文件是否完整。本實(shí)施例文件完整性檢查方法中,將文件分成多個(gè)片段,以并行方式分別讀取各片段文件進(jìn)行校驗(yàn)碼計(jì)算,與現(xiàn)有計(jì)算整個(gè)文件的循環(huán)冗余校驗(yàn)碼方法相比,以并行方式計(jì)算片段文件校驗(yàn)碼的耗時(shí)少,減少了計(jì)算時(shí)間,可減少文件完整性檢查的耗時(shí)。
下面對(duì)本實(shí)施例文件完整性檢查方法作進(jìn)一步說(shuō)明。本實(shí)施例文件完整性檢查方法包括步驟:
S10:將文件分成多個(gè)片段,以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼。
對(duì)文件數(shù)據(jù)進(jìn)行邏輯分段,分段是連續(xù)的,分成多個(gè)片段文件。
分成的各片段文件的容量大小可以相等,也可以不同。優(yōu)選的,文件分成的各片段文件容量相等,這樣有助于計(jì)算校驗(yàn)碼時(shí)計(jì)算時(shí)間具有一致性。例如,大小為1G的文件可以分為四段,每片段為250M。
具體的,以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼的方法包括:創(chuàng)建分別與各片段文件對(duì)應(yīng)的多個(gè)線(xiàn)程,每一所述線(xiàn)程以文件流方式讀取對(duì)應(yīng)的片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼。
創(chuàng)建多個(gè)線(xiàn)程,各線(xiàn)程分別對(duì)應(yīng)各片段文件,每一線(xiàn)程讀取對(duì)應(yīng)的片段文件,各線(xiàn)程同時(shí)進(jìn)行讀取。具體的,每一線(xiàn)程創(chuàng)建一個(gè)文件流,以文件流方式讀取片段文件,在讀取中計(jì)算片段文件的循環(huán)冗余校驗(yàn)碼。
S11:根據(jù)計(jì)算得到的各片段文件的循環(huán)冗余校驗(yàn)碼,檢查文件是否完整。
由于文件的循環(huán)冗余校驗(yàn)碼是分段計(jì)算的,每一片段文件對(duì)應(yīng)一個(gè)循環(huán)冗余校驗(yàn)碼,因此在檢查文件完整性時(shí)相應(yīng)需要分別對(duì)每片段文件進(jìn)行完整性檢查,從而檢查整個(gè)文件是否完整。
具體方法為:分別將計(jì)算得到的各片段文件的循環(huán)冗余校驗(yàn)碼,與對(duì)應(yīng)片段文件的原始循環(huán)冗余校驗(yàn)碼進(jìn)行比對(duì),檢查各片段文件是否完整。若計(jì)算得到的片段文件的校驗(yàn)碼與該片段文件的原始校驗(yàn)碼一致,則表明該片段文件當(dāng)前完整,若不一致則表明該片段文件當(dāng)前不完整。若各個(gè)片段文件均完整,則表明整個(gè)文件完整。
進(jìn)一步的,本實(shí)施例文件完整性檢查方法還包括:檢測(cè)文件的容量大小。
所述步驟S10將文件分成多個(gè)片段,以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼包括:當(dāng)所述文件的容量大于閾值時(shí),將所述文件分成多個(gè)片段,以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼。
因此,本實(shí)施例文件完整性檢查方法,將文件分成多個(gè)片段,以并行方式分別讀取各片段文件進(jìn)行校驗(yàn)碼計(jì)算,與現(xiàn)有計(jì)算整個(gè)文件的循環(huán)冗余校驗(yàn)碼方法相比,以并行方式計(jì)算片段文件校驗(yàn)碼的耗時(shí)少,減少了計(jì)算時(shí)間,提高了計(jì)算效率,可減少文件完整性檢查的耗時(shí)。
相應(yīng)的,請(qǐng)參考圖2,本發(fā)明實(shí)施例還提供一種文件完整性檢查裝置,包括:
計(jì)算模塊20,用于將文件分成多個(gè)片段,以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼;
檢查模塊21,用于根據(jù)計(jì)算得到的各片段文件的循環(huán)冗余校驗(yàn)碼,檢查文件是否完整。
可以看出,本實(shí)施例文件完整性檢查裝置包括計(jì)算模塊和檢查模塊,計(jì)算模塊將文件分成多個(gè)片段,以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼,檢查模塊根據(jù)計(jì)算得到的各片段文件的循環(huán)冗余校驗(yàn)碼,檢查文件是否完整。本實(shí)施例文件完整性檢查裝置中,將文件分成多個(gè)片段,以并行方式分別讀取各片段文件進(jìn)行校驗(yàn)碼計(jì)算,與現(xiàn)有計(jì)算整個(gè)文件的循環(huán)冗余校驗(yàn)碼方法相比,以并行方式計(jì)算片段文件校驗(yàn)碼的耗時(shí)少,減少了計(jì)算時(shí)間,可減少文件完整性檢查的耗時(shí)。
本實(shí)施例中,計(jì)算模塊20將文件分成多個(gè)片段,分成的各片段文件的容量大小可以相等,也可以不同。優(yōu)選的,所述計(jì)算模塊20具體用于將所述文件分成容量相等的多個(gè)片段,這樣有助于計(jì)算校驗(yàn)碼時(shí)計(jì)算時(shí)間具有一致性。
所述計(jì)算模塊20以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼,具體為:所述計(jì)算模塊20具體用于創(chuàng)建分別與各片段文件對(duì)應(yīng)的多個(gè)線(xiàn)程,每一所述線(xiàn)程以文件流方式讀取對(duì)應(yīng)的片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼。
計(jì)算模塊創(chuàng)建多個(gè)線(xiàn)程,各線(xiàn)程分別對(duì)應(yīng)各片段文件,每一線(xiàn)程讀取對(duì)應(yīng)的片段文件,各線(xiàn)程同時(shí)進(jìn)行讀取。具體的,每一線(xiàn)程創(chuàng)建一個(gè)文件流,以文件流方式讀取片段文件,在讀取中計(jì)算片段文件的循環(huán)冗余校驗(yàn)碼。
由于文件的循環(huán)冗余校驗(yàn)碼是分段計(jì)算的,每一片段文件對(duì)應(yīng)一個(gè)循環(huán)冗余校驗(yàn)碼,因此在檢查文件完整性時(shí)相應(yīng)需要分別對(duì)每片段文件進(jìn)行完整性檢查,從而檢查整個(gè)文件是否完整。具體的,所述檢查模塊21具體用于分別將計(jì)算得到的各片段文件的循環(huán)冗余校驗(yàn)碼,與對(duì)應(yīng)片段文件的原始循環(huán)冗余校驗(yàn)碼進(jìn)行比對(duì),檢查各片段文件是否完整。若計(jì)算得到的片段文件的校驗(yàn)碼與該片段文件的原始校驗(yàn)碼一致,則表明該片段文件當(dāng)前完整,若不一致則表明該片段文件當(dāng)前不完整。若各個(gè)片段文件均完整,則表明整個(gè)文件完整。
進(jìn)一步的,本實(shí)施例文件完整性檢查裝置還包括檢測(cè)模塊,用于檢測(cè)文件的容量大?。凰鲇?jì)算模塊20具體用于當(dāng)所述文件的容量大于閾值時(shí),將所述文件分成多個(gè)片段,以并行方式分別讀取各片段文件,計(jì)算所讀取片段文件的循環(huán)冗余校驗(yàn)碼。
以上對(duì)本發(fā)明所提供的一種文件完整性檢查方法及裝置進(jìn)行了詳細(xì)介紹。本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以對(duì)本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。