国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種文件數(shù)據(jù)的校驗(yàn)方法、裝置與流程

      文檔序號(hào):11386327閱讀:468來源:國知局
      一種文件數(shù)據(jù)的校驗(yàn)方法、裝置與流程

      本申請涉及數(shù)據(jù)處理的技術(shù)領(lǐng)域,具體地說,涉及一種文件數(shù)據(jù)的校驗(yàn)方法、裝置。



      背景技術(shù):

      存儲(chǔ)在磁盤上的數(shù)據(jù),可能因?yàn)榇疟P故障、操作系統(tǒng)故障、軟件缺陷導(dǎo)致讀出來的數(shù)據(jù)和寫入的數(shù)據(jù)不一致,即數(shù)據(jù)完整性被破壞。因此存儲(chǔ)系統(tǒng)需要對數(shù)據(jù)進(jìn)行校驗(yàn),通常的做法是使用校驗(yàn)碼(checksum),一種常用的校驗(yàn)碼算法是使用循環(huán)冗余校驗(yàn)算法(crc算法)生成數(shù)據(jù)對應(yīng)的校驗(yàn)碼。在存儲(chǔ)系統(tǒng)的實(shí)踐中,有一種常見的做法是以某個(gè)固定塊大小為單位。

      針對每個(gè)塊生成一個(gè)對應(yīng)的校驗(yàn)碼,將文件里所有塊對應(yīng)的校驗(yàn)碼單獨(dú)存放在一個(gè)文件中,這種做法的優(yōu)點(diǎn)是讀寫邏輯簡單,缺點(diǎn)是讀寫一段數(shù)據(jù)都需要兩次磁盤輸入輸出操作(磁盤io),分別是數(shù)據(jù)文件和校驗(yàn)碼文件。還有一種做法是把校驗(yàn)碼嵌入到數(shù)據(jù)里,修改數(shù)據(jù)內(nèi)容,每個(gè)塊數(shù)據(jù)后邊插入一個(gè)校驗(yàn)碼(通常是4字節(jié)),即內(nèi)嵌校驗(yàn)碼方式,這種做法的優(yōu)點(diǎn)是讀寫數(shù)據(jù)只需要一次磁盤輸入輸出操作,因?yàn)槊繅K數(shù)據(jù)和對應(yīng)的校驗(yàn)碼存放在一起,缺點(diǎn)是讀寫的邏輯比較復(fù)雜,需要把用戶的數(shù)據(jù)內(nèi)容進(jìn)行轉(zhuǎn)換,分塊插入校驗(yàn)碼,相當(dāng)于把數(shù)據(jù)文件和校驗(yàn)碼文件合成一個(gè)文件。

      內(nèi)嵌校驗(yàn)碼的數(shù)據(jù),因?yàn)閿?shù)據(jù)里內(nèi)嵌有校驗(yàn)碼,所以數(shù)據(jù)自身的完整性能夠得到保證,但是不能校驗(yàn)數(shù)據(jù)是不是和其所在文件是對應(yīng)的。舉一些例子,某些操作系統(tǒng)文件系統(tǒng)有軟件缺陷,導(dǎo)致兩個(gè)不同的文件名指向了同一個(gè)底層的文件,還有一些人為的誤操作,把兩個(gè)文件名鏈接到同一個(gè)文件上了。

      因此,數(shù)據(jù)內(nèi)嵌校驗(yàn)碼只能保證數(shù)據(jù)本身的完整性,不能保證數(shù)據(jù)和文件是否匹配。



      技術(shù)實(shí)現(xiàn)要素:

      有鑒于此,本申請?zhí)峁┮环N文件數(shù)據(jù)的校驗(yàn)方法、裝置,可以解決現(xiàn)有的內(nèi)嵌校驗(yàn)碼的數(shù)據(jù)和文件不一致的問題。

      為了解決上述技術(shù)問題,本申請第一方面提供一種文件數(shù)據(jù)的校驗(yàn)方法,包括:

      根據(jù)待讀取的文件的文件名信息,確定校驗(yàn)碼初始值;

      根據(jù)所述校驗(yàn)碼初始值和所述待讀取的文件中的數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容,利用校驗(yàn)碼生成算法計(jì)算得到所述數(shù)據(jù)塊的校驗(yàn)碼;

      將所述計(jì)算得到的校驗(yàn)碼與所述數(shù)據(jù)塊中內(nèi)嵌的校驗(yàn)碼進(jìn)行比較,若一致則確定所述待讀文件和所述數(shù)據(jù)塊是一致的。

      其中,所述的方法還包括:

      根據(jù)待寫入的文件的文件名信息,確定校驗(yàn)碼初始值;

      根據(jù)所述校驗(yàn)碼初始值和所述待寫入的文件中的數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容,利用校驗(yàn)碼生成算法計(jì)算得到所述數(shù)據(jù)塊的校驗(yàn)碼;

      將計(jì)算得到的所述數(shù)據(jù)塊的校驗(yàn)碼內(nèi)嵌到所述數(shù)據(jù)塊中。

      其中,確定校驗(yàn)碼初始值,包括:

      利用散列算法,對所述文件名信息進(jìn)行散列運(yùn)算得到散列值,將所述散列值確定為所述文件名信息對應(yīng)的文件中的數(shù)據(jù)塊的校驗(yàn)碼初始值。

      其中,所述散列算法包括任一能夠保證不同文件名信息產(chǎn)生的散列沖突的概率小于預(yù)設(shè)的散列沖突忽略閾值的散列算法。

      其中,所述的方法還包括:

      根據(jù)每個(gè)文件的元數(shù)據(jù)設(shè)置唯一的校驗(yàn)碼初始值,并將所述校驗(yàn)碼初始值添加到與其對應(yīng)的文件的元數(shù)據(jù)中,每個(gè)文件的元數(shù)據(jù)中包括所述文件的文件名信息。

      本發(fā)明提供一種文件數(shù)據(jù)的校驗(yàn)方法,包括:根據(jù)待寫入的文件的文件名信息,確定校驗(yàn)碼初始值;根據(jù)所述校驗(yàn)碼初始值和所述待寫入的文件中的數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容,利用校驗(yàn)碼生成算法計(jì)算得到所述數(shù)據(jù)塊的校驗(yàn)碼; 將計(jì)算得到的所述數(shù)據(jù)塊的校驗(yàn)碼內(nèi)嵌到所述數(shù)據(jù)塊中。

      其中,確定校驗(yàn)碼初始值,包括:利用散列算法,對所述文件名信息進(jìn)行散列運(yùn)算得到散列值,將所述散列值確定為所述文件名信息對應(yīng)的文件中的數(shù)據(jù)塊的校驗(yàn)碼初始值。

      其中,所述散列算法包括任一能夠保證不同文件名信息產(chǎn)生的散列沖突的概率小于預(yù)設(shè)的散列沖突忽略閾值的散列算法。

      其中,所述方法還包括:根據(jù)每個(gè)文件的元數(shù)據(jù)設(shè)置唯一的校驗(yàn)碼初始值,并將所述校驗(yàn)碼初始值添加到與其對應(yīng)的文件的元數(shù)據(jù)中,每個(gè)文件的元數(shù)據(jù)中包括所述文件的文件名信息。

      本發(fā)明還提供一種文件數(shù)據(jù)的校驗(yàn)裝置,包括:

      確定模塊,用于根據(jù)待讀取的文件的文件名信息,確定校驗(yàn)碼初始值;

      計(jì)算模塊,用于根據(jù)所述校驗(yàn)碼初始值和所述待讀取的文件中的數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容,利用校驗(yàn)碼生成算法計(jì)算得到所述數(shù)據(jù)塊的校驗(yàn)碼;

      比較模塊,用于將所述計(jì)算得到的校驗(yàn)碼與所述數(shù)據(jù)塊中內(nèi)嵌的校驗(yàn)碼進(jìn)行比較,若一致則確定所述待讀文件和所述數(shù)據(jù)塊是一致的。

      其中,所述確定模塊,還用于根據(jù)待寫入的文件的文件名信息,確定校驗(yàn)碼初始值;

      所述計(jì)算模塊,還用于根據(jù)所述校驗(yàn)碼初始值和所述待寫入的文件中的數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容,利用校驗(yàn)碼生成算法計(jì)算得到所述數(shù)據(jù)塊的校驗(yàn)碼;

      所述裝置還包括:內(nèi)嵌模塊,用于將計(jì)算得到的所述數(shù)據(jù)塊的校驗(yàn)碼內(nèi)嵌到所述數(shù)據(jù)塊中。

      其中,所述確定模塊,還用于利用散列算法,對所述文件名信息進(jìn)行散列運(yùn)算得到散列值,將所述散列值確定為所述文件名信息對應(yīng)的文件中的數(shù)據(jù)塊的校驗(yàn)碼初始值。

      其中,所述散列算法包括任一能夠保證不同文件名信息產(chǎn)生的散列沖突的概率小于預(yù)設(shè)的散列沖突忽略閾值的散列算法。

      其中,所述的裝置還包括:設(shè)置模塊,用于根據(jù)每個(gè)文件的元數(shù)據(jù)設(shè)置 唯一的校驗(yàn)碼初始值,并將所述校驗(yàn)碼初始值添加到與其對應(yīng)的文件的元數(shù)據(jù)中,每個(gè)文件的元數(shù)據(jù)中包括所述文件的文件名信息。

      本發(fā)明還提供一種文件數(shù)據(jù)的校驗(yàn)裝置,包括:確定模塊,用于根據(jù)待寫入的文件的文件名信息,確定校驗(yàn)碼初始值;計(jì)算模塊,還用于根據(jù)所述校驗(yàn)碼初始值和所述待寫入的文件中的數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容,利用校驗(yàn)碼生成算法計(jì)算得到所述數(shù)據(jù)塊的校驗(yàn)碼;內(nèi)嵌模塊,用于將計(jì)算得到的所述數(shù)據(jù)塊的校驗(yàn)碼內(nèi)嵌到所述數(shù)據(jù)塊中。

      其中,所述確定模塊,還用于利用散列算法,對所述文件名信息進(jìn)行散列運(yùn)算得到散列值,將所述散列值確定為所述文件名信息對應(yīng)的文件中的數(shù)據(jù)塊的校驗(yàn)碼初始值。

      其中,所述散列算法包括任一能夠保證不同文件名信息產(chǎn)生的散列沖突的概率小于預(yù)設(shè)的散列沖突忽略閾值的散列算法。

      其中,所述裝置還包括設(shè)置模塊,所述設(shè)置模塊,用于根據(jù)每個(gè)文件的元數(shù)據(jù)設(shè)置唯一的校驗(yàn)碼初始值,并將所述校驗(yàn)碼初始值添加到與其對應(yīng)的文件的元數(shù)據(jù)中,每個(gè)文件的元數(shù)據(jù)中包括所述文件的文件名信息。

      本發(fā)明實(shí)施例中的存儲(chǔ)系統(tǒng)在寫入文件中的數(shù)據(jù)時(shí),根據(jù)待寫入的文件的文件名信息,確定待寫入的文件的校驗(yàn)碼初始值,相當(dāng)于把文件名信息編碼到了該校驗(yàn)碼初始值之中;之后,根據(jù)所述校驗(yàn)碼初始值和所述待寫入的文件中的數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容,利用校驗(yàn)碼生成算法計(jì)算得到所述數(shù)據(jù)塊的校驗(yàn)碼;并將計(jì)算得到的所述數(shù)據(jù)塊的校驗(yàn)碼內(nèi)嵌到所述數(shù)據(jù)塊中。

      對應(yīng)地,存儲(chǔ)系統(tǒng)在讀取文件中的數(shù)據(jù)時(shí),根據(jù)待讀取的文件的文件名信息,確定待讀取的文件的校驗(yàn)碼初始值,相當(dāng)于把文件名信息編碼到了該校驗(yàn)碼初始值之中;之后,根據(jù)所述校驗(yàn)碼初始值和所述待讀取的文件中的數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容,利用校驗(yàn)碼生成算法計(jì)算得到所述數(shù)據(jù)塊的校驗(yàn)碼;將所述計(jì)算得到的校驗(yàn)碼與所述數(shù)據(jù)塊中內(nèi)嵌的校驗(yàn)碼進(jìn)行比較,若一致則說明寫入文件的數(shù)據(jù)與讀取文件的數(shù)據(jù)是完整的,且數(shù)據(jù)和文件的一致性。

      因此,本發(fā)明中將文件名信息和檢驗(yàn)碼生成算法結(jié)合起來,使得校驗(yàn)碼、數(shù)據(jù)塊、文件信息這三者必須一起使用才能校驗(yàn)數(shù)據(jù)的完整性、數(shù)據(jù)和文件的一致性。而且本發(fā)明提供的方法是跨平臺(tái)可移植的,不依賴于操作系統(tǒng)和 文件系統(tǒng)的特性。

      附圖說明

      此處所說明的附圖用來提供對本申請的進(jìn)一步理解,構(gòu)成本申請的一部分,本申請的示意性實(shí)施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。在附圖中:

      圖1為本發(fā)明實(shí)施例提供的一種校驗(yàn)碼生成原理示意圖;

      圖2為本發(fā)明實(shí)施例提供的一種內(nèi)嵌校驗(yàn)碼的生成方法的流程圖;

      圖3為本發(fā)明實(shí)施例提供的一種文件數(shù)據(jù)的校驗(yàn)方法的流程圖;

      圖4為本發(fā)明實(shí)施例提供的一種文件數(shù)據(jù)的校驗(yàn)方法的流程圖;

      圖5為本發(fā)明實(shí)施例提供的一種文件數(shù)據(jù)的校驗(yàn)裝置的結(jié)構(gòu)圖;

      圖6為本發(fā)明實(shí)施例提供的一種文件數(shù)據(jù)的校驗(yàn)裝置的結(jié)構(gòu)圖。

      具體實(shí)施方式

      以下將配合附圖及實(shí)施例來詳細(xì)說明本申請的實(shí)施方式,藉此對本申請如何應(yīng)用技術(shù)手段來解決技術(shù)問題并達(dá)成技術(shù)功效的實(shí)現(xiàn)過程能充分理解并據(jù)以實(shí)施。

      在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。

      內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。

      計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁 磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。

      如在說明書及權(quán)利要求當(dāng)中使用了某些詞匯來指稱特定組件。本領(lǐng)域技術(shù)人員應(yīng)可理解,硬件制造商可能會(huì)用不同名詞來稱呼同一個(gè)組件。本說明書及權(quán)利要求并不以名稱的差異來作為區(qū)分組件的方式,而是以組件在功能上的差異來作為區(qū)分的準(zhǔn)則。如在通篇說明書及權(quán)利要求當(dāng)中所提及的“包含”為一開放式用語,故應(yīng)解釋成“包含但不限定于”?!按笾隆笔侵冈诳山邮盏恼`差范圍內(nèi),本領(lǐng)域技術(shù)人員能夠在一定誤差范圍內(nèi)解決所述技術(shù)問題,基本達(dá)到所述技術(shù)效果。此外,“耦接”一詞在此包含任何直接及間接的電性耦接手段。因此,若文中描述一第一裝置耦接于一第二裝置,則代表所述第一裝置可直接電性耦接于所述第二裝置,或通過其他裝置或耦接手段間接地電性耦接至所述第二裝置。說明書后續(xù)描述為實(shí)施本申請的較佳實(shí)施方式,然所述描述乃以說明本申請的一般原則為目的,并非用以限定本申請的范圍。本申請的保護(hù)范圍當(dāng)視所附權(quán)利要求所界定者為準(zhǔn)。

      還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的商品或者系統(tǒng)不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種商品或者系統(tǒng)所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的商品或者系統(tǒng)中還存在另外的相同要素。

      本發(fā)明把文件信息和檢驗(yàn)碼生成算法結(jié)合起來,使得校驗(yàn)碼、數(shù)據(jù)塊、文件信息這三者必須一起使用才能校驗(yàn)數(shù)據(jù)的完整性、數(shù)據(jù)和文件的一致性。本發(fā)明提供的方法是跨平臺(tái)可移植的,不依賴于操作系統(tǒng)和文件系統(tǒng)的特性。

      圖1為本發(fā)明實(shí)施例提供的一種校驗(yàn)碼生成原理示意圖;圖2為本發(fā)明實(shí)施例提供的一種內(nèi)嵌校驗(yàn)碼的生成方法的流程圖;如圖1和圖2所示,內(nèi)嵌校驗(yàn)碼的生成方法具體包括:

      201、根據(jù)待寫入的文件的文件名信息,確定所述待寫入的文件的校驗(yàn)碼初始值;

      如圖1所示的原理示意圖,計(jì)算數(shù)據(jù)塊的校驗(yàn)碼的算法過程有一個(gè)校驗(yàn)碼初始值,寫入數(shù)據(jù)計(jì)算校驗(yàn)碼的過程和讀出數(shù)據(jù)重新計(jì)算校驗(yàn)碼的過程必須使用約定好的相同的校驗(yàn)碼初始值,從而通過判斷兩次計(jì)算獲取的校驗(yàn)碼是否一致來檢驗(yàn)寫入數(shù)據(jù)和讀出數(shù)據(jù)的一致性。在本發(fā)明的一種可選的實(shí)施方式中,確定待寫入的文件的校驗(yàn)碼初始值的方法為使用每個(gè)待寫入的文件的文件名的散列值作為該文件對應(yīng)數(shù)據(jù)塊的校驗(yàn)碼初始值。

      散列,即hash,散列算法將任意長度的輸入(又叫做預(yù)映射,pre-image),變換成固定長度的輸出,該輸出就是散列值。典型的散列算法包括md2(messagedigestalgorithm)、md4、md5和sha-1。

      獲取校驗(yàn)碼初始值具體實(shí)現(xiàn)時(shí)包括:

      選用合適的散列算法,所述散列算法包括任一能夠保證不同文件名信息產(chǎn)生的散列沖突的概率小于預(yù)設(shè)的散列沖突忽略閾值的散列算法,因此,選用原則是保證不同文件名產(chǎn)生散列沖突的概率小到可以忽略,為此,本發(fā)明實(shí)施例設(shè)置一個(gè)散列沖突忽略閾值,例如可以根據(jù)經(jīng)驗(yàn)值進(jìn)行設(shè)置;

      利用該散列算法,對所述文件名信息進(jìn)行散列運(yùn)算得到散列值;

      將所述散列值作為所述文件名信息對應(yīng)的文件中的數(shù)據(jù)塊的校驗(yàn)碼初始值,相當(dāng)于把文件名信息編碼到了該校驗(yàn)碼初始值之中。需要說明的是,本發(fā)明使用文件名的散列值作為該文件對應(yīng)數(shù)據(jù)塊的校驗(yàn)碼初始值是跨平臺(tái)可移植的,不依賴于操作系統(tǒng)和文件系統(tǒng)的特性。

      在本發(fā)明的一種可選的實(shí)施方式中,確定待寫入的文件的校驗(yàn)碼初始值的方法為在每個(gè)待寫入的文件的元數(shù)據(jù)中添加一項(xiàng)校驗(yàn)碼初始值,具體實(shí)現(xiàn)時(shí)包括:

      根據(jù)每個(gè)文件的元數(shù)據(jù)設(shè)置唯一的校驗(yàn)碼初始值,將所述校驗(yàn)碼初始值添加到與其對應(yīng)的文件的元數(shù)據(jù)中;也就是說,建立每個(gè)文件的元數(shù)據(jù)與校驗(yàn)碼初始值之間的唯一對應(yīng)關(guān)系;該校驗(yàn)碼初始值雖然不是通過散列算法計(jì)算出來,但由于每個(gè)文件的元數(shù)據(jù)是唯一的,其對應(yīng)設(shè)置的校驗(yàn)碼初始值也是唯一的,因此可以保證不同文件的檢驗(yàn)碼初始值是不同。而且,每個(gè)文件的元數(shù)據(jù)中包括所述文件的文件名信息,相當(dāng)于把文件名信息編碼到了該校驗(yàn)碼初始值之中。

      需要說明的是,本發(fā)明中根據(jù)每個(gè)文件的元數(shù)據(jù)設(shè)置唯一的校驗(yàn)碼初始 值是與現(xiàn)有的在文件的元數(shù)據(jù)中額外記錄文件在操作系統(tǒng)的文件系統(tǒng)中的底層的一個(gè)inode值是不同的;

      由于現(xiàn)有的讀寫文件的時(shí)候檢查文件當(dāng)前的inode值和元數(shù)據(jù)中記錄的inode值是否一致的方法是不可移植的,不是所有的的操作系統(tǒng)和文件系統(tǒng)都能提供底層inode值,而且這種方法只能檢測出inode值改變這一特定類型的數(shù)據(jù)和文件不一致現(xiàn)象。而本發(fā)明中根據(jù)每個(gè)文件的元數(shù)據(jù)設(shè)置唯一的校驗(yàn)碼初始值是不依賴于操作系統(tǒng)和文件系統(tǒng)的特性,是可以跨平臺(tái)可移植的。

      202、根據(jù)所述校驗(yàn)碼初始值和所述待寫入的文件中的數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容,利用校驗(yàn)碼生成算法計(jì)算得到所述數(shù)據(jù)塊的校驗(yàn)碼;

      校驗(yàn)碼為在數(shù)據(jù)校驗(yàn)規(guī)則下,根據(jù)存儲(chǔ)數(shù)據(jù)生成的,本申請實(shí)施方式不限定具體的校驗(yàn)碼生成算法,可根據(jù)實(shí)際情況進(jìn)行選擇,比如dif校驗(yàn)、奇偶校驗(yàn)、總數(shù)校驗(yàn)、循環(huán)冗余碼校驗(yàn)(cyclicalredundancycheck,即crc)等等,不同的校驗(yàn)算法,生成的校驗(yàn)碼不一定相同,例如校驗(yàn)規(guī)則為dif校驗(yàn),則生成的校驗(yàn)碼為dif校驗(yàn)碼,若為奇偶校驗(yàn),則生成的校驗(yàn)碼為奇偶校驗(yàn)碼。

      具體的,所述奇偶校驗(yàn)根據(jù)被傳輸?shù)囊唤M二進(jìn)制代碼的數(shù)位中“1”的個(gè)數(shù)是奇數(shù)或偶數(shù)來進(jìn)行校驗(yàn)。采用奇數(shù)的稱為奇校驗(yàn),反之,稱為偶校驗(yàn)。采用何種校驗(yàn)是事先規(guī)定好的。通常專門設(shè)置一個(gè)奇偶校驗(yàn)位,用它使這組代碼中“1”的個(gè)數(shù)為奇數(shù)或偶數(shù)。若用奇校驗(yàn),則當(dāng)接收端收到這組代碼時(shí),校驗(yàn)“1”的個(gè)數(shù)是否為奇數(shù),從而確定傳輸代碼的正確性。

      所述crc校驗(yàn)是利用除法及余數(shù)的原理來作錯(cuò)誤偵測(errordetecting)的。實(shí)際應(yīng)用時(shí),發(fā)送裝置計(jì)算出crc值并隨數(shù)據(jù)一同發(fā)送給接收裝置,接收裝置對收到的數(shù)據(jù)重新計(jì)算crc并與收到的crc相比較,若兩個(gè)crc值不同,則說明數(shù)據(jù)通訊出現(xiàn)錯(cuò)誤。根據(jù)應(yīng)用環(huán)境與習(xí)慣的不同,crc又可分為以下幾種標(biāo)準(zhǔn):crc-12碼、crc-16碼、crc-ccitt碼、crc-32碼,其中crc-12碼通常用來傳送6-bit字符串。crc-16及crc-ccitt碼則是用來傳送8-bit字符串,其中crc-16為美國采用,而crc-ccitt為歐洲國家所采用。crc-32碼大都被采用在一種稱為point-to-point的同步傳輸中。如圖1所示的原理示意圖,存儲(chǔ)系統(tǒng)在寫入文件的數(shù)據(jù)時(shí),分塊計(jì)算該 文件中各數(shù)據(jù)塊的校驗(yàn)碼,具體地,使用系統(tǒng)約定的校驗(yàn)碼生成算法(通常是crc32算法,具體不再贅述)對文件中每個(gè)數(shù)據(jù)塊,以每個(gè)數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容作為輸入,使用上述步驟201中確定的待寫入的文件的校驗(yàn)碼初始值,計(jì)算出每個(gè)數(shù)據(jù)塊的校驗(yàn)碼。203、將計(jì)算得到的所述數(shù)據(jù)塊的校驗(yàn)碼內(nèi)嵌到所述數(shù)據(jù)塊中。

      圖3為本發(fā)明實(shí)施例提供的一種文件數(shù)據(jù)的校驗(yàn)方法的流程圖,如圖3所示,包括:

      301、根據(jù)待讀取的文件的文件名信息,確定待讀取的文件的校驗(yàn)碼初始值;

      在本發(fā)明的一種可選的實(shí)施方式中,確定待讀取的文件的校驗(yàn)碼初始值的方法為使用每個(gè)待讀取的文件的文件名的散列值作為該文件對應(yīng)數(shù)據(jù)塊的校驗(yàn)碼初始值,具體實(shí)現(xiàn)時(shí)包括:

      選用合適的散列算法,選用原則是保證不同文件名產(chǎn)生散列沖突的概率小到可以忽略,為此,本發(fā)明實(shí)施例可以根據(jù)經(jīng)驗(yàn)設(shè)置一個(gè)散列沖突忽略閾值;

      利用該散列算法,對所述文件名信息進(jìn)行散列運(yùn)算得到散列值;

      將所述散列值作為所述文件名信息對應(yīng)的文件中的數(shù)據(jù)塊的校驗(yàn)碼初始值,相當(dāng)于把文件名信息編碼到了該校驗(yàn)碼初始值之中。

      在本發(fā)明的一種可選的實(shí)施方式中,確定待讀取的文件的校驗(yàn)碼初始值的方法為在每個(gè)待讀取的文件的元數(shù)據(jù)中添加一項(xiàng)校驗(yàn)碼初始值,具體實(shí)現(xiàn)時(shí)包括:

      根據(jù)每個(gè)文件的元數(shù)據(jù)設(shè)置唯一的校驗(yàn)碼初始值,將所述校驗(yàn)碼初始值添加到與其對應(yīng)的文件的元數(shù)據(jù)中;也就是說,建立每個(gè)文件的元數(shù)據(jù)與校驗(yàn)碼初始值之間的唯一對應(yīng)關(guān)系;該校驗(yàn)碼初始值雖然不是通過散列算法計(jì)算出來,但由于每個(gè)文件的元數(shù)據(jù)是唯一的,其對應(yīng)設(shè)置的校驗(yàn)碼初始值也是唯一的,因此可以保證不同文件的檢驗(yàn)碼初始值是不同。而且,每個(gè)文件的元數(shù)據(jù)中包括所述文件的文件名信息,相當(dāng)于把文件名信息編碼到了該校驗(yàn)碼初始值之中。

      302、根據(jù)所述校驗(yàn)碼初始值和所述待讀取的文件中的數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容,利用校驗(yàn)碼生成算法計(jì)算得到所述數(shù)據(jù)塊的校驗(yàn)碼;

      例如,存儲(chǔ)系統(tǒng)在讀取文件的數(shù)據(jù)時(shí),分塊計(jì)算該文件中各數(shù)據(jù)塊的校驗(yàn)碼,具體地,使用系統(tǒng)約定的校驗(yàn)碼生成算法(例如為crc32算法,具體不再贅述)對待讀取的文件中每個(gè)數(shù)據(jù)塊,以每個(gè)數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容作為輸入,使用上述步驟301中確定的待讀取的文件的校驗(yàn)碼初始值,計(jì)算出每個(gè)數(shù)據(jù)塊的校驗(yàn)碼。

      303、將所述計(jì)算得到的校驗(yàn)碼與所述數(shù)據(jù)塊中內(nèi)嵌的校驗(yàn)碼進(jìn)行比較,若一致則確定所述待讀文件和所述數(shù)據(jù)塊是一致的。

      存儲(chǔ)系統(tǒng)讀出文件中某個(gè)數(shù)據(jù)塊之后,利用步驟302中計(jì)算的該數(shù)據(jù)塊的校驗(yàn)碼和讀出來的該數(shù)據(jù)塊中所內(nèi)嵌的校驗(yàn)碼進(jìn)行比較,若兩個(gè)校驗(yàn)碼一致則說明該數(shù)據(jù)塊是完整的,且該數(shù)據(jù)塊和文件是一致的。

      本發(fā)明實(shí)施例中的存儲(chǔ)系統(tǒng)在寫入文件中的數(shù)據(jù)時(shí),根據(jù)待寫入的文件的文件名信息,確定待寫入的文件的校驗(yàn)碼初始值,相當(dāng)于把文件名信息編碼到了該校驗(yàn)碼初始值之中;之后,根據(jù)所述校驗(yàn)碼初始值和所述待寫入的文件中的數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容,利用校驗(yàn)碼生成算法計(jì)算得到所述數(shù)據(jù)塊的校驗(yàn)碼;并將計(jì)算得到的所述數(shù)據(jù)塊的校驗(yàn)碼內(nèi)嵌到所述數(shù)據(jù)塊中。

      對應(yīng)地,存儲(chǔ)系統(tǒng)在讀取文件中的數(shù)據(jù)時(shí),根據(jù)待讀取的文件的文件名信息,確定待讀取的文件的校驗(yàn)碼初始值,相當(dāng)于把文件名信息編碼到了該校驗(yàn)碼初始值之中;之后,根據(jù)所述校驗(yàn)碼初始值和所述待讀取的文件中的數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容,利用校驗(yàn)碼生成算法計(jì)算得到所述數(shù)據(jù)塊的校驗(yàn)碼;將所述計(jì)算得到的校驗(yàn)碼與所述數(shù)據(jù)塊中內(nèi)嵌的校驗(yàn)碼進(jìn)行比較,若一致則說明寫入文件的數(shù)據(jù)與讀取文件的數(shù)據(jù)是完整的,且數(shù)據(jù)和文件的一致性。因此,本發(fā)明中將文件名信息和檢驗(yàn)碼生成算法結(jié)合起來,使得校驗(yàn)碼、數(shù)據(jù)塊、文件明信息這三者必須一起使用才能校驗(yàn)數(shù)據(jù)的完整性、數(shù)據(jù)和文件的一致性。而且本發(fā)明提供的方法是跨平臺(tái)可移植的,不依賴于操作系統(tǒng)和文件系統(tǒng)的特性。

      需要說明的是,圖2對應(yīng)的實(shí)施例單獨(dú)存在時(shí),是本申請技術(shù)方案在寫入數(shù)據(jù)時(shí)添加內(nèi)嵌校驗(yàn)碼的優(yōu)選實(shí)現(xiàn)過程,圖3獨(dú)立存在時(shí),是本申請技術(shù)方案在讀取數(shù)據(jù)時(shí)對其進(jìn)行文件一致性校驗(yàn)的優(yōu)選實(shí)現(xiàn)過程,圖2和圖3對應(yīng)的實(shí)施例可以單獨(dú)存在,但其結(jié)合產(chǎn)生的技術(shù)效果是更加完整的,是數(shù)據(jù)校驗(yàn)從寫入至讀出的完整實(shí)現(xiàn)。

      圖4為本發(fā)明實(shí)施例提供的一種文件數(shù)據(jù)校驗(yàn)方法的另一流程圖;結(jié)合圖4,本申請實(shí)施例還可以有如下的實(shí)施方式:

      401、為每一待寫入的數(shù)據(jù)設(shè)置唯一的校驗(yàn)碼初始值,并將所述校驗(yàn)碼初始值添加到與其對應(yīng)的文件的元數(shù)據(jù)中;

      本實(shí)施例的核心在于,將存儲(chǔ)數(shù)據(jù)的文件名信息與校驗(yàn)碼相結(jié)合,形成一一對應(yīng)的關(guān)系,從而克服現(xiàn)有技術(shù)中,存儲(chǔ)數(shù)據(jù)的文件名與內(nèi)嵌校驗(yàn)碼可能不一致的問題。

      因此,本實(shí)施例中,為每個(gè)數(shù)據(jù)文件設(shè)置唯一的校驗(yàn)碼初始值,并將所述校驗(yàn)碼初始值添加到與其對應(yīng)的文件的元數(shù)據(jù)中;也就是說,建立每個(gè)文件的元數(shù)據(jù)與校驗(yàn)碼初始值之間的唯一對應(yīng)關(guān)系,不同的文件之間,所述校驗(yàn)碼初始值各異;在寫入數(shù)據(jù)時(shí),使用所述校驗(yàn)碼初始值生成校驗(yàn)碼。

      其中,所述元數(shù)據(jù)又稱中介數(shù)據(jù)、中繼數(shù)據(jù),是一種描述數(shù)據(jù)的數(shù)據(jù)(dataaboutdata),主要是描述數(shù)據(jù)屬性(property)的信息,用來支持如指示存儲(chǔ)位置、歷史數(shù)據(jù)、資源查找、文件記錄等功能。元數(shù)據(jù)相當(dāng)于一種電子式目錄,因此本發(fā)明實(shí)施例中,為每一數(shù)據(jù)文件設(shè)置唯一的校驗(yàn)碼初始值,并將所述校驗(yàn)碼初始值與相應(yīng)文件名的一一對應(yīng)的關(guān)系存儲(chǔ)在相應(yīng)文件的元數(shù)據(jù)中,以使用戶在讀取數(shù)據(jù)時(shí),從所述元數(shù)據(jù)中讀取所述校驗(yàn)碼初始值并計(jì)算相應(yīng)的校驗(yàn)碼,從而與寫入數(shù)據(jù)時(shí)使用同一校驗(yàn)碼初始值計(jì)算生成的校驗(yàn)碼進(jìn)行比較。

      402、根據(jù)所述校驗(yàn)碼初始值和所述待寫入的文件中的數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容,利用校驗(yàn)碼生成算法計(jì)算得到所述數(shù)據(jù)塊的校驗(yàn)碼;

      如圖1所示的原理示意圖,存儲(chǔ)系統(tǒng)在寫入文件的數(shù)據(jù)時(shí),分塊計(jì)算該文件中各數(shù)據(jù)塊的校驗(yàn)碼,具體地,使用系統(tǒng)約定的校驗(yàn)碼生成算法(通常是crc32算法,具體不再贅述)對文件中每個(gè)數(shù)據(jù)塊,以每個(gè)數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容作為輸入,根據(jù)預(yù)設(shè)的所述校驗(yàn)碼初始值計(jì)算出每個(gè)數(shù)據(jù)塊的校驗(yàn)碼。

      403、將計(jì)算得到的所述數(shù)據(jù)塊的校驗(yàn)碼內(nèi)嵌到所述數(shù)據(jù)塊中;

      404、從元數(shù)據(jù)中獲取與待讀取文件對應(yīng)的校驗(yàn)碼初始值;

      405、根據(jù)所述校驗(yàn)碼初始值和所述待讀取的文件中的數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容,利用校驗(yàn)碼生成算法計(jì)算得到所述數(shù)據(jù)塊的校驗(yàn)碼;

      此步驟中,校驗(yàn)碼計(jì)算所使用的算法與步驟402中相同,使用同樣的算 法能夠確保計(jì)算規(guī)則相同,從而避免因算法不同導(dǎo)致的誤判。

      406、若一致則確定所述待讀文件和所述數(shù)據(jù)塊是一致的。

      存儲(chǔ)系統(tǒng)讀出文件中某個(gè)數(shù)據(jù)塊之后,利用步驟402中計(jì)算的該數(shù)據(jù)塊的校驗(yàn)碼和讀出來的該數(shù)據(jù)塊中所內(nèi)嵌的校驗(yàn)碼進(jìn)行比較,若兩個(gè)校驗(yàn)碼一致則說明該數(shù)據(jù)塊是完整的,且該數(shù)據(jù)塊和文件是一致的。

      圖5為本發(fā)明實(shí)施例提供的一種文件數(shù)據(jù)的校驗(yàn)裝置的結(jié)構(gòu)圖,如圖5所示包括:

      確定模塊51,用于根據(jù)待讀取的文件的文件名信息,確定校驗(yàn)碼初始值;

      計(jì)算模塊52,用于根據(jù)所述校驗(yàn)碼初始值和所述待讀取的文件中的數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容,利用校驗(yàn)碼生成算法計(jì)算得到所述數(shù)據(jù)塊的校驗(yàn)碼;

      比較模塊53,用于將所述計(jì)算得到的校驗(yàn)碼與所述數(shù)據(jù)塊中內(nèi)嵌的校驗(yàn)碼進(jìn)行比較,若一致則確定所述待讀文件和所述數(shù)據(jù)塊是一致的。

      其中,所述確定模塊51,還用于根據(jù)待寫入的文件的文件名信息,確定校驗(yàn)碼初始值;

      所述計(jì)算模塊52,還用于根據(jù)所述校驗(yàn)碼初始值和所述待寫入的文件中的數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容,利用校驗(yàn)碼生成算法計(jì)算得到所述數(shù)據(jù)塊的校驗(yàn)碼;

      所述裝置還包括:

      內(nèi)嵌模塊54,用于將計(jì)算得到的所述數(shù)據(jù)塊的校驗(yàn)碼內(nèi)嵌到所述數(shù)據(jù)塊中。

      其中,所述確定模塊51,還用于利用散列算法,對所述文件名信息進(jìn)行散列運(yùn)算得到散列值,將所述散列值確定為所述文件名信息對應(yīng)的文件中的數(shù)據(jù)塊的校驗(yàn)碼初始值。

      其中,所述散列算法包括任一能夠保證不同文件名信息產(chǎn)生的散列沖突的概率小于預(yù)設(shè)的散列沖突忽略閾值的散列算法。

      其中,所述的裝置還包括:

      設(shè)置模塊55,用于根據(jù)每個(gè)文件的元數(shù)據(jù)設(shè)置唯一的校驗(yàn)碼初始值,并將所述校驗(yàn)碼初始值添加到與其對應(yīng)的文件的元數(shù)據(jù)中,每個(gè)文件的元數(shù)據(jù)中包括所述文件的文件名信息。

      需要說明的是,本申請一種文件數(shù)據(jù)的校驗(yàn)裝置中所包含的模塊,可以集成在同一校驗(yàn)設(shè)備上,所述校驗(yàn)設(shè)備可以只計(jì)算寫入數(shù)據(jù)的校驗(yàn)碼或只計(jì) 算讀出數(shù)據(jù)的校驗(yàn)碼,或在數(shù)據(jù)寫入時(shí)計(jì)算寫入數(shù)據(jù)的校驗(yàn)碼并且在檢測到有數(shù)據(jù)讀取時(shí),計(jì)算相應(yīng)被讀取數(shù)據(jù)的校驗(yàn)碼從而對數(shù)據(jù)一致性進(jìn)行檢驗(yàn)。

      另,所述校驗(yàn)裝置中所包含的模塊也可以分別集成在兩個(gè)不同的設(shè)備上,例如服務(wù)器和用戶設(shè)備。位于服務(wù)器側(cè)的校驗(yàn)裝置可以只具有寫入數(shù)據(jù)的校驗(yàn)碼計(jì)算功能并將所述校驗(yàn)碼內(nèi)嵌至存儲(chǔ)數(shù)據(jù),而位于用戶設(shè)備處的校驗(yàn)裝置可以只具有讀取數(shù)據(jù)的校驗(yàn)碼計(jì)算功能,讀取服務(wù)器端嵌入的校驗(yàn)碼并驗(yàn)證數(shù)據(jù)的一致性。本申請實(shí)施例包括單并不僅限于以上描述。

      圖5所示裝置可以執(zhí)行圖2和圖3、圖4所示實(shí)施例所述方法,其實(shí)現(xiàn)原理和技術(shù)效果不再贅述。

      圖6為本發(fā)明實(shí)施例提供的一種文件數(shù)據(jù)的校驗(yàn)裝置的結(jié)構(gòu)圖,如圖6所示包括:

      確定模塊61,用于根據(jù)待寫入的文件的文件名信息,確定校驗(yàn)碼初始值;

      計(jì)算模塊62,還用于根據(jù)所述校驗(yàn)碼初始值和所述待寫入的文件中的數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容,利用校驗(yàn)碼生成算法計(jì)算得到所述數(shù)據(jù)塊的校驗(yàn)碼;

      內(nèi)嵌模塊63,用于將計(jì)算得到的所述數(shù)據(jù)塊的校驗(yàn)碼內(nèi)嵌到所述數(shù)據(jù)塊中。

      其中,所述確定模塊61,還用于利用散列算法,對所述文件名信息進(jìn)行散列運(yùn)算得到散列值,將所述散列值確定為所述文件名信息對應(yīng)的文件中的數(shù)據(jù)塊的校驗(yàn)碼初始值。

      其中,所述散列算法包括任一能夠保證不同文件名信息產(chǎn)生的散列沖突的概率小于預(yù)設(shè)的散列沖突忽略閾值的散列算法。

      所述裝置還包括設(shè)置模塊64,所述設(shè)置模塊63,用于根據(jù)每個(gè)文件的元數(shù)據(jù)設(shè)置唯一的校驗(yàn)碼初始值,并將所述校驗(yàn)碼初始值添加到與其對應(yīng)的文件的元數(shù)據(jù)中,每個(gè)文件的元數(shù)據(jù)中包括所述文件的文件名信息。

      圖6所示裝置可以執(zhí)行圖2所示實(shí)施例所述方法,其實(shí)現(xiàn)原理和技術(shù)效果不再贅述。

      上述說明示出并描述了本發(fā)明的若干優(yōu)選實(shí)施例,但如前所述,應(yīng)當(dāng)理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對其他實(shí)施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識(shí)進(jìn)行改動(dòng)。而本領(lǐng)域人員所進(jìn)行的改 動(dòng)和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護(hù)范圍內(nèi)。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1