一種存儲(chǔ)數(shù)據(jù)的方法及存儲(chǔ)設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明設(shè)及存儲(chǔ)領(lǐng)域,尤其設(shè)及一種存儲(chǔ)數(shù)據(jù)的方法及存儲(chǔ)設(shè)備。
【背景技術(shù)】
[0002] 現(xiàn)有的存儲(chǔ)業(yè)務(wù)中,通常采用循環(huán)冗余校驗(yàn)(英文全稱:Cyclic Redundancy 化eck,簡(jiǎn)稱:CRC)碼來實(shí)現(xiàn)數(shù)據(jù)的完整性保護(hù),CRC碼是根據(jù)存儲(chǔ)的數(shù)據(jù)塊通過復(fù)雜的計(jì)算 產(chǎn)生一個(gè)查錯(cuò)檢驗(yàn)值,其大小可W是化k特、16比特或者32比特等。在具體存儲(chǔ)時(shí),存儲(chǔ)設(shè)備 同時(shí)存儲(chǔ)數(shù)據(jù)塊W及該數(shù)據(jù)塊的數(shù)據(jù)完整性字段(英文全稱:data integrity field,簡(jiǎn)稱 DIF),其中,數(shù)據(jù)完整性字段包括了該數(shù)據(jù)塊的CRC碼、邏輯塊尋址(英文全稱:logical block addressing,簡(jiǎn)稱:LBA)信息及其他自定義信息,運(yùn)樣,該存儲(chǔ)設(shè)備在后續(xù)讀該數(shù)據(jù) 塊時(shí),將讀出來的數(shù)據(jù)塊重新計(jì)算CR邱馬,將重新計(jì)算得到的CRC碼和原始存儲(chǔ)的CRC碼進(jìn)行 對(duì)比校驗(yàn),即可識(shí)別出該數(shù)據(jù)塊是否出錯(cuò)。
[0003] 但是,現(xiàn)有技術(shù)中,存儲(chǔ)設(shè)備的內(nèi)存中一個(gè)扇區(qū)的大小和硬盤中一個(gè)扇區(qū)的大小 可能不同,因此,存儲(chǔ)設(shè)備在內(nèi)存中存儲(chǔ)數(shù)據(jù)和在硬盤中存儲(chǔ)數(shù)據(jù)時(shí),計(jì)算CRC碼的數(shù)據(jù)粒 度可能不同。
[0004] 例如,存儲(chǔ)設(shè)備的內(nèi)存中一個(gè)扇區(qū)的大小通常為520字節(jié),并且一個(gè)扇區(qū)中通常采 用51化8的方式存儲(chǔ)數(shù)據(jù)塊,即一個(gè)扇區(qū)中包括512字節(jié)大小的數(shù)據(jù)塊W及8字節(jié)大小的數(shù) 據(jù)完整性字段,其中,該數(shù)據(jù)完整性字段中的CRC碼占用2個(gè)字節(jié),在此種情況下,若該存儲(chǔ) 設(shè)備的硬盤中的一個(gè)扇區(qū)大小為4104字節(jié),則該存儲(chǔ)設(shè)備在將內(nèi)存的數(shù)據(jù)塊寫入硬盤時(shí), 需要將內(nèi)存的8個(gè)扇區(qū)中存儲(chǔ)的8個(gè)512字節(jié)的數(shù)據(jù)合并為4096字節(jié)大小的數(shù)據(jù),并重新遍 歷每個(gè)字節(jié)計(jì)算該4096個(gè)字節(jié)大小的數(shù)據(jù)的CRC碼,并將該4096字節(jié)大小的數(shù)據(jù)W及包括 重新計(jì)算得到的該CR邱馬的8字節(jié)大小的數(shù)據(jù)完整性字段寫入硬盤的一個(gè)扇區(qū)中。
[0005] 由上述可知,由于存儲(chǔ)設(shè)備的內(nèi)存與硬盤的扇區(qū)大小不一致,現(xiàn)有技術(shù)中,該存儲(chǔ) 設(shè)備在將內(nèi)存中的數(shù)據(jù)寫入硬盤時(shí),可能需要重新遍歷數(shù)據(jù)計(jì)算CR邱馬,效率低下。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明的目的是提供一種存儲(chǔ)數(shù)據(jù)的方法及存儲(chǔ)設(shè)備,用W解決現(xiàn)有技術(shù)由于存 儲(chǔ)設(shè)備的內(nèi)存與硬盤的扇區(qū)大小不一致,導(dǎo)致將內(nèi)存中的數(shù)據(jù)寫入硬盤的效率低下的問 題。
[0007] 上述目的將通過獨(dú)立權(quán)利要求中的特征來達(dá)成。進(jìn)一步的實(shí)現(xiàn)方式在從屬權(quán)利要 求、說明書和附圖中體現(xiàn)。
[000引第一方面,提供一種存儲(chǔ)數(shù)據(jù)的方法,用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)設(shè)備包括內(nèi)存和硬盤, 所述內(nèi)存中存儲(chǔ)有數(shù)據(jù)塊,W及每個(gè)所述數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC碼,其中,每個(gè)所述數(shù) 據(jù)塊的字節(jié)大小為^,每個(gè)所述CR邱馬的字節(jié)大小為L2,所述方法包括:所述存儲(chǔ)設(shè)備獲取所 述內(nèi)存中存儲(chǔ)的M個(gè)數(shù)據(jù)塊,W及所述M個(gè)數(shù)據(jù)塊中的每個(gè)數(shù)據(jù)塊的CR邱馬,M是大于1的正整 數(shù);所述存儲(chǔ)設(shè)備根據(jù)M個(gè)所述CRC碼W及預(yù)處理表計(jì)算得到目標(biāo)CRC碼,所述目標(biāo)CRC碼是 所述M個(gè)數(shù)據(jù)塊組成的整體數(shù)據(jù)的CRC碼,所述目標(biāo)CRC碼的字節(jié)大小為L2,所述預(yù)處理表包 括中間數(shù)據(jù)的CRC碼,其中,每個(gè)所述中間數(shù)據(jù)的字節(jié)大小為^,且每個(gè)所述中間數(shù)據(jù)的后 L1-L2個(gè)字節(jié)均為零;所述存儲(chǔ)設(shè)備將所述M個(gè)數(shù)據(jù)塊,W及所述目標(biāo)CRC碼存儲(chǔ)到硬盤的一 個(gè)扇區(qū)中。
[0009] 采用上述方案,該存儲(chǔ)設(shè)備可W通過內(nèi)存中的CRC碼W及預(yù)處理表中的中間數(shù)據(jù) 的CR邱馬計(jì)算得到目標(biāo)CRC碼,無需重新遍歷數(shù)據(jù)計(jì)算,降低了算法的復(fù)雜度,提高了計(jì)算效 率,進(jìn)而提高了將內(nèi)存數(shù)據(jù)寫入硬盤的效率。
[0010] 在結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式中,所述存儲(chǔ)設(shè)備將所述M個(gè)數(shù)據(jù)塊,W 及所述目標(biāo)CRC碼存儲(chǔ)到硬盤的一個(gè)扇區(qū)中,包括:所述存儲(chǔ)設(shè)備將所述M個(gè)數(shù)據(jù)塊進(jìn)行合 并,并將合并后的數(shù)據(jù)塊存儲(chǔ)到所述扇區(qū)的數(shù)據(jù)字段;所述存儲(chǔ)設(shè)備將所述目標(biāo)CR邱馬寫入 所述扇區(qū)的數(shù)據(jù)完整性字段;所述扇區(qū)的大小為所述數(shù)據(jù)字段的字節(jié)大小MXレ與所述數(shù) 據(jù)完整性字段的字節(jié)大小L3之和,其中,L3大于L2。也就是說,存儲(chǔ)設(shè)備從內(nèi)存寫入硬盤的數(shù) 據(jù)剛好確保硬盤的一個(gè)扇區(qū)中存儲(chǔ)多個(gè)等份的數(shù)據(jù)W及每等份數(shù)據(jù)的CR邱馬。
[0011] 結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的 實(shí)現(xiàn)方式中,所述存儲(chǔ)設(shè)備根據(jù)M個(gè)所述CRC碼W及預(yù)處理表計(jì)算得到目標(biāo)CRC碼,包括:所 述存儲(chǔ)設(shè)備根據(jù)所述預(yù)處理表通過直接查表的方式獲取中間數(shù)據(jù)Rk的CRC碼化crc,并計(jì)算 Ck+rRksr。得到計(jì)算結(jié)果,將該計(jì)算結(jié)果的末尾補(bǔ)零,得到與所述數(shù)據(jù)塊的字節(jié)大小相同的 中間數(shù)據(jù)化+1;其中,k依次取數(shù)值區(qū)間[1,M-I)中的正整數(shù),Ck+i是所述M個(gè)數(shù)據(jù)塊中的第k+1 個(gè)數(shù)據(jù)塊的CRC碼,Ri是將所述M個(gè)數(shù)據(jù)塊中的第1個(gè)數(shù)據(jù)塊的CR邱馬Cl的末尾補(bǔ)零,得到的與 所述數(shù)據(jù)塊的字節(jié)大小相同的數(shù)據(jù),當(dāng)k = M-2時(shí),得到中間數(shù)據(jù)Rm-I ;所述存儲(chǔ)設(shè)備查詢所 述預(yù)處理表獲取所述中間數(shù)據(jù)Rm-I的CRC碼R(M-I)CTC,并計(jì)算CM~R(M-l)crc得到所述目標(biāo)CRC碼, Cm是所述M個(gè)數(shù)據(jù)塊中的第M個(gè)數(shù)據(jù)塊的CRC碼。
[0012] 結(jié)合第一方面,或者W上第一方面的任一種可能的實(shí)現(xiàn)方式,在第一方面的第= 種可能的實(shí)現(xiàn)方式中,Li等于512,L2等于2字節(jié),M等于8,L3等于8。
[0013] 第二方面,提供一種存儲(chǔ)設(shè)備,所述存儲(chǔ)設(shè)備包括內(nèi)存W及硬盤,所述內(nèi)存中存儲(chǔ) 有數(shù)據(jù)塊,W及每個(gè)所述數(shù)據(jù)塊的循環(huán)冗余校驗(yàn)CRC碼,其中,每個(gè)所述數(shù)據(jù)塊的字節(jié)大小 為^,每個(gè)所述CRC碼的字節(jié)大小為L2,所述存儲(chǔ)設(shè)備還包括處理器,所述處理器與所述內(nèi)存 W及所述硬盤相連,所述處理器用于:獲取所述內(nèi)存中存儲(chǔ)的M個(gè)數(shù)據(jù)塊,W及所述M個(gè)數(shù)據(jù) 塊中的每個(gè)數(shù)據(jù)塊的CR邱馬,M是大于1的正整數(shù);根據(jù)M個(gè)所述CR邱馬W及預(yù)處理表計(jì)算得到 目標(biāo)CR邱馬,所述目標(biāo)CRC碼是所述M個(gè)數(shù)據(jù)塊組成的整體數(shù)據(jù)的CR邱馬,所述目標(biāo)CRC碼的字 節(jié)大小為L2,所述預(yù)處理表包括中間數(shù)據(jù)的CRC碼,其中,每個(gè)所述中間數(shù)據(jù)的字節(jié)大小為 b,且每個(gè)所述中間數(shù)據(jù)的后b-L2個(gè)字節(jié)均為零;將所述M個(gè)數(shù)據(jù)塊,W及所述目標(biāo)CRC碼存 儲(chǔ)到硬盤的一個(gè)扇區(qū)中。
[0014] 在結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式中,所述處理器具體用于:將所述M個(gè)數(shù) 據(jù)塊進(jìn)行合并,并將合并后的數(shù)據(jù)塊存儲(chǔ)到所述扇區(qū)的數(shù)據(jù)字段;將所述目標(biāo)CR邱馬寫入所 述扇區(qū)的數(shù)據(jù)完整性字段;其中,所述扇區(qū)的大小為所述數(shù)據(jù)字段的字節(jié)大小MXb與所述 數(shù)據(jù)完整性字段的字節(jié)大小L3之和,其中,L3大于L2。
[0015] 結(jié)合第二方面,或者第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可 能的實(shí)現(xiàn)方式中,所述處理器具體用于:根據(jù)所述預(yù)處理表通過直接查表的方式獲取中間 數(shù)據(jù)化的CRC碼Rkcrc,并計(jì)算Ck+rRkcrc得到計(jì)算結(jié)果,將該計(jì)算結(jié)果的末尾補(bǔ)零,得到與所述 數(shù)據(jù)塊的字節(jié)大小相同的中間數(shù)據(jù)Rk+1;其中,k依次取數(shù)值區(qū)間中的正整數(shù),Cw是 所述M個(gè)數(shù)據(jù)塊中的第k+1個(gè)數(shù)據(jù)塊的CRC碼,Ri是將所述M個(gè)數(shù)據(jù)塊中的第1個(gè)數(shù)據(jù)塊的CRC 碼Cl的末尾補(bǔ)零,得到的與所述數(shù)據(jù)塊的字節(jié)大小相同的數(shù)據(jù),當(dāng)k = M-2時(shí),得到中間數(shù)據(jù) Rm-I;所述存儲(chǔ)設(shè)備查詢所述預(yù)處理表獲取所述中間數(shù)據(jù)Rm-I的CRC碼R(M-I)CTC,并計(jì)算Cm' R(M-I)CTC得到所述目標(biāo)CR邱馬,Cm是所述M個(gè)數(shù)據(jù)塊中的第M個(gè)數(shù)據(jù)塊的CR邱馬。
[0016] 結(jié)合第二方面,或者W上第二方面的任一種可能的實(shí)現(xiàn)方式,在第二方面的第= 種可能的實(shí)現(xiàn)方式中,Li等于512,L2等于2字節(jié),M等于8,L3等于8。
當(dāng)前第1頁
1 
2 
3 
4