一種管理磁盤數(shù)據(jù)寫入的方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種管理磁盤數(shù)據(jù)寫入的方法及裝置,包括:當(dāng)有數(shù)據(jù)寫入請求時,按照磁盤扇區(qū)的大小將數(shù)據(jù)寫入請求中的數(shù)據(jù)劃分為n個子數(shù)據(jù)塊;計算劃分后的各個子數(shù)據(jù)塊的指紋值;其中,指紋值用來標(biāo)識子數(shù)據(jù)塊的身份信息;比較各個子數(shù)據(jù)塊的指紋值分別與各個子數(shù)據(jù)塊待寫入的磁盤扇區(qū)相對應(yīng)的指紋值是否相同;當(dāng)比較結(jié)果相同時,不將該子數(shù)據(jù)寫入待寫入的磁盤扇區(qū);當(dāng)比較結(jié)果不同時,將子數(shù)據(jù)塊寫入待寫入的磁盤扇區(qū)中,并更新與該子數(shù)據(jù)塊的寫入磁盤扇區(qū)相對應(yīng)的指紋值為該子數(shù)據(jù)塊的指紋值。本發(fā)明技術(shù)方案避免了重復(fù)數(shù)據(jù)的寫入,從而提升了數(shù)據(jù)的寫入速度,提高了磁盤的使用壽命,從而達(dá)到對數(shù)據(jù)存取速度、可用性、可靠性和安全性的提局。
【專利說明】-種管理磁盤數(shù)據(jù)寫入的方法及裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及移動通信技術(shù),尤指一種管理磁盤數(shù)據(jù)寫入的方法及裝置。
【背景技術(shù)】
[0002] 隨著信息技術(shù)的發(fā)展和數(shù)據(jù)量的增加,各個行業(yè)對數(shù)據(jù)的存儲都提出了更高的要 求,這些要求主要包括數(shù)據(jù)的存取速度、可用性、可靠性和安全性。目前,在主流存儲系統(tǒng) 中,數(shù)據(jù)均是保存在磁盤上的。由于,在存儲系統(tǒng)中磁盤屬于慢速設(shè)備,每次對磁盤上數(shù)據(jù) 的寫入和讀取都會耗費(fèi)較長的時間,并且,針對磁盤的頻繁讀取和寫入會大大降低磁盤的 使用壽命。因此,在現(xiàn)有存儲模式上磁盤的寫入速度和磁盤的使用壽命都需要被改善。
[0003] 傳統(tǒng)的磁盤數(shù)據(jù)寫入是:每次都會將數(shù)據(jù)寫入到磁盤指定的位置,磁盤指定的位 置是指磁盤上指定的扇區(qū)編號所對應(yīng)的存儲空間。但是,在實(shí)際應(yīng)用中,會有大量重復(fù)的數(shù) 據(jù)進(jìn)行寫入,也就是在磁盤上指定扇區(qū)在寫入之前已經(jīng)存在了和將要寫入的數(shù)據(jù)相同的數(shù) 據(jù),大量重復(fù)數(shù)據(jù)的寫入降低了數(shù)據(jù)的寫入速度和磁盤的使用壽命。
【發(fā)明內(nèi)容】
[0004] 為了解決上述技術(shù)問題,本發(fā)明提供了一種管理磁盤數(shù)據(jù)寫入的方法及裝置,避 免重復(fù)數(shù)據(jù)的寫入,能夠提升數(shù)據(jù)的寫入速度,提高磁盤的使用壽命。
[0005] 為了達(dá)到本發(fā)明目的,本發(fā)明提供了一種管理磁盤數(shù)據(jù)寫入的方法,包括:
[0006] 當(dāng)有數(shù)據(jù)寫入請求時,按照磁盤扇區(qū)的大小將數(shù)據(jù)寫入請求中的數(shù)據(jù)劃分為η個 子數(shù)據(jù)塊;
[0007] 計算劃分后的各個子數(shù)據(jù)塊的指紋值;其中,指紋值用來標(biāo)識子數(shù)據(jù)塊的身份信 息;
[0008] 比較計算出的各個子數(shù)據(jù)塊的指紋值分別與各個子數(shù)據(jù)塊待寫入的磁盤扇區(qū)相 對應(yīng)的指紋值是否相同;
[0009] 當(dāng)比較結(jié)果相同時,不將該子數(shù)據(jù)寫入待寫入的磁盤扇區(qū),返回寫入成功并結(jié)束 本流程;當(dāng)比較結(jié)果不同時,將子數(shù)據(jù)塊寫入待寫入的磁盤扇區(qū)中,并更新與該子數(shù)據(jù)塊的 寫入磁盤扇區(qū)相對應(yīng)的指紋值為該子數(shù)據(jù)塊的指紋值。
[0010] 進(jìn)一步地,該方法之前還包括:
[0011] 設(shè)置各個磁盤扇區(qū)的索引與各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊的指紋值的對應(yīng)關(guān) 系。
[0012] 進(jìn)一步地,在設(shè)置對應(yīng)關(guān)系之前,該方法還包括:
[0013] 獲取各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊,計算各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊的指 紋值。
[0014] 進(jìn)一步地,采用MD5算法計算各個子數(shù)據(jù)塊的指紋值。
[0015] 進(jìn)一步地,當(dāng)劃分后的各個子數(shù)據(jù)塊中某個子數(shù)據(jù)塊的大小小于磁盤扇區(qū)大小 時,該方法還包括:
[0016] 在該子數(shù)據(jù)塊的尾部加零填充,直至該子數(shù)據(jù)的大小等于磁盤扇區(qū)大小。
[0017] 本發(fā)明還提供了一種管理磁盤數(shù)據(jù)寫入的裝置,包括:數(shù)據(jù)劃分模塊、指紋值計算 模塊、比較模塊和處理模塊;其中,
[0018] 數(shù)據(jù)劃分模塊,用于當(dāng)有數(shù)據(jù)寫入請求時,按照磁盤扇區(qū)的大小將數(shù)據(jù)寫入請求 中的數(shù)據(jù)劃分為η個子數(shù)據(jù)塊;
[0019] 指紋值計算模塊,用于計算劃分后的各個子數(shù)據(jù)塊的指紋值;其中,指紋值用來標(biāo) 識子數(shù)據(jù)塊的身份信息;
[0020] 比較模塊,用于比較計算出的各個子數(shù)據(jù)塊的指紋值分別與各個子數(shù)據(jù)塊待寫入 的磁盤扇區(qū)相對應(yīng)的指紋值是否相同;
[0021] 處理模塊,用于當(dāng)比較模塊的比較結(jié)果相同時,不將該子數(shù)據(jù)寫入待寫入的磁盤 扇區(qū),返回寫入成功并結(jié)束本流程;當(dāng)比較模塊的比較結(jié)果不同時,將子數(shù)據(jù)塊寫入待寫入 的磁盤扇區(qū)中,并更新與該子數(shù)據(jù)塊的寫入磁盤扇區(qū)相對應(yīng)的指紋值為該子數(shù)據(jù)塊的指紋 值。
[0022] 進(jìn)一步地,該裝置還包括配置模塊,用于:設(shè)置各個磁盤扇區(qū)的索引與各個磁盤扇 區(qū)已存放的子數(shù)據(jù)塊的指紋值的對應(yīng)關(guān)系。
[0023] 進(jìn)一步地,該裝置還包括獲取模塊,用于在各個扇區(qū)的索引與各個扇區(qū)存放的數(shù) 據(jù)的指紋值的對應(yīng)關(guān)系之前,獲取各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊,計算各個磁盤扇區(qū)已 存放的子數(shù)據(jù)塊的指紋值。
[0024] 進(jìn)一步地,指紋值計算模塊,具體用于:采用MD5算法計算各個子數(shù)據(jù)塊的指紋 值。
[0025] 進(jìn)一步地,數(shù)據(jù)劃分模塊,還用于:當(dāng)劃分后的各個子數(shù)據(jù)塊中某個子數(shù)據(jù)塊的大 小小于磁盤扇區(qū)大小時,則在該子數(shù)據(jù)塊的尾部加零填充,直至該子數(shù)據(jù)的大小等于磁盤 扇區(qū)大小。
[0026] 本發(fā)明技術(shù)方案包括:當(dāng)有數(shù)據(jù)寫入請求時,按照磁盤扇區(qū)的大小將數(shù)據(jù)寫入請 求中的數(shù)據(jù)劃分為η個子數(shù)據(jù)塊;計算劃分后的各個子數(shù)據(jù)塊的指紋值;其中,指紋值用來 標(biāo)識子數(shù)據(jù)塊的身份信息;比較計算出的各個子數(shù)據(jù)塊的指紋值分別與各個子數(shù)據(jù)塊待寫 入的磁盤扇區(qū)相對應(yīng)的指紋值是否相同;當(dāng)比較結(jié)果相同時,不將該子數(shù)據(jù)寫入待寫入的 磁盤扇區(qū),返回寫入成功并結(jié)束本流程;當(dāng)比較結(jié)果不同時,將子數(shù)據(jù)塊寫入待寫入的磁盤 扇區(qū)中,并更新與該子數(shù)據(jù)塊的寫入磁盤扇區(qū)相對應(yīng)的指紋值為該子數(shù)據(jù)塊的指紋值。本 發(fā)明技術(shù)方案避免了重復(fù)數(shù)據(jù)的寫入,從而提升了數(shù)據(jù)的寫入速度,提高了磁盤的使用壽 命,從而達(dá)到對數(shù)據(jù)存取速度、可用性、可靠性和安全性的提高。
【專利附圖】
【附圖說明】
[0027] 此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā) 明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0028] 圖1為本發(fā)明管理磁盤數(shù)據(jù)寫入的方法的流程圖;
[0029] 圖2為本發(fā)明管理磁盤數(shù)據(jù)寫入的裝置的結(jié)構(gòu)示意圖;
[0030] 圖3為本發(fā)明管理磁盤數(shù)據(jù)寫入的方法的實(shí)施例的流程示意圖。
【具體實(shí)施方式】
[0031] 附圖用來提供對本發(fā)明技術(shù)方案的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本 申請的實(shí)施例一起用于解釋本發(fā)明的技術(shù)方案,并不構(gòu)成對本發(fā)明技術(shù)方案的限制。
[0032] 圖1為本發(fā)明管理磁盤數(shù)據(jù)寫入的方法的流程圖,如圖1所示,包括:
[0033] 步驟101,當(dāng)有數(shù)據(jù)寫入請求時,按照磁盤扇區(qū)的大小將數(shù)據(jù)寫入請求中的數(shù)據(jù)劃 分為η個子數(shù)據(jù)塊。
[0034] 其中,η與數(shù)據(jù)寫入請求中的數(shù)據(jù)的大小有關(guān),舉例說明,因?yàn)榇疟P扇區(qū)的大小是 固定的,當(dāng)數(shù)據(jù)寫入請求中的數(shù)據(jù)越大時,則η越大;當(dāng)數(shù)據(jù)寫入請求中的數(shù)據(jù)越小時,則η 越小。
[0035] 需要說明的是,每一種類型的磁盤扇區(qū)的大小是固定的,按照磁盤扇區(qū)的大小將 數(shù)據(jù)寫入請求中的數(shù)據(jù)劃分為η個子數(shù)據(jù)塊,使得劃分后的(η-1)個子數(shù)據(jù)塊的大小與磁 盤扇區(qū)的大小相等,必然會有一個子數(shù)據(jù)塊的大小可能等于磁盤扇區(qū)的大小,也可能小于 磁盤扇區(qū)的大小。另外,劃分后的各個子數(shù)據(jù)塊也可以稱之為子數(shù)據(jù)片,無論是稱為子數(shù)據(jù) 塊還是稱為子數(shù)據(jù)片并不用來限制本發(fā)明。
[0036] 其中,當(dāng)劃分后的多個子數(shù)據(jù)塊中某個子數(shù)據(jù)塊的大小小于磁盤扇區(qū)大小時,則 在該子數(shù)據(jù)塊的尾部加零填充,直至該子數(shù)據(jù)的大小等于磁盤扇區(qū)大小。
[0037] 在步驟101之前,該方法還包括:獲取各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊,計算各個 磁盤扇區(qū)已存放的子數(shù)據(jù)塊的指紋值。具體包括:根據(jù)獲得的各個磁盤扇區(qū)已存放的子數(shù) 據(jù)塊的身份信息,采用MD5算法或者其它算法計算出各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊的指 紋值。其中,子數(shù)據(jù)塊的身份信息包括:該子數(shù)據(jù)塊的大小和該子數(shù)據(jù)塊存放的磁盤扇區(qū)索 引和該子數(shù)據(jù)塊的二進(jìn)制值。
[0038] 以及,
[0039] 根據(jù)計算得到的各個扇區(qū)已存放的子數(shù)據(jù)塊的指紋值,設(shè)置各個磁盤扇區(qū)的索引 與各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊的指紋值的對應(yīng)關(guān)系。
[0040] 其中,當(dāng)磁盤扇區(qū)上沒有存儲子數(shù)據(jù)塊時,此時該磁盤扇區(qū)扇區(qū)的指紋值為空。
[0041] 需要說明的是,在獲取各個子數(shù)據(jù)塊后,由于各個子數(shù)據(jù)塊必然有各自的身份信 息,所以一旦獲取了各個子數(shù)據(jù)塊必然會獲得各個子數(shù)據(jù)塊的身份信息。關(guān)于如何通過各 個子數(shù)據(jù)塊獲取各自的身份信息,屬于本領(lǐng)域技術(shù)人員所熟知的慣用技術(shù)手段,在此不再 贅述。
[0042] 需要說明的是,本發(fā)明方法中的指紋值是用來標(biāo)識子數(shù)據(jù)塊的身份信息。比如可 以采用MD5算法等現(xiàn)有方法計算各個扇區(qū)存放的子數(shù)據(jù)塊的指紋值,如何計算指紋值的具 體實(shí)現(xiàn)是本領(lǐng)域技術(shù)人員容易實(shí)現(xiàn)的,并不用于限定本發(fā)明的保護(hù)范圍,本發(fā)明方法強(qiáng)調(diào) 的是,生成的指紋值必須滿足以下條件:相同內(nèi)容的數(shù)據(jù)塊計算后生成的指紋值是一樣的, 不同內(nèi)容的數(shù)據(jù)塊計算后生成的指紋值是不一樣的,也就是說每個數(shù)據(jù)塊經(jīng)過計算得到的 指紋值是唯一的,每個指紋值所對應(yīng)的數(shù)據(jù)塊也是唯一的。舉例來看,MD5算法以512位分 組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經(jīng)過了一系列的處理后, 算法的輸出由四個32位分組組成,將這四個32位分組級聯(lián)后將生成一個128位散列值,本 發(fā)明中各個子數(shù)據(jù)塊的指紋值即可以采用MD5算法將各個子數(shù)據(jù)塊生成一個唯一的128位 散列值來表不。
[0043] 可以將設(shè)置的存儲磁盤上各個扇區(qū)的索引(編號)與各個扇區(qū)存放的子數(shù)據(jù)塊的 指紋值的對應(yīng)關(guān)系存放在數(shù)組中或者存放在一個表格中。如若存放在數(shù)組中,則數(shù)組的下 標(biāo)為子數(shù)據(jù)塊所在磁盤上的扇區(qū)的索引(編號),數(shù)組存儲的值為該扇區(qū)上存儲的子數(shù)據(jù) 塊的指紋值。如若存放在表格中,則表格的某一列值為子數(shù)據(jù)塊所在磁盤上的扇區(qū)的索引 (編號),另一列值為該扇區(qū)上存儲的子數(shù)據(jù)塊的指紋值,兩列值一一對應(yīng)。找到扇區(qū)的索 引(編號)即可根據(jù)索引(編號)獲得該扇區(qū)上存放的子數(shù)據(jù)塊的指紋值。
[0044] 步驟102,計算劃分后的各個子數(shù)據(jù)塊的指紋值;其中,指紋值用來標(biāo)識子數(shù)據(jù)塊 的身份信息。
[0045] 其中,計算劃分后的各個子數(shù)據(jù)塊的指紋值包括:
[0046] 獲取劃分后的各個子數(shù)據(jù)塊;
[0047] 根據(jù)獲得的各個子數(shù)據(jù)塊的身份信息,采用MD5算法或者其它算法計算出劃分后 的各個子數(shù)據(jù)塊的指紋值。其中,子數(shù)據(jù)塊的身份信息包括:該子數(shù)據(jù)塊的大小和待寫入的 磁盤扇區(qū)索引和該子數(shù)據(jù)塊的二進(jìn)制值。
[0048] 本步驟中,可以采用MD5算法計算劃分后的各個子數(shù)據(jù)塊的指紋值,也可以用其 它的算法計算劃分后的各個子數(shù)據(jù)塊的指紋值,本發(fā)明的方法對采用何種計算指紋值的算 法不做限定,但對所要達(dá)到的目的進(jìn)行限定,即最后生成的指紋值必須滿足以下條件:相同 內(nèi)容的子數(shù)據(jù)塊計算后生成的指紋值是一樣的,不同內(nèi)容的子數(shù)據(jù)塊計算后生成的指紋值 是不一樣的,也就是說每個子數(shù)據(jù)塊經(jīng)過計算得到的指紋值是唯一的,每個指紋值所對應(yīng) 的子數(shù)據(jù)塊也是唯一的。關(guān)于如何計算(獲取)各個子數(shù)據(jù)塊的指紋值并不用于限制本發(fā) 明的保護(hù)范圍。
[0049] 步驟103,比較計算出的各個子數(shù)據(jù)塊的指紋值分別與各個子數(shù)據(jù)塊待寫入的磁 盤扇區(qū)相對應(yīng)的指紋值是否相同。
[0050] 需要說明的是,在對數(shù)據(jù)進(jìn)行劃分之后,系統(tǒng)便會自動為劃分后的各個子數(shù)據(jù)塊 指定存放的扇區(qū),即待寫入扇區(qū),此屬于本領(lǐng)域技術(shù)人員所熟知的慣用技術(shù)手段,在此不再 贅述。
[0051] 步驟104,當(dāng)比較結(jié)果相同時,不將該子數(shù)據(jù)寫入待寫入的磁盤扇區(qū),返回寫入成 功并結(jié)束本流程;當(dāng)比較結(jié)果不同時,將子數(shù)據(jù)塊寫入待寫入的磁盤扇區(qū)中,并更新與該子 數(shù)據(jù)塊的寫入磁盤扇區(qū)相對應(yīng)的指紋值為該子數(shù)據(jù)塊的指紋值。
[0052] 需要說明的是,當(dāng)將子數(shù)據(jù)塊寫入待寫入的磁盤扇區(qū)中,此時則稱待寫入的磁盤 扇區(qū)為寫入磁盤扇區(qū);當(dāng)比較結(jié)果不同時,將子數(shù)據(jù)塊寫入待寫入的磁盤扇區(qū)中覆蓋掉該 待寫磁盤扇區(qū)已存放的數(shù)據(jù)。
[0053] 本步驟中,當(dāng)需要更新指紋值時,根據(jù)子數(shù)據(jù)塊所在扇區(qū)的索引(編號),更改扇 區(qū)所對應(yīng)的指紋值為寫入該扇區(qū)的子數(shù)據(jù)塊的指紋值。
[0054] 當(dāng)將設(shè)置的存儲磁盤上各個扇區(qū)的索引(編號)與各個扇區(qū)存放的子數(shù)據(jù)塊的指 紋值的對應(yīng)關(guān)系存放在數(shù)組中時,根據(jù)子數(shù)據(jù)塊所在扇區(qū)的索引(編號)找到該數(shù)組中下 標(biāo)與子數(shù)據(jù)塊所在扇區(qū)的索引(編號)對應(yīng)的指紋值,將該指紋值更新為寫入該扇區(qū)的子 數(shù)據(jù)塊的指紋值;如若存放在表格中,根據(jù)子數(shù)據(jù)塊所在扇區(qū)的索引(編號)找到該表格中 對應(yīng)于該索引(編號)的指紋值,將該指紋值更新為寫入該扇區(qū)的子數(shù)據(jù)塊的指紋值。
[0055] 圖2為本發(fā)明管理磁盤數(shù)據(jù)寫入的裝置的結(jié)構(gòu)示意圖,如圖2所示,包括:數(shù)據(jù)劃 分模塊、指紋值計算模塊、比較模塊和處理模塊。其中,
[0056] 數(shù)據(jù)劃分模塊,用于當(dāng)有數(shù)據(jù)寫入請求時,按照磁盤扇區(qū)的大小將數(shù)據(jù)寫入請求 中的數(shù)據(jù)劃分為η個子數(shù)據(jù)塊。
[0057] 其中,η與數(shù)據(jù)寫入請求中的數(shù)據(jù)的大小有關(guān),舉例說明,因?yàn)榇疟P扇區(qū)的大小是 固定的,當(dāng)數(shù)據(jù)寫入請求中的數(shù)據(jù)越大時,則η越大;當(dāng)數(shù)據(jù)寫入請求中的數(shù)據(jù)越小時,則η 越小。
[0058] 進(jìn)一步地,數(shù)據(jù)劃分模塊還用于:當(dāng)劃分后的各個個子數(shù)據(jù)塊中某個子數(shù)據(jù)塊的 大小小于磁盤扇區(qū)大小時,則在該子數(shù)據(jù)塊的尾部加零填充,直至該子數(shù)據(jù)的大小等于磁 盤扇區(qū)大小。
[0059] 指紋值計算模塊,用于計算劃分后的各個子數(shù)據(jù)塊的指紋值;其中,指紋值用來標(biāo) 識子數(shù)據(jù)塊的身份信息。
[0060] 需要說明的是,本發(fā)明中的指紋值是用來標(biāo)識子數(shù)據(jù)塊的身份信息。比如可以采 用MD5算法等現(xiàn)有方法計算各個扇區(qū)存放的子數(shù)據(jù)塊的指紋值,如何計算指紋值的具體實(shí) 現(xiàn)是本領(lǐng)域技術(shù)人員容易實(shí)現(xiàn)的,并不用于限定本發(fā)明的保護(hù)范圍,本發(fā)明方法強(qiáng)調(diào)的是, 生成的指紋值必須滿足以下條件:相同內(nèi)容的數(shù)據(jù)塊計算后生成的指紋值是一樣的,不同 內(nèi)容的數(shù)據(jù)塊計算后生成的指紋值是不一樣的,也就是說每個數(shù)據(jù)塊經(jīng)過計算得到的指紋 值是唯一的,每個指紋值所對應(yīng)的數(shù)據(jù)塊也是唯一的。舉例來看,MD5算法以512位分組來 處理輸入的信息,且每一分組又被劃分為16個32位子分組,經(jīng)過了一系列的處理后,算法 的輸出由四個32位分組組成,將這四個32位分組級聯(lián)后將生成一個128位散列值,本發(fā)明 中各個子數(shù)據(jù)塊的指紋值即可以采用MD5算法將各個子數(shù)據(jù)塊生成一個唯一的128位散列 值來表示。
[0061] 進(jìn)一步地,指紋計算模塊具體用于:
[0062] 獲取劃分后的各個子數(shù)據(jù)塊;
[0063] 根據(jù)獲得的各個子數(shù)據(jù)塊的身份信息,采用MD5算法或者其它算法計算出劃分后 的各個子數(shù)據(jù)塊的指紋值。其中,子數(shù)據(jù)塊的身份信息包括:該子數(shù)據(jù)塊的大小和待寫入的 磁盤扇區(qū)索引和該子數(shù)據(jù)塊的二進(jìn)制值。
[0064] 比較模塊,用于比較計算出的各個子數(shù)據(jù)塊的指紋值分別與各個子數(shù)據(jù)塊待寫入 的磁盤扇區(qū)相對應(yīng)的指紋值是否相同。
[0065] 處理模塊,用于當(dāng)比較模塊的比較結(jié)果相同時,不將該子數(shù)據(jù)寫入待寫入的磁盤 扇區(qū),返回寫入成功并結(jié)束本流程;當(dāng)比較模塊的比較結(jié)果不同時,將子數(shù)據(jù)塊寫入待寫入 的磁盤扇區(qū)中,并更新與該子數(shù)據(jù)塊的寫入磁盤扇區(qū)相對應(yīng)的指紋值為該子數(shù)據(jù)塊的指紋 值。
[0066] 進(jìn)一步地,該裝置還包括配置模塊,用于:設(shè)置各個磁盤扇區(qū)的索引與各個磁盤扇 區(qū)已存放的子數(shù)據(jù)塊的指紋值的對應(yīng)關(guān)系。
[0067] 進(jìn)一步地,該裝置還包括獲取模塊,用于在配置模塊設(shè)置各個磁盤扇區(qū)的索引與 各個磁盤扇區(qū)已存放的數(shù)據(jù)的指紋值的對應(yīng)關(guān)系之前,獲取各個磁盤扇區(qū)已存放的子數(shù)據(jù) 塊,計算各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊的指紋值。
[0068] 其中,獲取模塊,具體用于:根據(jù)獲得的各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊的身份信 息,采用MD5算法或者其它算法計算出各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊的指紋值。其中,子 數(shù)據(jù)塊的身份信息包括:該子數(shù)據(jù)塊的大小和該子數(shù)據(jù)塊存放的磁盤扇區(qū)索引和該子數(shù)據(jù) 塊的二進(jìn)制值。
[0069] 其中,當(dāng)磁盤扇區(qū)上沒有存儲子數(shù)據(jù)塊時,此時該磁盤扇區(qū)扇區(qū)的指紋值為空。
[0070] 圖3為本發(fā)明管理磁盤數(shù)據(jù)寫入的方法的實(shí)施例的流程示意圖,如圖3所示,包括 以下步驟:
[0071] 步驟300,獲取各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊,計算各個磁盤扇區(qū)已存放的子數(shù) 據(jù)塊的指紋值;設(shè)置各個磁盤扇區(qū)的索引與各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊的指紋值的對 應(yīng)關(guān)系。當(dāng)系統(tǒng)接收到數(shù)據(jù)請求時,轉(zhuǎn)入步驟301。
[0072] 其中,計算各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊的指紋值,具體包括:根據(jù)獲得的各個 磁盤扇區(qū)已存放的子數(shù)據(jù)塊的身份信息,采用MD5算法或者其它算法計算出各個磁盤扇區(qū) 已存放的子數(shù)據(jù)塊的指紋值。其中,子數(shù)據(jù)塊的身份信息包括:該子數(shù)據(jù)塊的大小和該子數(shù) 據(jù)塊存放的磁盤扇區(qū)索引和該子數(shù)據(jù)塊的二進(jìn)制值。
[0073] 其中,當(dāng)磁盤扇區(qū)上沒有存儲子數(shù)據(jù)塊時,此時該磁盤扇區(qū)扇區(qū)的指紋值為空。
[0074] 本步驟中,可以將設(shè)置的存儲磁盤上各個扇區(qū)的索引(編號)與各個扇區(qū)存放的 子數(shù)據(jù)塊的指紋值的對應(yīng)關(guān)系存放在數(shù)組中或者存放在一個表格中。如若存放在數(shù)組中, 則數(shù)組的下標(biāo)為子數(shù)據(jù)塊所在磁盤上的扇區(qū)的索引(編號),數(shù)組存儲的值為該扇區(qū)上存 儲的子數(shù)據(jù)塊的指紋值。如若存放在表格中,則表格的某一列值為子數(shù)據(jù)塊所在磁盤上的 扇區(qū)的索引(編號),另一列值為該扇區(qū)上存儲的子數(shù)據(jù)塊的指紋值,兩列值一一對應(yīng)。找 到扇區(qū)的索引(編號)即可根據(jù)索引(編號)獲得該扇區(qū)上存放的子數(shù)據(jù)塊的指紋值。
[0075] 步驟301,判斷數(shù)據(jù)請求屬性,當(dāng)數(shù)據(jù)請求屬性顯示為數(shù)據(jù)寫入請求時,進(jìn)入步驟 302 ;當(dāng)判斷數(shù)據(jù)請求屬性顯示為數(shù)據(jù)讀取請求時,結(jié)束本流程。
[0076] 本步驟中,關(guān)于如何判斷數(shù)據(jù)請求屬性,屬于本領(lǐng)域技術(shù)人員所熟知的慣用技術(shù) 手段,并不用來限制本發(fā)明的方法,在此不再贅述。
[0077] 步驟302,按照磁盤扇區(qū)的大小將數(shù)據(jù)寫入請求中的數(shù)據(jù)劃分為η個子數(shù)據(jù)塊。
[0078] 其中,η與數(shù)據(jù)寫入請求中的數(shù)據(jù)的大小有關(guān)。
[0079] 本步驟中,每一種類型的磁盤扇區(qū)的大小是固定的,按照磁盤扇區(qū)的大小將數(shù)據(jù) 寫入請求中的數(shù)據(jù)劃分為η個子數(shù)據(jù)塊,使得劃分后的(η-1)個子數(shù)據(jù)塊的大小與磁盤扇 區(qū)的大小相等,必然會有一個子數(shù)據(jù)塊的大小可能等于磁盤扇區(qū)的大小,也可能小于磁盤 扇區(qū)的大小。
[0080] 其中,當(dāng)劃分后的多個子數(shù)據(jù)塊中某個子數(shù)據(jù)塊的大小小于磁盤扇區(qū)大小時,則 在該子數(shù)據(jù)塊的尾部加零填充,直至該子數(shù)據(jù)的大小等于磁盤扇區(qū)大小。
[0081] 需要說明的是,數(shù)據(jù)寫入請求中的數(shù)據(jù)越大,η的值也越大;數(shù)據(jù)寫入請求中的數(shù) 據(jù)越小,η的值也越小。關(guān)于如何按照磁盤扇區(qū)的大小將數(shù)據(jù)劃分為η個子數(shù)據(jù)塊屬于本 領(lǐng)域的慣用技術(shù)手段,在此不再贅述。
[0082] 步驟303,計算劃分后的各個子數(shù)據(jù)塊的指紋值。其中,指紋值用來標(biāo)識子數(shù)據(jù)塊 的身份信息。
[0083] 其中,計算劃分后的各個子數(shù)據(jù)塊的指紋值包括:
[0084] 獲取劃分后的各個子數(shù)據(jù)塊;
[0085] 根據(jù)獲得的各個子數(shù)據(jù)塊的身份信息,采用MD5算法或者其它算法計算出劃分后 的各個子數(shù)據(jù)塊的指紋值。其中,子數(shù)據(jù)塊的身份信息包括:該子數(shù)據(jù)塊的大小和待寫入的 磁盤扇區(qū)索引和該子數(shù)據(jù)塊的二進(jìn)制值。
[0086] 需要說明的是,本發(fā)明方法中的指紋值是用來標(biāo)識子數(shù)據(jù)塊的身份信息。比如可 以采用MD5算法等現(xiàn)有方法計算各個扇區(qū)存放的子數(shù)據(jù)塊的指紋值,如何計算指紋值的具 體實(shí)現(xiàn)是本領(lǐng)域技術(shù)人員容易實(shí)現(xiàn)的,并不用于限定本發(fā)明的保護(hù)范圍,本發(fā)明方法強(qiáng)調(diào) 的是,生成的指紋值必須滿足以下條件:相同內(nèi)容的數(shù)據(jù)塊計算后生成的指紋值是一樣的, 不同內(nèi)容的數(shù)據(jù)塊計算后生成的指紋值是不一樣的,也就是說每個數(shù)據(jù)塊經(jīng)過計算得到的 指紋值是唯一的,每個指紋值所對應(yīng)的數(shù)據(jù)塊也是唯一的。舉例來看,MD5算法以512位分 組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經(jīng)過了一系列的處理后, 算法的輸出由四個32位分組組成,將這四個32位分組級聯(lián)后將生成一個128位散列值,本 發(fā)明中各個子數(shù)據(jù)塊的指紋值即可以采用MD5算法將各個子數(shù)據(jù)塊生成一個唯一的128位 散列值來表不。
[0087] 步驟304,比較計算出的各個子數(shù)據(jù)塊的指紋值分別與各個子數(shù)據(jù)塊待寫入的磁 盤扇區(qū)相對應(yīng)的指紋值是否相同。當(dāng)比較結(jié)果相同時,進(jìn)入步驟306,否則進(jìn)入步驟305。 [0088] 需要說明的是,在對數(shù)據(jù)進(jìn)行劃分之后,系統(tǒng)便會自動為各個子數(shù)據(jù)塊指定存放 的磁盤扇區(qū),即待寫入的磁盤扇區(qū)。
[0089] 步驟305,將子數(shù)據(jù)塊寫入待寫入的磁盤扇區(qū)中,并更新與該子數(shù)據(jù)塊的寫入的磁 盤扇區(qū)相對應(yīng)的指紋值為該子數(shù)據(jù)塊的指紋值。返回寫入成功并結(jié)束本流程。
[0090] 本步驟中,當(dāng)需要更新指紋值時,根據(jù)子數(shù)據(jù)塊所在扇區(qū)的索引(編號),更改扇 區(qū)所對應(yīng)的指紋值為寫入該扇區(qū)的子數(shù)據(jù)塊的指紋值。
[0091] 當(dāng)將設(shè)置的存儲磁盤上各個扇區(qū)的索引(編號)與各個扇區(qū)存放的子數(shù)據(jù)塊的指 紋值的對應(yīng)關(guān)系存放在數(shù)組中時,根據(jù)子數(shù)據(jù)塊所在扇區(qū)的索引(編號)找到該數(shù)組中下 標(biāo)與子數(shù)據(jù)塊所在扇區(qū)的索引(編號)對應(yīng)的指紋值,將該指紋值更新為寫入該扇區(qū)的子 數(shù)據(jù)塊的指紋值;如若存放在表格中,根據(jù)子數(shù)據(jù)塊所在扇區(qū)的索引(編號)找到該表格中 對應(yīng)于該索引(編號)的指紋值,將該指紋值更新為寫入該扇區(qū)的子數(shù)據(jù)塊的指紋值。
[0092] 步驟306,不將該子數(shù)據(jù)寫入待寫入的磁盤扇區(qū),返回寫入成功并結(jié)束本流程。
[0093] 本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令 相關(guān)硬件完成,所述程序可以存儲于計算機(jī)可讀存儲介質(zhì)中,如只讀存儲器、磁盤或光盤 等??蛇x地,上述實(shí)施例的全部或部分步驟也可以使用一個或多個集成電路來實(shí)現(xiàn)。相應(yīng) 地,上述實(shí)施例中的各模塊/單元可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的 形式實(shí)現(xiàn)。本申請不限制于任何特定形式的硬件和軟件的結(jié)合。
[0094] 雖然本發(fā)明所揭露的實(shí)施方式如上,但所述的內(nèi)容僅為便于理解本發(fā)明而采用的 實(shí)施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所揭 露的精神和范圍的前提下,可以在實(shí)施的形式及細(xì)節(jié)上進(jìn)行任何的修改與變化,但本發(fā)明 的專利保護(hù)范圍,仍須以所附的權(quán)利要求書所界定的范圍為準(zhǔn)。
【權(quán)利要求】
1. 一種管理磁盤數(shù)據(jù)寫入的方法,其特征在于,包括: 當(dāng)有數(shù)據(jù)寫入請求時,按照磁盤扇區(qū)的大小將數(shù)據(jù)寫入請求中的數(shù)據(jù)劃分為η個子數(shù) 據(jù)塊; 計算劃分后的各個子數(shù)據(jù)塊的指紋值;其中,指紋值用來標(biāo)識子數(shù)據(jù)塊的身份信息; 比較計算出的各個子數(shù)據(jù)塊的指紋值分別與各個子數(shù)據(jù)塊待寫入的磁盤扇區(qū)相對應(yīng) 的指紋值是否相同; 當(dāng)比較結(jié)果相同時,不將該子數(shù)據(jù)寫入待寫入的磁盤扇區(qū),返回寫入成功并結(jié)束本流 程;當(dāng)比較結(jié)果不同時,將子數(shù)據(jù)塊寫入待寫入的磁盤扇區(qū)中,并更新與該子數(shù)據(jù)塊的寫入 磁盤扇區(qū)相對應(yīng)的指紋值為該子數(shù)據(jù)塊的指紋值。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法之前還包括: 設(shè)置所述各個磁盤扇區(qū)的索引與各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊的指紋值的對應(yīng)關(guān) 系。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述設(shè)置對應(yīng)關(guān)系之前,該方法還包 括: 獲取所述各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊,計算各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊的指 紋值。
4. 根據(jù)權(quán)利要求1-3任意一項(xiàng)所述的方法,其特征在于,采用MD5算法計算各個子數(shù)據(jù) 塊的指紋值。
5. 根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述劃分后的各個子數(shù)據(jù)塊中某個子 數(shù)據(jù)塊的大小小于所述磁盤扇區(qū)大小時,該方法還包括: 在該子數(shù)據(jù)塊的尾部加零填充,直至該子數(shù)據(jù)的大小等于磁盤扇區(qū)大小。
6. -種管理磁盤數(shù)據(jù)寫入的裝置,其特征在于,包括數(shù)據(jù)劃分模塊、指紋值計算模塊、 比較模塊和處理模塊;其中, 數(shù)據(jù)劃分模塊,用于當(dāng)有數(shù)據(jù)寫入請求時,按照磁盤扇區(qū)的大小將數(shù)據(jù)寫入請求中的 數(shù)據(jù)劃分為η個子數(shù)據(jù)塊; 指紋值計算模塊,用于計算劃分后的各個子數(shù)據(jù)塊的指紋值;其中,指紋值用來標(biāo)識子 數(shù)據(jù)塊的身份信息; 比較模塊,用于比較計算出的各個子數(shù)據(jù)塊的指紋值分別與各個子數(shù)據(jù)塊待寫入的磁 盤扇區(qū)相對應(yīng)的指紋值是否相同; 處理模塊,用于當(dāng)比較模塊的比較結(jié)果相同時,不將該子數(shù)據(jù)寫入待寫入的磁盤扇區(qū), 返回寫入成功并結(jié)束本流程;當(dāng)比較模塊的比較結(jié)果不同時,將子數(shù)據(jù)塊寫入待寫入的磁 盤扇區(qū)中,并更新與該子數(shù)據(jù)塊的寫入磁盤扇區(qū)相對應(yīng)的指紋值為該子數(shù)據(jù)塊的指紋值。
7. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,該裝置還包括配置模塊,用于:設(shè)置所述 各個磁盤扇區(qū)的索引與各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊的指紋值的對應(yīng)關(guān)系。
8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,該裝置還包括獲取模塊,用于在所述各個 扇區(qū)的索引與各個扇區(qū)存放的數(shù)據(jù)的指紋值的對應(yīng)關(guān)系之前,獲取所述各個磁盤扇區(qū)已存 放的子數(shù)據(jù)塊,計算各個磁盤扇區(qū)已存放的子數(shù)據(jù)塊的指紋值。
9. 根據(jù)權(quán)利要求6-8任意一項(xiàng)所述的裝置,其特征在于,所述指紋值計算模塊,具體用 于:采用MD5算法計算各個子數(shù)據(jù)塊的指紋值。
10.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述數(shù)據(jù)劃分模塊,還用于:當(dāng)所述劃分 后的各個子數(shù)據(jù)塊中某個子數(shù)據(jù)塊的大小小于所述磁盤扇區(qū)大小時,則在該子數(shù)據(jù)塊的尾 部加零填充,直至該子數(shù)據(jù)的大小等于磁盤扇區(qū)大小。
【文檔編號】G06F3/06GK104216666SQ201410445968
【公開日】2014年12月17日 申請日期:2014年9月3日 優(yōu)先權(quán)日:2014年9月3日
【發(fā)明者】殷雷孫, 承碧 申請人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司