亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種去重方法裝置與系統(tǒng)的制作方法

文檔序號(hào):6532524閱讀:184來(lái)源:國(guó)知局
一種去重方法裝置與系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明提供了一種數(shù)據(jù)處理技術(shù),用于數(shù)據(jù)去重,對(duì)多個(gè)數(shù)據(jù)塊進(jìn)行指紋檢測(cè),當(dāng)多個(gè)數(shù)據(jù)塊的指紋相同時(shí),進(jìn)一步檢測(cè)數(shù)據(jù)塊所在分條組的穩(wěn)定性,保留穩(wěn)定性高的數(shù)據(jù)塊,或者當(dāng)數(shù)據(jù)塊所在分條組可靠性不高時(shí),對(duì)數(shù)據(jù)塊所在分條組進(jìn)行數(shù)據(jù)恢復(fù)。本發(fā)明可以提高數(shù)據(jù)塊所在分條組的可靠性,提升數(shù)據(jù)安全。
【專(zhuān)利說(shuō)明】一種去重方法裝置與系統(tǒng)

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及存儲(chǔ)領(lǐng)域,特別涉及一種去重技術(shù)。

【背景技術(shù)】
[0002]在存儲(chǔ)領(lǐng)域中,為了節(jié)約存儲(chǔ)空間,去重(De-duplicate)是一種經(jīng)常被使用到的技術(shù),其做法是如果需要對(duì)多份相同的數(shù)據(jù)進(jìn)行存儲(chǔ)時(shí),只存儲(chǔ)其中的一份,其余與這份數(shù)據(jù)重復(fù)的數(shù)據(jù)不再存儲(chǔ)。也就是說(shuō)重復(fù)的數(shù)據(jù)被刪除,因此這種技術(shù)也稱為重復(fù)數(shù)據(jù)刪除。
[0003]在粒度的選擇上,可以把文件拆分成數(shù)據(jù)塊,以數(shù)據(jù)塊作為去重的基本單位。在以數(shù)據(jù)塊作為去重的基本單位時(shí),可以為每個(gè)數(shù)據(jù)塊賦予指紋,指紋和數(shù)據(jù)塊的內(nèi)容強(qiáng)相關(guān)。當(dāng)兩個(gè)數(shù)據(jù)塊的指紋相同時(shí),我們可以得出這兩個(gè)數(shù)據(jù)塊的內(nèi)容相同的結(jié)論,通過(guò)執(zhí)行去重操作,只存儲(chǔ)其中一個(gè)數(shù)據(jù)塊到存儲(chǔ)系統(tǒng)中,另外一個(gè)數(shù)據(jù)塊不存儲(chǔ)。
[0004]然而,去重技術(shù)也帶來(lái)了數(shù)據(jù)安全性降低的問(wèn)題,如果這僅有的一份數(shù)據(jù)因?yàn)榇鎯?chǔ)系統(tǒng)故障而損壞,可能造成數(shù)據(jù)的安全性大大降低或者數(shù)據(jù)永久性丟失。


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

[0005]本發(fā)明可以提高數(shù)據(jù)安全性。
[0006]第一方面,本發(fā)明提供一種數(shù)據(jù)處理方法,用于控制器中,該方法包括:當(dāng)有多個(gè)數(shù)據(jù)塊有相同的指紋時(shí),根據(jù)所述指紋查詢所述數(shù)據(jù)塊的地址,根據(jù)所述數(shù)據(jù)塊地址查找所述數(shù)據(jù)塊所占用的分條組;校驗(yàn)所述數(shù)據(jù)塊的所述分條組的獨(dú)立廉價(jià)磁盤(pán)冗余陣列RAID分條狀態(tài),根據(jù)校驗(yàn)結(jié)果保存分條一致的分條組中的數(shù)據(jù)塊;所述根據(jù)校驗(yàn)結(jié)果保存分條一致的分條組中的數(shù)據(jù)塊,包括下述至少一種:如果存在分條一致的所述分條組,并且存在非分條一致的所述分條組,則保留分條一致的所述分條組中的數(shù)據(jù)塊,刪除其余所述分條組中的數(shù)據(jù)塊;如果不存在分條一致的所述分條組,并且存在降級(jí)的分條組,則通過(guò)RAID算法修復(fù)將降級(jí)的分條組修復(fù)為分條一致的分條組,所述分條一致的分條組中存儲(chǔ)有所述數(shù)據(jù)塊,刪除其余所述分條組中的所述數(shù)據(jù)塊。
[0007]第二方面,本發(fā)明提供一種數(shù)據(jù)塊處理裝置,該裝置包括:指紋比對(duì)模塊,用于對(duì)存儲(chǔ)設(shè)備中數(shù)據(jù)塊的指紋進(jìn)行比對(duì);地址查找模塊,當(dāng)所述存儲(chǔ)設(shè)備中有多個(gè)數(shù)據(jù)塊有相同的指紋時(shí),根據(jù)所述指紋查詢所述多個(gè)數(shù)據(jù)塊的地址,根據(jù)所述多個(gè)數(shù)據(jù)塊地址查找所述多個(gè)數(shù)據(jù)塊所占用的分條組;一致性校驗(yàn)?zāi)K,用于校驗(yàn)所述多個(gè)數(shù)據(jù)塊的所述分條組的獨(dú)立廉價(jià)磁盤(pán)冗余陣列RAID分條狀態(tài),根據(jù)校驗(yàn)結(jié)果保存分條一致的分條組中的數(shù)據(jù)塊;所述根據(jù)校驗(yàn)結(jié)果保存分條一致的分條組中的數(shù)據(jù)塊,包括下述至少一種:如果存在分條一致的所述分條組,并且存在非分條一致的所述分條組,則保留分條一致的所述分條組中的數(shù)據(jù)塊,刪除其余所述分條組中的數(shù)據(jù)塊;如果不存在分條一致的所述分條組,并且存在降級(jí)的分條組,則通過(guò)RAID算法修復(fù)將降級(jí)的分條組修復(fù)為分條一致的分條組,所述分條一致的分條組中存儲(chǔ)有所述數(shù)據(jù)塊,刪除其余所述分條組中的所述數(shù)據(jù)塊。
[0008]第三方面,本發(fā)明提供一種數(shù)據(jù)塊處理方法,用于控制器中,該方法包括:查詢存儲(chǔ)設(shè)備中數(shù)據(jù)塊的指紋庫(kù),當(dāng)存儲(chǔ)設(shè)備中存在和所述待存儲(chǔ)數(shù)據(jù)塊擁有相同指紋的已存儲(chǔ)數(shù)據(jù)塊時(shí),檢測(cè)所述已存儲(chǔ)數(shù)據(jù)塊所在分條組的獨(dú)立廉價(jià)磁盤(pán)冗余陣列RAID分條狀態(tài);根據(jù)檢測(cè)進(jìn)行數(shù)據(jù)塊存儲(chǔ),包括:如果所述分條組的分條狀態(tài)是分條一致,則不存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊;如果所述分條組的分條狀態(tài)是分條降級(jí),則:存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊,刪除所述已存儲(chǔ)數(shù)據(jù)塊;或者,存儲(chǔ)根據(jù)RAID算法由所述降級(jí)分條組對(duì)所述已存儲(chǔ)數(shù)據(jù)塊進(jìn)行修復(fù);或者,如果所述分條組的分條狀態(tài)是分條不一致,則:存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊,刪除所述已存儲(chǔ)數(shù)據(jù)塊;或者,如果數(shù)據(jù)分條單元未發(fā)生數(shù)據(jù)錯(cuò)誤,則根據(jù)RAID算法對(duì)所述已存儲(chǔ)數(shù)據(jù)塊進(jìn)行修復(fù)。
[0009]第四方面,本發(fā)明提供一種數(shù)據(jù)塊處理裝置,該裝置包括:查詢模塊61,用于查詢存儲(chǔ)設(shè)備中數(shù)據(jù)塊的指紋庫(kù);一致性校驗(yàn)?zāi)K62,用于當(dāng)存儲(chǔ)設(shè)備中存在和所述待存儲(chǔ)數(shù)據(jù)塊擁有相同指紋的已存儲(chǔ)數(shù)據(jù)塊時(shí),檢測(cè)所述已存儲(chǔ)數(shù)據(jù)塊所在分條組的獨(dú)立廉價(jià)磁盤(pán)冗余陣列RAID分條狀態(tài);根據(jù)檢測(cè)進(jìn)行數(shù)據(jù)塊存儲(chǔ),包括:如果所述分條組的分條狀態(tài)是分條一致,則不存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊;如果所述分條組的分條狀態(tài)是分條降級(jí),則:存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊,刪除所述已存儲(chǔ)數(shù)據(jù)塊;或者,存儲(chǔ)根據(jù)RAID算法由所述降級(jí)分條組對(duì)所述已存儲(chǔ)數(shù)據(jù)塊進(jìn)行修復(fù);或者,如果所述分條組的分條狀態(tài)是分條不一致,則:存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊,刪除所述已存儲(chǔ)數(shù)據(jù)塊;或者,如果數(shù)據(jù)分條單元未發(fā)生數(shù)據(jù)錯(cuò)誤,則根據(jù)RAID算法對(duì)所述已存儲(chǔ)數(shù)據(jù)塊進(jìn)行修復(fù)。
[0010]本發(fā)明方案,可以在數(shù)據(jù)塊去重時(shí),同時(shí)對(duì)數(shù)據(jù)塊所在分條組進(jìn)行穩(wěn)定性檢測(cè),當(dāng)穩(wěn)定性不足時(shí)通過(guò)重新存儲(chǔ)或者修復(fù)的方式,提高數(shù)據(jù)塊所在分條組穩(wěn)定性,從而提高了數(shù)據(jù)安全性。

【專(zhuān)利附圖】

【附圖說(shuō)明】
[0011]為了更清楚地說(shuō)明本發(fā)明實(shí)施例技術(shù)方案,下面將對(duì)實(shí)施例所需要使用的附圖作簡(jiǎn)單地介紹,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,還可以根據(jù)這些附圖獲得其他的附圖。
[0012]圖1是本發(fā)明應(yīng)用場(chǎng)景拓?fù)鋱D例;
[0013]圖2是本發(fā)明實(shí)施例一種數(shù)據(jù)塊處理方法流程圖;
[0014]圖3是本發(fā)明實(shí)施例一種數(shù)據(jù)塊處理方法流程圖;
[0015]圖4是一種數(shù)據(jù)塊處理裝置實(shí)施例示意圖;
[0016]圖5是一種數(shù)據(jù)塊處理裝置實(shí)施例示意圖。

【具體實(shí)施方式】
[0017]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0018]存儲(chǔ)系統(tǒng)通常由控制器和存儲(chǔ)設(shè)備共同組成??刂破飨喈?dāng)于一臺(tái)電
[0019]腦,包括處理器和內(nèi)存,可以對(duì)存儲(chǔ)設(shè)備進(jìn)行管理,并提供接口給主機(jī)及存儲(chǔ)設(shè)備。存儲(chǔ)設(shè)備提供物理上的存儲(chǔ)空間,存儲(chǔ)設(shè)備例如可以由固態(tài)硬盤(pán)(Solid StateDisc, SSD),串行連接小型計(jì)算機(jī)系統(tǒng)接口 SCSI (Serial Attached SCSI,SAS)盤(pán)組成。寫(xiě)數(shù)據(jù)時(shí),主機(jī)的寫(xiě)數(shù)據(jù)請(qǐng)求先發(fā)往控制器,然后由控制器為這個(gè)寫(xiě)請(qǐng)求分配存儲(chǔ)設(shè)備中的存儲(chǔ)空間,并將寫(xiě)請(qǐng)求中攜帶的待寫(xiě)數(shù)據(jù)發(fā)往存儲(chǔ)設(shè)備進(jìn)行存儲(chǔ)。讀數(shù)據(jù)時(shí),數(shù)據(jù)從存儲(chǔ)設(shè)備讀入控制器,然后由控制器發(fā)給主機(jī)??刂破骱痛鎯?chǔ)設(shè)備可以是物理上獨(dú)立的設(shè)備,也可以把存儲(chǔ)設(shè)備集成在控制器中。當(dāng)把存儲(chǔ)設(shè)備集成在控制器中,控制器與存儲(chǔ)設(shè)備之間的數(shù)據(jù)交互成為控制器內(nèi)部的數(shù)據(jù)交互,此時(shí)也可以把控制器稱為存儲(chǔ)服務(wù)器。
[0020]在另外一種拓?fù)浣Y(jié)構(gòu)中,控制器提供管理不提供數(shù)據(jù)的傳遞,存儲(chǔ)設(shè)備與主機(jī)之間數(shù)據(jù)交換可以不經(jīng)過(guò)控制器,也可以適用本發(fā)明實(shí)施例提供的計(jì)算方案。
[0021]去重技術(shù)可以分為在線(On-line)和離線(Off-line)兩種方式。在線方式對(duì)存儲(chǔ)設(shè)備的空間利用率更高;離線方式數(shù)據(jù)寫(xiě)入速度更快。
[0022]在線方式,控制器收到一個(gè)寫(xiě)請(qǐng)求,寫(xiě)請(qǐng)求攜帶有新數(shù)據(jù)塊。在新數(shù)據(jù)塊被寫(xiě)入存儲(chǔ)設(shè)備前,控制器檢查存儲(chǔ)設(shè)備中是否已經(jīng)存在相同的數(shù)據(jù)塊,如果不存在,則存儲(chǔ)新數(shù)據(jù)塊到存儲(chǔ)設(shè)備;如果存在,則不再存儲(chǔ)這個(gè)新數(shù)據(jù)塊,而建立擁有這個(gè)新數(shù)據(jù)塊的LUN和那個(gè)已經(jīng)存在的數(shù)據(jù)塊之間的索引關(guān)系。這個(gè)索引關(guān)系例如可以是指針,當(dāng)后續(xù)需要讀取這個(gè)新數(shù)據(jù)塊時(shí),可以通過(guò)指針讀取那個(gè)已經(jīng)存在的數(shù)據(jù)塊。
[0023]離線方式,在控制器收到一個(gè)寫(xiě)請(qǐng)求后,不論存儲(chǔ)設(shè)備是否已經(jīng)存儲(chǔ)有相同的數(shù)據(jù)塊,先把數(shù)據(jù)塊存儲(chǔ)到存儲(chǔ)設(shè)備中。然后周期性的執(zhí)行去重操作,或者待存儲(chǔ)設(shè)備空閑時(shí)執(zhí)行去重操作。去重操作過(guò)程中,重復(fù)的數(shù)據(jù)塊僅保留一份,釋放重復(fù)數(shù)據(jù)塊占用的存儲(chǔ)空間。把指向這些數(shù)據(jù)塊的LUN都指向保留的那一個(gè)數(shù)據(jù)塊。
[0024]由于重復(fù)數(shù)據(jù)僅保留一份,這僅有的一份數(shù)據(jù)的安全性就顯得尤為重要。存儲(chǔ)系統(tǒng)可以通過(guò)獨(dú)立廉價(jià)磁盤(pán)冗余陣列(Redundant Arrays of Independent Disks, RAID)來(lái)提高其數(shù)據(jù)安全性。然而RAID能提供的保障也是有限的,當(dāng)某個(gè)RAID的分條可靠性降低時(shí),會(huì)導(dǎo)致其中存儲(chǔ)的數(shù)據(jù)安全性降低。
[0025]在RAID技術(shù)中,分條(Stripe)由若干個(gè)分條單元(Stripe Unit, SU)組成,組成同一個(gè)分條的SU可以屬于不同的物理存儲(chǔ)器,分條又稱為條帶。屬于同一個(gè)分條的SU,可以擁有相同大小的存儲(chǔ)空間。為了管理方便,屬于同一個(gè)分條的SU,還可以有相同的偏移量,也就是說(shuō)它們位于不同存儲(chǔ)器的相同位置。例如對(duì)于RAID5或者RAID6,SU可以分為數(shù)據(jù)SU和校驗(yàn)SU,數(shù)據(jù)SU用于存儲(chǔ)業(yè)務(wù)數(shù)據(jù),校驗(yàn)SU用于存儲(chǔ)業(yè)務(wù)數(shù)據(jù)的校驗(yàn)數(shù)據(jù),校驗(yàn)SU也可以稱為冗余SU。整數(shù)個(gè)分條可以組成邏輯單元(Logic Unit,LU),LU可以作為面向主機(jī)的邏輯存儲(chǔ)單位,在慣例上,邏輯單元也稱為邏輯單元號(hào)(Logic Unit Number, LUN),本發(fā)明沿用這種慣例。
[0026]如圖1所示,是本發(fā)明應(yīng)用場(chǎng)景拓?fù)鋱D示例??刂破鱅和存儲(chǔ)設(shè)備2連接組成存儲(chǔ)系統(tǒng)??刂破鱅由處理11和緩存12組成,緩存12中存儲(chǔ)有計(jì)算機(jī)指令,處理器11運(yùn)行計(jì)算機(jī)指令,對(duì)存儲(chǔ)設(shè)備執(zhí)行相應(yīng)的操作即可完成本發(fā)明。存儲(chǔ)設(shè)備2由多個(gè)存儲(chǔ)器21組成,每個(gè)存儲(chǔ)器21提供I個(gè)分條單元SU組成一個(gè)分條211。數(shù)據(jù)存儲(chǔ)時(shí),主機(jī)把數(shù)據(jù)發(fā)給通過(guò)控制器1,控制器把數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備的分條中。一個(gè)數(shù)據(jù)塊占用整數(shù)個(gè)分條,控制器I可以以數(shù)據(jù)塊為粒度對(duì)數(shù)據(jù)進(jìn)行去重。
[0027]SU中的數(shù)據(jù)發(fā)生錯(cuò)誤或者丟失稱為SU故障。在一個(gè)分條中,當(dāng)其中一個(gè)SU發(fā)生故障時(shí),通過(guò)RAID算法,可以用未發(fā)生故障的SU中存儲(chǔ)的數(shù)據(jù)對(duì)故障SU中的數(shù)據(jù)進(jìn)行恢復(fù),這個(gè)恢復(fù)數(shù)據(jù)的過(guò)程,稱為分條的修復(fù)。有的RAID算法可以對(duì)單個(gè)SU故障進(jìn)行數(shù)據(jù)恢復(fù),有的RAID算法可以對(duì)更多數(shù)量的SU故障進(jìn)行數(shù)據(jù)恢復(fù)。能夠通過(guò)RAID算法恢復(fù)出的故障SU的數(shù)量,稱為這個(gè)分條允許故障的SU數(shù)量,例如RAID5允許一個(gè)SU故障,而RAID6允許2個(gè)SU故障。
[0028]分條的狀態(tài)包括:分條一致;分條降級(jí);分條不一致;分條失效。處于這四種狀態(tài)的分條的可靠性依次降低。
[0029]分條一致是正常狀態(tài),分條中的所有SU中的數(shù)據(jù)都正常,也就是說(shuō)每個(gè)SU都數(shù)據(jù)都可以讀出來(lái),而且通過(guò)數(shù)據(jù)SU的數(shù)據(jù)計(jì)算得到的校驗(yàn)數(shù)據(jù)和校驗(yàn)SU中的數(shù)據(jù)相同。分條不一致,是指分條的每個(gè)SU中的數(shù)據(jù)都可以讀出來(lái),但是根據(jù)數(shù)據(jù)SU中的數(shù)據(jù)計(jì)算得到的校驗(yàn)數(shù)據(jù)和校驗(yàn)SU中存儲(chǔ)的數(shù)據(jù)不同。分條不一致產(chǎn)生的原因可能是數(shù)據(jù)SU數(shù)據(jù)出錯(cuò),也可能是校驗(yàn)SU的數(shù)據(jù)出錯(cuò),或者既有數(shù)據(jù)SU數(shù)據(jù)出錯(cuò)又有校驗(yàn)SU數(shù)據(jù)出錯(cuò)。由于校驗(yàn)SU中存儲(chǔ)的是冗余數(shù)據(jù),因此當(dāng)僅校驗(yàn)SU的數(shù)據(jù)出錯(cuò),數(shù)據(jù)SU的數(shù)據(jù)沒(méi)有出錯(cuò)時(shí),不認(rèn)為數(shù)據(jù)發(fā)送丟失,可以通過(guò)數(shù)據(jù)SU的數(shù)據(jù)重新計(jì)算校驗(yàn)SU的數(shù)據(jù)。
[0030]分條降級(jí),是指分條中有故障SU,但可以借助分條中其余SU恢復(fù)故障SU中的數(shù)據(jù)。當(dāng)分條允許發(fā)生故障的SU不止一個(gè)時(shí),分條降級(jí)可以進(jìn)一步細(xì)分成多個(gè)等級(jí),故障的SU越多,可靠性越低。例如采用RAID6的分條,出現(xiàn)I個(gè)SU故障或者出現(xiàn)2個(gè)SU故障都稱為分條降級(jí),但出現(xiàn)2個(gè)分條故障時(shí),分條中數(shù)據(jù)的安全性比出現(xiàn)I個(gè)分條故障時(shí)更低。分條失效,是指分條中有SU出現(xiàn)了故障,而且不能通過(guò)分條的其余SU恢復(fù)出故障SU中的數(shù)據(jù),也就是說(shuō)分條中有部分?jǐn)?shù)據(jù)出現(xiàn)了永久性丟失。SU發(fā)生故障,是指SU的存儲(chǔ)空間出現(xiàn)邏輯或者物理上的錯(cuò)誤,導(dǎo)致SU中數(shù)據(jù)無(wú)法讀出或者無(wú)法完整讀出。
[0031]數(shù)據(jù)塊(Block)是去重的基本單元。一個(gè)數(shù)據(jù)塊會(huì)存儲(chǔ)到一個(gè)或者多個(gè)分條中,存儲(chǔ)同一個(gè)分條的數(shù)據(jù)塊稱為一個(gè)分條組。一個(gè)分條組包括一個(gè)分條或者多個(gè)分條。LUN的數(shù)據(jù)由LUN指向的數(shù)據(jù)組成。
[0032]本發(fā)明實(shí)施例在進(jìn)行去重的過(guò)程中,同時(shí)考慮數(shù)據(jù)塊所在的分條的可靠性等級(jí)。在離線去重時(shí),當(dāng)有多個(gè)相同數(shù)據(jù)塊時(shí),檢查各個(gè)數(shù)據(jù)塊所在的分條可靠性等級(jí),保留可靠性最高的分條中的數(shù)據(jù)塊,刪除其余分條中的數(shù)據(jù)塊。當(dāng)所有分條的分條狀態(tài)都不是分條一致,也就是每個(gè)分條都出現(xiàn)了一定程度的可靠性降低時(shí),可以把數(shù)據(jù)塊寫(xiě)入分條一致的分條中,刪除其余分條中的數(shù)據(jù)。
[0033]在線去重時(shí),如果存儲(chǔ)設(shè)備中已經(jīng)存儲(chǔ)有與待存儲(chǔ)數(shù)據(jù)塊相同的數(shù)據(jù)塊時(shí),檢測(cè)已存儲(chǔ)的數(shù)據(jù)塊所在的分條可靠性等級(jí),如果分條狀態(tài)不是分條一致,則把數(shù)據(jù)塊寫(xiě)入分條一致的分條中,刪除已存儲(chǔ)的數(shù)據(jù)塊。
[0034]數(shù)據(jù)塊占用多個(gè)分條時(shí),以可靠性最低的分條的可靠性等級(jí)作為整個(gè)分條組的可靠性等級(jí)。應(yīng)用本發(fā)明實(shí)施例提供的技術(shù),在去重過(guò)程中進(jìn)一步考慮數(shù)據(jù)塊所在分條的可靠性等級(jí),把數(shù)據(jù)塊存入可靠性更高的分條中。提高了數(shù)據(jù)塊的安全性。
[0035]如圖2所示,是一種數(shù)據(jù)塊處理方法流程圖,可以進(jìn)行離線重刪。方法包括以下步驟。
[0036]步驟31,控制器對(duì)存儲(chǔ)系統(tǒng)中數(shù)據(jù)塊的指紋進(jìn)行比對(duì)。
[0037]每個(gè)數(shù)據(jù)塊擁有一個(gè)指紋,例如可以用MD5,SHA128等算法對(duì)數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容進(jìn)行計(jì)算,把計(jì)算的結(jié)果作為數(shù)據(jù)塊的指紋。擁有相同指紋的數(shù)據(jù)塊是相同數(shù)據(jù)塊。存儲(chǔ)設(shè)備中數(shù)據(jù)塊的指紋存儲(chǔ)在控制器的指紋庫(kù)中。
[0038]步驟32,當(dāng)有多個(gè)數(shù)據(jù)塊有相同的指紋時(shí),根據(jù)所述指紋查詢擁有這個(gè)指紋的所有數(shù)據(jù)塊的地址,根據(jù)所述數(shù)據(jù)塊地址查找所述數(shù)據(jù)塊所占用的分條組。
[0039]當(dāng)找到多個(gè)擁有相同指紋的數(shù)據(jù)塊時(shí),可以保留其中一個(gè)數(shù)據(jù)塊,刪除其余數(shù)據(jù)塊,以減少對(duì)存儲(chǔ)設(shè)備存儲(chǔ)空間的占用??刂破鞔鎯?chǔ)有映射表,映射表中記錄有指紋和指紋代表的數(shù)據(jù)塊的存儲(chǔ)地址。控制器可以根據(jù)數(shù)據(jù)塊的地址,找到存儲(chǔ)這個(gè)數(shù)據(jù)塊的分條組。數(shù)據(jù)塊存儲(chǔ)在分條組中,數(shù)據(jù)塊和分條組一一對(duì)應(yīng)。數(shù)據(jù)塊地址可以表現(xiàn)為L(zhǎng)UN的偏移,可以被轉(zhuǎn)換成物理地址,數(shù)據(jù)塊所在分條組的位置信息可以是物理地址。
[0040]步驟33,校驗(yàn)所述數(shù)據(jù)塊的所述分條組的獨(dú)立廉價(jià)磁盤(pán)冗余陣列RAID分條狀態(tài),根據(jù)校驗(yàn)結(jié)果,保存分條一致的分條組中的數(shù)據(jù)塊。
[0041]所述根據(jù)校驗(yàn)結(jié)果保存分條一致的分條組中的數(shù)據(jù)塊,包括下述至少一種方案:如果已經(jīng)存在分條一致的所述分條組,并且存在非分條一致的所述分條組,則保留分條一致的所述分條組中的數(shù)據(jù)塊不變,刪除其余所述分條組中的數(shù)據(jù)塊;如果不存在分條一致的所述分條組,并且存在降級(jí)的分條組,則通過(guò)RAID算法修復(fù)降級(jí)的分條組,生成分條一致的分條組,刪除其余所述分條組中的數(shù)據(jù)塊。對(duì)每個(gè)分條組進(jìn)行分條狀態(tài)的校驗(yàn),分條組的狀態(tài)由分條組中可靠性最低的分條決定。
[0042]本發(fā)明實(shí)施例所說(shuō)的修復(fù),是指當(dāng)分條中有部分SU出現(xiàn)數(shù)據(jù)錯(cuò)誤或者SU故障時(shí),利用正常SU中的數(shù)據(jù)使用RAID校驗(yàn)算法,重新計(jì)算出故障SU或者數(shù)據(jù)出錯(cuò)的SU中的數(shù)據(jù),把正常SU中的數(shù)據(jù)以及重新計(jì)算出的數(shù)據(jù)新寫(xiě)入存儲(chǔ)設(shè)備的分條組中。修復(fù)后的分條組的分條狀態(tài)是分條一致,分條組中數(shù)據(jù)塊的安全性比分條降級(jí)、分條不一致更高。修復(fù)后的數(shù)據(jù)塊具體寫(xiě)入位置,可以重新分配分條組;在能夠滿足正常讀寫(xiě)的情況下,也可以寫(xiě)入原分條組,覆蓋原分條組中的數(shù)據(jù)。
[0043]本發(fā)明實(shí)施例提供的一種策略是:當(dāng)有任意分條組的分條狀態(tài)是分條一致時(shí),說(shuō)明這個(gè)分條中的數(shù)據(jù)塊是可靠的,其他分條組可以不再執(zhí)行分條狀態(tài)的校驗(yàn)直接刪除。
[0044]現(xiàn)有去重技術(shù)中,由于不執(zhí)行分條校驗(yàn),因此,如果既存在分條一致的所述分條組,又存在非分條一致的分條組。那么會(huì)隨機(jī)保留其中一個(gè)分條組中的數(shù)據(jù)塊。如果保留的是分條失效的分條組中的數(shù)據(jù)塊,而清空其他分條組,那么數(shù)據(jù)塊的內(nèi)容將無(wú)法被正常讀出,也就是說(shuō)去重操作造成了數(shù)據(jù)丟失。非分條一致的分條組包括除了分條一致外的其他狀態(tài),例如分條不一致、分條降級(jí)或分條失效。從統(tǒng)計(jì)結(jié)果來(lái)看,在多次去重操作中,現(xiàn)有技術(shù)會(huì)造成數(shù)據(jù)丟失或者數(shù)據(jù)安全性降低。而本發(fā)明實(shí)施例相較于現(xiàn)有技術(shù)可以提高數(shù)據(jù)可靠性。
[0045]本發(fā)明實(shí)施例還提供另外一種策略:如果不存在分條一致的所述分條組,并且存在降級(jí)的分條組,則通過(guò)RAID算法把降級(jí)的分條組修復(fù)為分條一致的分條組,刪除其余所述分條組中的數(shù)據(jù)塊。
[0046]現(xiàn)有去重技術(shù)中,由于不對(duì)分條組進(jìn)行執(zhí)行分條校驗(yàn),因此無(wú)法知道分條組的可靠性,去重后的數(shù)據(jù)塊可能會(huì)被存到降級(jí)的分條組中,或者其他穩(wěn)定性不高的分條組中。本發(fā)明實(shí)施例,針對(duì)此種情況,可以對(duì)降級(jí)分條組進(jìn)行修復(fù),使最終保留的數(shù)據(jù)塊以分條一致的形式存儲(chǔ)在分條組中。因此提高了數(shù)據(jù)安全性。
[0047]需要說(shuō)明的是,這兩種策略是獨(dú)立的,任意執(zhí)行一種,在統(tǒng)計(jì)上就可以提高存儲(chǔ)設(shè)備的數(shù)據(jù)安全性。因此,對(duì)執(zhí)行這個(gè)方法的裝置或者控制器,可以對(duì)兩種策略都支持,也可以僅其中一種策略。
[0048]本發(fā)明實(shí)施例還提供一種可選的策略:如果所有分條組都是失效分條組,則對(duì)所述失效分條組中分條一致的分條中的數(shù)據(jù)進(jìn)行去重,并且刪除失效的分條中的數(shù)據(jù)。和前兩種策略一樣,這種策略也是獨(dú)立的,對(duì)執(zhí)行這個(gè)方法的裝置或者控制器,可以這任意一種策略,或者支持任意兩種或者三種都支持。
[0049]當(dāng)所有分條組都是失效分條組,意味著每個(gè)分條組都發(fā)生了永久性數(shù)據(jù)丟失,依靠單個(gè)分條組不足以恢復(fù)整個(gè)數(shù)據(jù)塊。分條組由分條組成,本發(fā)明實(shí)施例可以挽救部分分條中的數(shù)據(jù)。挽救的分條可能可以湊成一個(gè)完整的分條組,即使挽救的分條組不足以湊成一個(gè)完整的分條組,保留這些分條中的數(shù)據(jù)也仍然是有意義的,例如在未來(lái)可能會(huì)有新的數(shù)據(jù)寫(xiě)入時(shí),新寫(xiě)入的數(shù)據(jù)和已存儲(chǔ)的分條可以湊成一個(gè)完整的分條組。因此這種策略避免或者減少了數(shù)據(jù)塊的數(shù)據(jù)丟失。
[0050]挽留分條的措施包括:如果存在分條一致的分條,則對(duì)這些分條一致的分條進(jìn)行去重;如果存在降級(jí)的分條,且不存在和降級(jí)的分條存儲(chǔ)相同數(shù)據(jù)的分條一致的分條,則使用RAID算法修復(fù)降級(jí)的分條;如果存在不一致的分條,且不一致的分條的數(shù)據(jù)SU未發(fā)生錯(cuò)誤,且不存在和不一致的分條所存儲(chǔ)相同數(shù)據(jù)的分條一致的分條或者降級(jí)的分條,則使用RAID算法修復(fù)降級(jí)的分條。
[0051]步驟34,將指向所述數(shù)據(jù)塊所在分條組的LUN指向所述分條一致的分條組。
[0052]LUN由控制器管理并提供主機(jī)使用??刂破饔涗浻蠰UN所指向的分條組,分條組中的數(shù)據(jù)塊組成LUN的數(shù)據(jù),當(dāng)主機(jī)讀取數(shù)據(jù)時(shí),可以通過(guò)LUN和分條組的指向關(guān)系找到存儲(chǔ)在LUN中的數(shù)據(jù)塊。在對(duì)數(shù)據(jù)去重的過(guò)程中,部分?jǐn)?shù)據(jù)塊被刪除,保留的數(shù)據(jù)塊供這些LUN公用,因此需要把指向那些被刪除的數(shù)據(jù)塊所在分條組的LUN,修改為指向分條一致的分條組。
[0053]按照步驟33所描述的不同情況,當(dāng)步驟33的執(zhí)行過(guò)程中原本就存在分條一致分條組時(shí),這些LUN指向這個(gè)原本就存在的分條組;如果原本不存在分條一致的分條組,通過(guò)修復(fù)生成分條一致的分條組時(shí),這些LUN指向修復(fù)生成的分條一致的分條組。
[0054]可選的,進(jìn)一步更新控制器中記錄的指紋和指紋代表的數(shù)據(jù)塊的存儲(chǔ)地址的映射表。把數(shù)據(jù)塊存儲(chǔ)的地址更新為指向分條一致的分條組。在下次進(jìn)行去重時(shí),可以使用這個(gè)對(duì)應(yīng)關(guān)系找到數(shù)據(jù)塊所在的分條組,再次確認(rèn)分條組的分條狀態(tài)。
[0055]步驟35,可選的,還可以更新所述數(shù)據(jù)塊的引用次數(shù),引用次數(shù)增加的數(shù)值等于刪除的數(shù)據(jù)塊的數(shù)量。控制器記錄有數(shù)據(jù)塊被引用的次數(shù),引用次數(shù)用以描述指向這個(gè)數(shù)據(jù)塊的LUN的數(shù)量。當(dāng)引用次數(shù)為O時(shí),表示沒(méi)有LUN需要使用這個(gè)數(shù)據(jù)塊,這個(gè)數(shù)據(jù)塊可以被刪除。步驟35和步驟34不限制執(zhí)行的先后次序,可以任一先執(zhí)行或者二者同時(shí)執(zhí)行。
[0056]如圖3所示,是一種數(shù)據(jù)塊處理方法流程圖,可以進(jìn)行在線重刪。方法包括以下步驟。該方法可以有控制器執(zhí)行,具體而言是控制器的處理器執(zhí)行緩存中的計(jì)算機(jī)指令。
[0057]步驟41,查詢存儲(chǔ)設(shè)備中數(shù)據(jù)塊的指紋庫(kù),當(dāng)存儲(chǔ)設(shè)備中存在和所述待存儲(chǔ)數(shù)據(jù)塊擁有相同指紋的已存儲(chǔ)數(shù)據(jù)塊,檢測(cè)所述已存儲(chǔ)數(shù)據(jù)塊所在分條組的獨(dú)立廉價(jià)磁盤(pán)冗余陣列RAID分條狀態(tài)。
[0058]控制器在把待存儲(chǔ)數(shù)據(jù)塊存入存儲(chǔ)設(shè)備之前,先計(jì)算這個(gè)待存儲(chǔ)數(shù)據(jù)塊的指紋,然后檢查指紋庫(kù)中是否已經(jīng)存在待存儲(chǔ)數(shù)據(jù)塊指紋。如果不存在,意味著這個(gè)待存儲(chǔ)數(shù)據(jù)塊未被存儲(chǔ)過(guò),待存儲(chǔ)數(shù)據(jù)塊需要存儲(chǔ)到存儲(chǔ)設(shè)備中。如果存在,意味著這個(gè)數(shù)據(jù)塊已經(jīng)存儲(chǔ)過(guò)了,進(jìn)一步判斷是否需要重新存儲(chǔ)待存儲(chǔ)數(shù)據(jù)塊。
[0059]步驟42,通過(guò)檢測(cè)已存儲(chǔ)數(shù)據(jù)塊所在分條組的RAID分條狀態(tài),如果分條不一致,則需要生成分條一致的分條組。具體措施,可以用待存儲(chǔ)數(shù)據(jù)塊替換已存儲(chǔ)數(shù)據(jù)塊,重新存儲(chǔ)的待存儲(chǔ)數(shù)據(jù)塊所在的分條組時(shí)分條一致的分條組;如果已存儲(chǔ)數(shù)據(jù)塊所在的分條組可以修復(fù),也可以修復(fù)已存儲(chǔ)數(shù)據(jù)塊所在的分條組。如果分條狀態(tài)是分條一致,就不需要存儲(chǔ)待存儲(chǔ)數(shù)據(jù)塊,已存儲(chǔ)數(shù)據(jù)塊也不需要改變。
[0060]下面對(duì)策略進(jìn)行具體說(shuō)明,本發(fā)明實(shí)施例可以包括下述策略任意一種或多種。應(yīng)用本發(fā)明實(shí)施例的控制器,可以同時(shí)具有支持多種策略的功能,也可以只支持其中一種策略。
[0061]策略A,如果已存儲(chǔ)數(shù)據(jù)塊所在分條組的分條狀態(tài)是分條一致,則不存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊。當(dāng)然,如果用待存儲(chǔ)數(shù)據(jù)塊替換已存儲(chǔ)數(shù)據(jù)塊也是可以的。
[0062]策略B,如果所述分條組的分條狀態(tài)是分條降級(jí),則存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊,刪除所述已存儲(chǔ)數(shù)據(jù)塊,或者存儲(chǔ)根據(jù)RAID算法由所述降級(jí)分條組對(duì)所述已存儲(chǔ)數(shù)據(jù)塊進(jìn)行修復(fù)。處于降級(jí)的分條組,其故障SU中的數(shù)據(jù)是可以通過(guò)RAID算法修復(fù)的。
[0063]策略C,如果所述分條組的分條狀態(tài)是分條不一致,則存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊,刪除所述已存儲(chǔ)數(shù)據(jù)塊?;蛘咴诖_定不存在數(shù)據(jù)SU發(fā)生故障,也就是說(shuō)故障SU全是校驗(yàn)SU時(shí),修復(fù)分條組。具體修復(fù)辦法,是根據(jù)RAID算法重新計(jì)算校驗(yàn)SU中的數(shù)據(jù),然后將原數(shù)據(jù)SU中的數(shù)據(jù)和重新計(jì)算獲得的校驗(yàn)SU中的數(shù)據(jù),一起寫(xiě)入存儲(chǔ)裝置的分條組??梢允窃瓟?shù)據(jù)SU所在分條組,也可以是重新申請(qǐng)的分條組。
[0064]確定有沒(méi)有數(shù)據(jù)SU發(fā)生故障的方式是:計(jì)算數(shù)據(jù)SU中數(shù)據(jù)的指紋,如果指紋和待存儲(chǔ)數(shù)據(jù)塊的指紋相同,說(shuō)明數(shù)據(jù)SU未發(fā)生數(shù)據(jù)損壞??梢圆皇褂眯r?yàn)數(shù)據(jù)計(jì)算指紋。
[0065]步驟43,將待存儲(chǔ)數(shù)據(jù)塊所在的LUN指向所述分條一致的分條組。
[0066]經(jīng)過(guò)步驟42的處理后,存儲(chǔ)設(shè)備中存儲(chǔ)有一個(gè)分條一致的分條組,這個(gè)分條一致的分條組中存儲(chǔ)的數(shù)據(jù)塊與待存儲(chǔ)數(shù)據(jù)塊相同。按照步驟42的不同策略,如果已存儲(chǔ)數(shù)據(jù)塊的分條狀態(tài)是分條一致,那么LUN指向已存儲(chǔ)數(shù)據(jù)塊所在分條組;如果使用待存儲(chǔ)數(shù)據(jù)塊替換已存儲(chǔ)數(shù)據(jù)塊,那么LUN指向待存儲(chǔ)數(shù)據(jù)塊存儲(chǔ)到存儲(chǔ)設(shè)備后所在的分條組;如果對(duì)已存儲(chǔ)數(shù)據(jù)塊的分條組進(jìn)行修復(fù),那么LUN指向修復(fù)后的分條組。
[0067]可選的,進(jìn)一步更新控制器中記錄有指紋和指紋代表的數(shù)據(jù)塊的存儲(chǔ)地址的映射表。把數(shù)據(jù)塊存儲(chǔ)的地址更新為指向分條一致的分條組。在下次進(jìn)行去重時(shí),可以使用這個(gè)對(duì)應(yīng)關(guān)系找到數(shù)據(jù)塊所在的分條組,再次確認(rèn)分條狀態(tài)。
[0068]步驟44,可選的,更新數(shù)據(jù)塊的引用次數(shù)。把已存儲(chǔ)數(shù)據(jù)塊的引用次數(shù)加I。
[0069]如圖4所示,是一種數(shù)據(jù)塊處理裝置示意圖。數(shù)據(jù)塊處理裝置5包括指紋比對(duì)模塊51,地址查找模塊52,一致性校驗(yàn)?zāi)K53以及索引模塊54。還可以包括計(jì)數(shù)模塊55。
[0070]指紋比對(duì)模塊51,用于對(duì)存儲(chǔ)系統(tǒng)中數(shù)據(jù)塊的指紋進(jìn)行比對(duì)。
[0071]每個(gè)數(shù)據(jù)塊擁有一個(gè)指紋,例如可以用MD5,SHA128等算法對(duì)數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容進(jìn)行計(jì)算,把計(jì)算的結(jié)果作為數(shù)據(jù)塊的指紋。擁有相同指紋的數(shù)據(jù)塊是相同數(shù)據(jù)塊。存儲(chǔ)設(shè)備中數(shù)據(jù)塊的指紋可以存儲(chǔ)在控制器的指紋庫(kù)中。
[0072]地址查找模塊52,用于當(dāng)有多個(gè)數(shù)據(jù)塊有相同的指紋時(shí),根據(jù)所述指紋查詢所述數(shù)據(jù)塊的地址,根據(jù)所述數(shù)據(jù)塊地址查找所述數(shù)據(jù)塊所占用的分條組。
[0073]當(dāng)找到多個(gè)擁有相同指紋的數(shù)據(jù)塊時(shí),可以保留其中一個(gè)數(shù)據(jù)塊,刪除其余數(shù)據(jù)塊,以減少對(duì)存儲(chǔ)設(shè)備存儲(chǔ)空間的占用??刂破鞔鎯?chǔ)有映射表,映射表中記錄有指紋和指紋代表的數(shù)據(jù)塊的存儲(chǔ)地址??刂破骺梢愿鶕?jù)數(shù)據(jù)塊的地址,找到存儲(chǔ)這個(gè)數(shù)據(jù)塊的分條組。數(shù)據(jù)塊存儲(chǔ)在分條組中,數(shù)據(jù)塊和分條組一一對(duì)應(yīng)。
[0074]一致性校驗(yàn)?zāi)K53,用于校驗(yàn)所述數(shù)據(jù)塊的所述分條組的獨(dú)立廉價(jià)磁盤(pán)冗余陣列RAID分條狀態(tài),根據(jù)校驗(yàn)結(jié)果,保存分條一致的分條組中的數(shù)據(jù)塊。
[0075]—致性校驗(yàn)?zāi)K53還可以用于修復(fù)分條組。所述根據(jù)校驗(yàn)結(jié)果保存分條一致的分條組中的數(shù)據(jù)塊,包括下述至少一種方案:如果已經(jīng)存在分條一致的所述分條組,并且存在非分條一致的所述分條組,則保留分條一致的所述分條組中的數(shù)據(jù)塊不變,刪除其余所述分條組中的數(shù)據(jù)塊;如果不存在分條一致的所述分條組,并且存在降級(jí)的分條組,則通過(guò)RAID算法修復(fù)降級(jí)的分條組,生成分條一致的分條組,刪除其余所述分條組中的數(shù)據(jù)塊。對(duì)每個(gè)分條組進(jìn)行分條狀態(tài)的校驗(yàn),分條組的狀態(tài)由分條組中可靠性最低的分條。
[0076]本發(fā)明實(shí)施例所說(shuō)的修復(fù),是指當(dāng)分條中有部分SU出現(xiàn)數(shù)據(jù)錯(cuò)誤或者SU故障時(shí),利用正常SU中的數(shù)據(jù)使用RAID校驗(yàn)算法,重新計(jì)算出故障SU或者數(shù)據(jù)出錯(cuò)的SU中的數(shù)據(jù),把正常SU中的數(shù)據(jù)以及重新計(jì)算出的數(shù)據(jù)新寫(xiě)入存儲(chǔ)設(shè)備的分條組中。修復(fù)后的分條組的分條狀態(tài)是分條一致,分條組中數(shù)據(jù)塊的安全性比分條降級(jí)、分條不一致更高。修復(fù)后的數(shù)據(jù)塊具體寫(xiě)入位置,可以重新分配分條組;在能夠滿足正常讀寫(xiě)的情況下,也可以寫(xiě)入原分條組,覆蓋原分條組中的數(shù)據(jù)。
[0077]本發(fā)明實(shí)施例提供的一種策略是:當(dāng)有任意分條組的分條狀態(tài)是分條一致時(shí),說(shuō)明這個(gè)分條中的數(shù)據(jù)塊是可靠的,其他分條組可以不再執(zhí)行分條狀態(tài)的校驗(yàn)直接刪除。
[0078]現(xiàn)有去重技術(shù)中,由于不執(zhí)行分條校驗(yàn),因此,如果既存在分條一致的所述分條組,又存在非分條一致的分條組。那么會(huì)隨機(jī)保留其中一個(gè)分條組中的數(shù)據(jù)塊。如果保留的是分條失效的分條組中的數(shù)據(jù)塊,而清空其他分條組,那么數(shù)據(jù)塊的內(nèi)容將無(wú)法被正常讀出,也就是說(shuō)去重操作造成了數(shù)據(jù)丟失。非分條一致的分條組包括除了分條一致外的其他狀態(tài),例如分條不一致、分條降級(jí)或分條失效。從統(tǒng)計(jì)結(jié)果來(lái)看,在多次去重操作中,現(xiàn)有技術(shù)會(huì)造成數(shù)據(jù)丟失或者數(shù)據(jù)安全性降低。而本發(fā)明實(shí)施例相較于現(xiàn)有技術(shù)可以提高數(shù)據(jù)可靠性。
[0079]本發(fā)明實(shí)施例還提供另外一種策略:如果不存在分條一致的所述分條組,并且存在降級(jí)的分條組,則通過(guò)RAID算法把降級(jí)的分條組修復(fù)為分條一致的分條組,刪除其余所述分條組中的數(shù)據(jù)塊。
[0080]現(xiàn)有去重技術(shù)中,由于不對(duì)分條組進(jìn)行執(zhí)行分條校驗(yàn),因此無(wú)法知道分條組的可靠性,去重后的數(shù)據(jù)塊可能會(huì)被存到降級(jí)的分條組中,或者其他穩(wěn)定性不高的分條組中。本發(fā)明實(shí)施例,針對(duì)此種情況,可以對(duì)降級(jí)分條組進(jìn)行修復(fù),使最終保留的數(shù)據(jù)塊以分條一致的形式存儲(chǔ)在分條組中。因此提高了數(shù)據(jù)安全性。
[0081]需要說(shuō)明的是,這兩種策略是獨(dú)立的,任意執(zhí)行一種,在統(tǒng)計(jì)上就可以提高存儲(chǔ)設(shè)備的數(shù)據(jù)安全性。因此,對(duì)執(zhí)行這個(gè)方法的裝置或者控制器,可以對(duì)兩種策略都支持,也可以僅其中一種策略。
[0082]本發(fā)明實(shí)施例還提供一種可選的策略:如果所有分條組都是失效分條組,則對(duì)所述失效分條組中分條一致的分條中的數(shù)據(jù)進(jìn)行去重,并且刪除失效的分條中的數(shù)據(jù)。和前兩種策略一樣,這種策略也是獨(dú)立的,對(duì)執(zhí)行這個(gè)方法的裝置或者控制器,可以這任意一種策略,或者支持任意兩種或者三種都支持。
[0083]當(dāng)所有分條組都是失效分條組,意味著每個(gè)分條組都發(fā)生了永久性數(shù)據(jù)丟失,依靠單個(gè)分條組不足以恢復(fù)整個(gè)數(shù)據(jù)塊。分條組由分條組成,本發(fā)明實(shí)施例可以挽救部分分條中的數(shù)據(jù)。挽救的分條可能可以湊成一個(gè)完整的分條組,即使挽救的分條組不足以湊成一個(gè)完整的分條組,保留這些分條中的數(shù)據(jù)也仍然是有意義的,例如在未來(lái)可能會(huì)有新的數(shù)據(jù)寫(xiě)入時(shí),新寫(xiě)入的數(shù)據(jù)和已存儲(chǔ)的分條可以湊成一個(gè)完整的分條組。因此這種策略避免或者減少了數(shù)據(jù)塊的數(shù)據(jù)丟失。
[0084]挽留分條的措施包括:如果存在分條一致的分條,則對(duì)這些分條一致的分條進(jìn)行去重;如果存在降級(jí)的分條,且不存在和降級(jí)的分條存儲(chǔ)相同數(shù)據(jù)的分條一致的分條,則使用RAID算法修復(fù)降級(jí)的分條;如果存在不一致的分條,且不一致的分條的數(shù)據(jù)SU未發(fā)生錯(cuò)誤,且不存在和不一致的分條所存儲(chǔ)相同數(shù)據(jù)的分條一致的分條或者降級(jí)的分條,則使用RAID算法修復(fù)降級(jí)的分條。
[0085]索引模塊54,和一致性校驗(yàn)?zāi)K53連接,用于將指向所述數(shù)據(jù)塊所在分條組的LUN指向所述分條一致的分條組。
[0086]LUN由控制器管理并提供主機(jī)使用??刂破饔涗浻蠰UN所指向的分條組,分條組中的數(shù)據(jù)塊組成LUN的數(shù)據(jù),當(dāng)主機(jī)讀取數(shù)據(jù)時(shí),可以通過(guò)LUN和分條組的指向關(guān)系找到存儲(chǔ)在LUN中的數(shù)據(jù)塊。在對(duì)數(shù)據(jù)去重的過(guò)程中,部分?jǐn)?shù)據(jù)塊被刪除,保留的數(shù)據(jù)塊供這些LUN公用,因此需要把指向那些被刪除的數(shù)據(jù)塊所在分條組的LUN,修改為指向分條一致的分條組。
[0087]如果存儲(chǔ)設(shè)備中原本就存在分條一致分條組時(shí),索引模塊54將這些LUN指向這個(gè)原本就存在的分條組;如果原本不存在分條一致的分條組,通過(guò)修復(fù)生成分條一致的分條組時(shí),索引模塊54將這些LUN指向修復(fù)生成的分條一致的分條組。
[0088]可選的,索引模塊54進(jìn)一步更新控制器中記錄的指紋和指紋代表的數(shù)據(jù)塊的存儲(chǔ)地址的映射表。把數(shù)據(jù)塊存儲(chǔ)的地址更新為指向分條一致的分條組。在下次進(jìn)行去重時(shí),可以使用這個(gè)對(duì)應(yīng)關(guān)系找到數(shù)據(jù)塊所在的分條組,再次確認(rèn)分條組的分條狀態(tài)。
[0089]計(jì)數(shù)模塊55,和一致性校驗(yàn)?zāi)K53連接,可以更新所述數(shù)據(jù)塊的引用次數(shù),引用次數(shù)增加的數(shù)值等于刪除的數(shù)據(jù)塊的數(shù)量??刂破饔涗浻袛?shù)據(jù)塊被引用的次數(shù),引用次數(shù)用以描述指向這個(gè)數(shù)據(jù)塊的LUN的數(shù)量。當(dāng)引用次數(shù)為O時(shí),表示沒(méi)有LUN需要使用這個(gè)數(shù)據(jù)塊,這個(gè)數(shù)據(jù)塊可以被刪除。
[0090]如圖5所示,是一種數(shù)據(jù)塊處理裝置示意圖,可以進(jìn)行在線重刪。數(shù)據(jù)塊處理裝置6包括:查詢模塊61,一致性校驗(yàn)?zāi)K62以及索引模塊63。還可以包括計(jì)數(shù)模塊64。
[0091]查詢模塊61,用于查詢存儲(chǔ)設(shè)備中數(shù)據(jù)塊的指紋庫(kù),確定存儲(chǔ)設(shè)備中是否存在和所述待存儲(chǔ)數(shù)據(jù)塊擁有相同指紋的已存儲(chǔ)數(shù)據(jù)塊。
[0092]控制器在把待存儲(chǔ)數(shù)據(jù)塊存入存儲(chǔ)設(shè)備之前,先計(jì)算這個(gè)待存儲(chǔ)數(shù)據(jù)塊的指紋,然后檢查指紋庫(kù)中是否已經(jīng)存在待存儲(chǔ)數(shù)據(jù)塊指紋。如果不存在,意味著這個(gè)待存儲(chǔ)數(shù)據(jù)塊未被存儲(chǔ)過(guò),待存儲(chǔ)數(shù)據(jù)塊需要存儲(chǔ)到存儲(chǔ)設(shè)備中。如果存在,意味著這個(gè)數(shù)據(jù)塊已經(jīng)存儲(chǔ)過(guò)了,進(jìn)一步判斷是否需要重新存儲(chǔ)待存儲(chǔ)數(shù)據(jù)塊。
[0093]一致性校驗(yàn)?zāi)K62,用于檢測(cè)已存儲(chǔ)數(shù)據(jù)塊所在分條組的RAID分條狀態(tài),如果分條不一致,則需要生成分條一致的分條組。具體措施,可以用待存儲(chǔ)數(shù)據(jù)塊替換已存儲(chǔ)數(shù)據(jù)塊,重新存儲(chǔ)的待存儲(chǔ)數(shù)據(jù)塊所在的分條組時(shí)分條一致的分條組;如果已存儲(chǔ)數(shù)據(jù)塊所在的分條組可以修復(fù),也可以修復(fù)已存儲(chǔ)數(shù)據(jù)塊所在的分條組。如果分條狀態(tài)是分條一致,就不需要存儲(chǔ)待存儲(chǔ)數(shù)據(jù)塊,已存儲(chǔ)數(shù)據(jù)塊也不需要改變。
[0094]一致性校驗(yàn)?zāi)K62還具有修復(fù)分條組或者分條的功能。下面對(duì)一致性校驗(yàn)?zāi)K62的處理策略進(jìn)行具體說(shuō)明,本發(fā)明實(shí)施例可以包括下述策略任意一種或多種。應(yīng)用本發(fā)明實(shí)施例的控制器,可以同時(shí)具有支持多種策略的功能,也可以只支持其中一種策略。
[0095]策略A,如果已存儲(chǔ)數(shù)據(jù)塊所在分條組的分條狀態(tài)是分條一致,則不存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊。當(dāng)然,如果用待存儲(chǔ)數(shù)據(jù)塊替換已存儲(chǔ)數(shù)據(jù)塊也是可以的。
[0096]策略B,如果所述分條組的分條狀態(tài)是分條降級(jí),則存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊,刪除所述已存儲(chǔ)數(shù)據(jù)塊,或者存儲(chǔ)根據(jù)RAID算法由所述降級(jí)分條組對(duì)所述已存儲(chǔ)數(shù)據(jù)塊進(jìn)行修復(fù)。處于降級(jí)的分條組,其故障SU中的數(shù)據(jù)是可以通過(guò)RAID算法修復(fù)的。
[0097]策略C,如果所述分條組的分條狀態(tài)是分條不一致,則存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊,刪除所述已存儲(chǔ)數(shù)據(jù)塊。或者在確定不存在數(shù)據(jù)SU發(fā)生故障,也就是說(shuō)故障SU全是校驗(yàn)SU時(shí),修復(fù)分條組。具體修復(fù)辦法,是根據(jù)RAID算法重新計(jì)算校驗(yàn)SU中的數(shù)據(jù),然后將原數(shù)據(jù)SU中的數(shù)據(jù)和重新計(jì)算獲得的校驗(yàn)SU中的數(shù)據(jù),一起寫(xiě)入存儲(chǔ)裝置的分條組。可以是原數(shù)據(jù)SU所在分條組,也可以是重新申請(qǐng)的分條組。
[0098]確定有沒(méi)有數(shù)據(jù)SU發(fā)生故障的方式是:計(jì)算數(shù)據(jù)SU中數(shù)據(jù)的指紋,如果指紋和待存儲(chǔ)數(shù)據(jù)塊的指紋相同,說(shuō)明數(shù)據(jù)SU未發(fā)生數(shù)據(jù)損壞??梢圆皇褂眯r?yàn)數(shù)據(jù)計(jì)算指紋。
[0099]索引模塊63,用于將待存儲(chǔ)數(shù)據(jù)塊所在的LUN指向所述分條一致的分條組。
[0100]一致性校驗(yàn)?zāi)K62處理后,存儲(chǔ)設(shè)備中存儲(chǔ)有一個(gè)分條一致的分條組,這個(gè)分條一致的分條組中存儲(chǔ)的數(shù)據(jù)塊與待存儲(chǔ)數(shù)據(jù)塊相同。按照步驟42的不同策略,如果已存儲(chǔ)數(shù)據(jù)塊的分條狀態(tài)是分條一致,那么LUN指向已存儲(chǔ)數(shù)據(jù)塊所在分條組;如果使用待存儲(chǔ)數(shù)據(jù)塊替換已存儲(chǔ)數(shù)據(jù)塊,那么LUN指向待存儲(chǔ)數(shù)據(jù)塊存儲(chǔ)到存儲(chǔ)設(shè)備后所在的分條組;如果對(duì)已存儲(chǔ)數(shù)據(jù)塊的分條組進(jìn)行修復(fù),那么LUN指向修復(fù)后的分條組。
[0101]可選的,索引模塊63進(jìn)一步用于更新控制器中記錄有指紋和指紋代表的數(shù)據(jù)塊的存儲(chǔ)地址的映射表。把數(shù)據(jù)塊存儲(chǔ)的地址更新為指向分條一致的分條組。在下次進(jìn)行去重時(shí),可以使用這個(gè)對(duì)應(yīng)關(guān)系找到數(shù)據(jù)塊所在的分條組,再次確認(rèn)分條狀態(tài)。
[0102]計(jì)數(shù)模塊64,用于更新數(shù)據(jù)塊的引用次數(shù)。把已存儲(chǔ)數(shù)據(jù)塊的引用次數(shù)加I。計(jì)數(shù)模塊64是可選的。
[0103]本發(fā)明實(shí)施例還可以提供一種數(shù)據(jù)塊處理系統(tǒng),包括數(shù)據(jù)塊處理裝置5以及存儲(chǔ)設(shè)備,存儲(chǔ)設(shè)備用于存儲(chǔ)數(shù)據(jù)塊。數(shù)據(jù)塊處理裝置可以是控制器或者集成在控制器中的軟件或硬件。
[0104]本發(fā)明實(shí)施例還可以提供一種數(shù)據(jù)塊處理系統(tǒng),包括數(shù)據(jù)塊處理裝置6以及存儲(chǔ)設(shè)備,存儲(chǔ)設(shè)備用于存儲(chǔ)數(shù)據(jù)塊。數(shù)據(jù)塊處理裝置可以是控制器或者集成在控制器中的軟件或硬件。
[0105]本領(lǐng)域普通技術(shù)人員將會(huì)理解,本發(fā)明的各個(gè)方面、或各個(gè)方面的可能實(shí)現(xiàn)方式可以被具體實(shí)施為系統(tǒng)、方法或者計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明的各方面、或各個(gè)方面的可能實(shí)現(xiàn)方式可以采用完全硬件實(shí)施例、完全軟件實(shí)施例(包括固件、駐留軟件等等),或者組合軟件和硬件方面的實(shí)施例的形式,在這里都統(tǒng)稱為“電路”、“模塊”或者“系統(tǒng)”。此夕卜,本發(fā)明的各方面、或各個(gè)方面的可能實(shí)現(xiàn)方式可以采用計(jì)算機(jī)程序產(chǎn)品的形式,計(jì)算機(jī)程序產(chǎn)品是指存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)可讀程序代碼。
[0106]計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包含但不限于電子、磁性、光學(xué)、電磁、紅外或半導(dǎo)體系統(tǒng)、設(shè)備或者裝置,或者前述的任意適當(dāng)組合,如隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦除可編程只讀存儲(chǔ)器(EPR0M或者快閃存儲(chǔ)器)、光纖、便攜式只讀存儲(chǔ)器(CD-ROM)。
[0107]計(jì)算機(jī)中的處理器讀取存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)可讀程序代碼,使得處理器能夠執(zhí)行在流程圖中每個(gè)步驟、或各步驟的組合中規(guī)定的功能動(dòng)作;生成實(shí)施在框圖的每一塊、或各塊的組合中規(guī)定的功能動(dòng)作的裝置。
【權(quán)利要求】
1.一種數(shù)據(jù)處理方法,用于控制器中,其特征在于,該方法包括: 當(dāng)有多個(gè)數(shù)據(jù)塊有相同的指紋時(shí),根據(jù)所述指紋查詢所述數(shù)據(jù)塊的地址,根據(jù)所述數(shù)據(jù)塊地址查找所述數(shù)據(jù)塊所占用的分條組; 校驗(yàn)所述數(shù)據(jù)塊的所述分條組的獨(dú)立廉價(jià)磁盤(pán)冗余陣列RAID分條狀態(tài),根據(jù)校驗(yàn)結(jié)果保存分條一致的分條組中的數(shù)據(jù)塊; 所述根據(jù)校驗(yàn)結(jié)果保存分條一致的分條組中的數(shù)據(jù)塊,包括下述至少一種: 如果存在分條一致的所述分條組,并且存在非分條一致的所述分條組,則保留分條一致的所述分條組中的數(shù)據(jù)塊,刪除其余所述分條組中的數(shù)據(jù)塊; 如果不存在分條一致的所述分條組,并且存在降級(jí)的分條組,則通過(guò)RAID算法修復(fù)將降級(jí)的分條組修復(fù)為分條一致的分條組,所述分條一致的分條組中存儲(chǔ)有所述數(shù)據(jù)塊,刪除其余所述分條組中的所述數(shù)據(jù)塊。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理方法,其特征在于,所述根據(jù)校驗(yàn)結(jié)果保存分條一致的分條組中的數(shù)據(jù)塊,進(jìn)一步包括: 如果所有分條組都是失效分條組,則對(duì)所述失效分條組中分條一致的分條中的數(shù)據(jù)進(jìn)行去重,刪除所述失效分條組中失效的分條中的數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理方法,其特征在于,該方法之后進(jìn)一步包括: 將指向所述數(shù)據(jù)塊所在分條組的LUN指向所述分條一致的分條組。
4.根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理方法,其特征在于,該方法之后進(jìn)一步包括: 更新所述數(shù)據(jù)塊的引用次數(shù),更新后的引用次數(shù)等于原計(jì)數(shù)值加上刪除的所述數(shù)據(jù)塊的數(shù)量。
5.一種數(shù)據(jù)塊處理裝置,其特征在于,該裝置包括: 指紋比對(duì)模塊51,用于對(duì)存儲(chǔ)設(shè)備中數(shù)據(jù)塊的指紋進(jìn)行比對(duì); 地址查找模塊52,當(dāng)所述存儲(chǔ)設(shè)備中有多個(gè)數(shù)據(jù)塊有相同的指紋時(shí),根據(jù)所述指紋查詢所述多個(gè)數(shù)據(jù)塊的地址,根據(jù)所述多個(gè)數(shù)據(jù)塊地址查找所述多個(gè)數(shù)據(jù)塊所占用的分條組; 一致性校驗(yàn)?zāi)K53,用于校驗(yàn)所述多個(gè)數(shù)據(jù)塊的所述分條組的獨(dú)立廉價(jià)磁盤(pán)冗余陣列RAID分條狀態(tài),根據(jù)校驗(yàn)結(jié)果保存分條一致的分條組中的數(shù)據(jù)塊; 所述根據(jù)校驗(yàn)結(jié)果保存分條一致的分條組中的數(shù)據(jù)塊,包括下述至少一種: 如果存在分條一致的所述分條組,并且存在非分條一致的所述分條組,則保留分條一致的所述分條組中的數(shù)據(jù)塊,刪除其余所述分條組中的數(shù)據(jù)塊; 如果不存在分條一致的所述分條組,并且存在降級(jí)的分條組,則通過(guò)RAID算法修復(fù)將降級(jí)的分條組修復(fù)為分條一致的分條組,所述分條一致的分條組中存儲(chǔ)有所述數(shù)據(jù)塊,刪除其余所述分條組中的所述數(shù)據(jù)塊。
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)處理裝置,其特征在于,所述根據(jù)校驗(yàn)結(jié)果保存分條一致的分條組中的數(shù)據(jù)塊,進(jìn)一步包括: 如果所有分條組都是失效分條組,則對(duì)所述失效分條組中分條一致的分條中的數(shù)據(jù)進(jìn)行去重,刪除所述失效分條組中失效的分條中的數(shù)據(jù)。
7.根據(jù)權(quán)利要求5所述的數(shù)據(jù)處理裝置,其特征在于,所述裝置進(jìn)一步包括: 索引模塊54,用于將指向所述數(shù)據(jù)塊所在分條組的LUN指向所述分條一致的分條組。
8.根據(jù)權(quán)利要求5所述的數(shù)據(jù)處理裝置,其特征在于,所述裝置進(jìn)一步包括: 計(jì)數(shù)模塊55,用于更新所述數(shù)據(jù)塊的計(jì)數(shù)值,更新后的計(jì)數(shù)值等于原計(jì)數(shù)值加上刪除的所述數(shù)據(jù)塊的數(shù)量。
9.一種存儲(chǔ)系統(tǒng),包括權(quán)利要求6-8任一項(xiàng)的存儲(chǔ)裝置,以及存儲(chǔ)設(shè)備。
10.一種數(shù)據(jù)塊處理方法,用于控制器中,其特征在于,該方法包括: 查詢存儲(chǔ)設(shè)備中數(shù)據(jù)塊的指紋庫(kù),當(dāng)存儲(chǔ)設(shè)備中存在和所述待存儲(chǔ)數(shù)據(jù)塊擁有相同指紋的已存儲(chǔ)數(shù)據(jù)塊時(shí),檢測(cè)所述已存儲(chǔ)數(shù)據(jù)塊所在分條組的獨(dú)立廉價(jià)磁盤(pán)冗余陣列RAID分條狀態(tài); 根據(jù)檢測(cè)進(jìn)行數(shù)據(jù)塊存儲(chǔ),包括: 如果所述分條組的分條狀態(tài)是分條一致,則不存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊;如果所述分條組的分條狀態(tài)是分條降級(jí),則:存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊,刪除所述已存儲(chǔ)數(shù)據(jù)塊;或者,存儲(chǔ)根據(jù)RAID算法由所述降級(jí)分條組對(duì)所述已存儲(chǔ)數(shù)據(jù)塊進(jìn)行修復(fù);或者如果所述分條組的分條狀態(tài)是分條不一致,則:存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊,刪除所述已存儲(chǔ)數(shù)據(jù)塊;或者,如果數(shù)據(jù)分條單元未發(fā)生數(shù)據(jù)錯(cuò)誤,則根據(jù)RAID算法對(duì)所述已存儲(chǔ)數(shù)據(jù)塊進(jìn)行修復(fù)。
11.根據(jù)權(quán)利要求10所述的數(shù)據(jù)塊處理方法,其特征在于,所述方法之后還包括: 將所述待存儲(chǔ)數(shù)據(jù)塊所屬于的LUN,指向所述根據(jù)檢測(cè)所存儲(chǔ)的數(shù)據(jù)塊。
12.根據(jù)權(quán)利要求10所述的數(shù)據(jù)塊處理方法,其特征在于,所述方法之后還包括: 把所述已存儲(chǔ)數(shù)據(jù)塊的引用次數(shù)加I。
13.一種數(shù)據(jù)塊處理裝置,其特征在于,該裝置包括: 查詢模塊61,用于查詢存儲(chǔ)設(shè)備中數(shù)據(jù)塊的指紋庫(kù); 一致性校驗(yàn)?zāi)K62,用于當(dāng)存儲(chǔ)設(shè)備中存在和所述待存儲(chǔ)數(shù)據(jù)塊擁有相同指紋的已存儲(chǔ)數(shù)據(jù)塊時(shí),檢測(cè)所述已存儲(chǔ)數(shù)據(jù)塊所在分條組的獨(dú)立廉價(jià)磁盤(pán)冗余陣列RAID分條狀態(tài);根據(jù)檢測(cè)進(jìn)行數(shù)據(jù)塊存儲(chǔ),包括: 如果所述分條組的分條狀態(tài)是分條一致,則不存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊;如果所述分條組的分條狀態(tài)是分條降級(jí),則:存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊,刪除所述已存儲(chǔ)數(shù)據(jù)塊;或者,存儲(chǔ)根據(jù)RAID算法由所述降級(jí)分條組對(duì)所述已存儲(chǔ)數(shù)據(jù)塊進(jìn)行修復(fù);或者如果所述分條組的分條狀態(tài)是分條不一致,則:存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊,刪除所述已存儲(chǔ)數(shù)據(jù)塊;或者,如果數(shù)據(jù)分條單元未發(fā)生數(shù)據(jù)錯(cuò)誤,則根據(jù)RAID算法對(duì)所述已存儲(chǔ)數(shù)據(jù)塊進(jìn)行修復(fù)。
14.根據(jù)權(quán)利要求13所述的數(shù)據(jù)塊處理裝置,其特征在于,所述裝置進(jìn)一步包括: 索引模塊63,用于將所述待存儲(chǔ)數(shù)據(jù)塊所屬于的LUN,指向所述根據(jù)檢測(cè)所存儲(chǔ)的數(shù)據(jù)塊。
15.根據(jù)權(quán)利要求13所述的數(shù)據(jù)塊處理方法,其特征在于,所述裝置進(jìn)一步包括: 計(jì)數(shù)模塊64,用于對(duì)所述已存儲(chǔ)數(shù)據(jù)塊的引用次數(shù)加I。
16.一種存儲(chǔ)系統(tǒng),包括權(quán)利要求13-15任一項(xiàng)的存儲(chǔ)裝置,以及存儲(chǔ)設(shè)備。
17.—種控制器,和存儲(chǔ)設(shè)備連接,所述控制器包括處理器和緩存,所述緩存用于存儲(chǔ)計(jì)算機(jī)指令,所述控制器通過(guò)運(yùn)行所述計(jì)算機(jī)指令執(zhí)行以下步驟: 當(dāng)有多個(gè)數(shù)據(jù)塊有相同的指紋時(shí),根據(jù)所述指紋查詢所述數(shù)據(jù)塊的地址,根據(jù)所述數(shù)據(jù)塊地址查找所述數(shù)據(jù)塊所占用的分條組; 校驗(yàn)所述數(shù)據(jù)塊的所述分條組的獨(dú)立廉價(jià)磁盤(pán)冗余陣列RAID分條狀態(tài),根據(jù)校驗(yàn)結(jié)果保存分條一致的分條組中的數(shù)據(jù)塊; 所述根據(jù)校驗(yàn)結(jié)果保存分條一致的分條組中的數(shù)據(jù)塊,包括下述至少一種: 如果存在分條一致的所述分條組,并且存在非分條一致的所述分條組,則保留分條一致的所述分條組中的數(shù)據(jù)塊,刪除其余所述分條組中的數(shù)據(jù)塊; 如果不存在分條一致的所述分條組,并且存在降級(jí)的分條組,則通過(guò)RAID算法修復(fù)將降級(jí)的分條組修復(fù)為分條一致的分條組,所述分條一致的分條組中存儲(chǔ)有所述數(shù)據(jù)塊,刪除其余所述分條組中的所述數(shù)據(jù)塊。
18.根據(jù)權(quán)利要求17所述的控制器,其特征在于,所述根據(jù)校驗(yàn)結(jié)果保存分條一致的分條組中的數(shù)據(jù)塊,進(jìn)一步包括: 如果所有分條組都是失效分條組,則對(duì)所述失效分條組中分條一致的分條中的數(shù)據(jù)進(jìn)行去重,刪除所述失效分條組中失效的分條中的數(shù)據(jù)。
19.據(jù)權(quán)利要求17所述的控制器,其特征在于,所述處理器還用于執(zhí)行: 將指向所述數(shù)據(jù)塊所在分條組的LUN指向所述分條一致的分條組。
20.據(jù)權(quán)利要求17所述的控制器,其特征在于,所述處理器還用于執(zhí)行: 更新所述數(shù)據(jù)塊的引用次數(shù),更新后的引用次數(shù)等于原計(jì)數(shù)值加上刪除的所述數(shù)據(jù)塊的數(shù)量。
21.—種控制器,和存儲(chǔ)設(shè)備連接,所述控制器包括處理器和緩存,所述緩存用于存儲(chǔ)計(jì)算機(jī)指令,所述控制器通過(guò)運(yùn)行所述計(jì)算機(jī)指令執(zhí)行以下步驟: 查詢存儲(chǔ)設(shè)備中數(shù)據(jù)塊的指紋庫(kù),當(dāng)存儲(chǔ)設(shè)備中存在和所述待存儲(chǔ)數(shù)據(jù)塊擁有相同指紋的已存儲(chǔ)數(shù)據(jù)塊時(shí),檢測(cè)所述已存儲(chǔ)數(shù)據(jù)塊所在分條組的獨(dú)立廉價(jià)磁盤(pán)冗余陣列RAID分條狀態(tài); 根據(jù)檢測(cè)進(jìn)行數(shù)據(jù)塊存儲(chǔ),包括: 如果所述分條組的分條狀態(tài)是分條一致,則不存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊;如果所述分條組的分條狀態(tài)是分條降級(jí),則:存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊,刪除所述已存儲(chǔ)數(shù)據(jù)塊;或者,存儲(chǔ)根據(jù)RAID算法由所述降級(jí)分條組對(duì)所述已存儲(chǔ)數(shù)據(jù)塊進(jìn)行修復(fù);或者如果所述分條組的分條狀態(tài)是分條不一致,則:存儲(chǔ)所述待存儲(chǔ)數(shù)據(jù)塊,刪除所述已存儲(chǔ)數(shù)據(jù)塊;或者,如果數(shù)據(jù)分條單元未發(fā)生數(shù)據(jù)錯(cuò)誤,則根據(jù)RAID算法對(duì)所述已存儲(chǔ)數(shù)據(jù)塊進(jìn)行修復(fù)。
22.根據(jù)權(quán)利要求21所述的控制器,其特征在于,所述處理器還用于: 將所述待存儲(chǔ)數(shù)據(jù)塊所屬于的LUN,指向所述根據(jù)檢測(cè)所存儲(chǔ)的數(shù)據(jù)塊。
23.根據(jù)權(quán)利要求21所述的控制器,其特征在于,所述處理器還用于: 把所述已存儲(chǔ)數(shù)據(jù)塊的引用次數(shù)加I。
【文檔編號(hào)】G06F17/30GK104205097SQ201380002564
【公開(kāi)日】2014年12月10日 申請(qǐng)日期:2013年12月31日 優(yōu)先權(quán)日:2013年12月31日
【發(fā)明者】薛迎春, 邵長(zhǎng)庚 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1