一種基于文件語(yǔ)義和系統(tǒng)實(shí)時(shí)狀態(tài)的冗余數(shù)據(jù)去重方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計(jì)算機(jī)信息管理技術(shù)領(lǐng)域,具體涉及一種基于文件語(yǔ)義和系統(tǒng)實(shí)時(shí)狀 態(tài)的冗余數(shù)據(jù)去重方法。
【背景技術(shù)】
[0002] 隨著云計(jì)算和移動(dòng)互聯(lián)網(wǎng)的進(jìn)一步普及和深入應(yīng)用,各類網(wǎng)上應(yīng)用和服務(wù)正在各 行各業(yè)中扮演著更為重要的角色,而隨著互聯(lián)網(wǎng)應(yīng)用的用戶基數(shù)急劇上升,全球的信息總 量也正在以爆炸性的速度在增長(zhǎng)。分布式存儲(chǔ)系統(tǒng)是各類云服務(wù)的后臺(tái)支撐系統(tǒng),所有的 服務(wù)數(shù)據(jù)都存儲(chǔ)在分布式存儲(chǔ)系統(tǒng)當(dāng)中,存儲(chǔ)系統(tǒng)對(duì)外提供統(tǒng)一的讀寫接口,以便用戶或 上層應(yīng)用服務(wù)訪問(wèn)或修改存于磁盤當(dāng)中的數(shù)據(jù)。對(duì)應(yīng)不同的應(yīng)用場(chǎng)景和主要用途,分布式 存儲(chǔ)系統(tǒng)又可以從粗粒度上劃分為兩類:備份存儲(chǔ)系統(tǒng)和主存儲(chǔ)系統(tǒng)。備份存儲(chǔ)系統(tǒng)主要 應(yīng)用于冷數(shù)據(jù)的備份,如系統(tǒng)日志、歷史檔案等等,這些備份系統(tǒng)一般搭建在造價(jià)相對(duì)低廉 的存儲(chǔ)硬件設(shè)備上,甚至是可以基于磁帶存儲(chǔ)的底層存儲(chǔ)設(shè)備,因?yàn)閭浞荽鎯?chǔ)系統(tǒng)當(dāng)中的 數(shù)據(jù)的訪問(wèn)熱度非常地低,一般只會(huì)在有特殊需求時(shí)才會(huì)將歷史數(shù)據(jù)讀取出來(lái),因此備份 存儲(chǔ)系統(tǒng)對(duì)數(shù)據(jù)的讀寫性能沒有太高的要求。相比之下,主存儲(chǔ)系統(tǒng),一般指的是存儲(chǔ)了上 層應(yīng)用服務(wù)會(huì)直接訪問(wèn)的數(shù)據(jù)的系統(tǒng),則對(duì)于數(shù)據(jù)的訪問(wèn)性能有著較高的要求,因?yàn)樵谧x 寫的高效性直接決定了用戶對(duì)于上層應(yīng)用和服務(wù)的體驗(yàn)。主存儲(chǔ)系統(tǒng)通常都是以數(shù)據(jù)塊 為基本單位,將文件分為一個(gè)個(gè)數(shù)據(jù)塊存儲(chǔ)在底層的磁盤當(dāng)中,然后在主存儲(chǔ)系統(tǒng)的內(nèi)存 當(dāng)中維護(hù)著一份關(guān)于所有數(shù)據(jù)塊的索引,索引的目的是為了記錄數(shù)據(jù)塊所從屬的文件的信 息,以及數(shù)據(jù)塊在磁盤上的物理位置。由于主存儲(chǔ)系統(tǒng)需要有較高的數(shù)據(jù)訪問(wèn)性能,因此在 分布式的環(huán)境下,系統(tǒng)開發(fā)者通常會(huì)設(shè)定一套具有冗余特性的數(shù)據(jù)存放和管理機(jī)制,即同 一份數(shù)據(jù),在分布式的主存儲(chǔ)系統(tǒng)當(dāng)中會(huì)保留多于一份的備份,結(jié)構(gòu)上非常相似的兩份文 件,如包含了大量相同文件的兩個(gè)工程文件夾,也會(huì)保留兩份完整的文件夾。
[0003] 在大數(shù)據(jù)時(shí)代到來(lái)之前,我們的存儲(chǔ)設(shè)備需要存儲(chǔ)和處理的數(shù)據(jù)都是相對(duì)小量 的,即使搭建分布式主存儲(chǔ)系統(tǒng)所需要的硬件設(shè)備不菲,硬件上的開銷也沒有成為服務(wù)提 供商所需要重視的因素。而在大數(shù)據(jù)的時(shí)代,隨著各類互聯(lián)網(wǎng)應(yīng)用與服務(wù)的激增,用戶的數(shù) 量每天都在增長(zhǎng),服務(wù)和應(yīng)用的規(guī)模也越來(lái)越龐大和復(fù)雜,因此支撐各類云服務(wù)的主存儲(chǔ) 系統(tǒng)當(dāng)中需要存儲(chǔ)的數(shù)據(jù)量也就出現(xiàn)了一個(gè)爆發(fā)式的增長(zhǎng)。這些數(shù)據(jù)是需要被上層的應(yīng)用 和服務(wù)所直接訪問(wèn)到的,因此無(wú)法使用廉價(jià)的備份存儲(chǔ)系統(tǒng)來(lái)協(xié)助存儲(chǔ)。雖然存儲(chǔ)硬件設(shè) 備的造價(jià)隨著技術(shù)上的改進(jìn)而在不斷降低,更低的價(jià)錢可以買到更大容量的設(shè)備,但是因 為在大數(shù)據(jù)時(shí)代,數(shù)據(jù)量是以指數(shù)級(jí)的速度在增長(zhǎng)的,因此在實(shí)際當(dāng)中,存儲(chǔ)數(shù)據(jù)量的增長(zhǎng) 速度已經(jīng)超過(guò)了硬件存儲(chǔ)設(shè)備造價(jià)的下降速度,購(gòu)買更多的存儲(chǔ)設(shè)備不能從根本上應(yīng)對(duì)數(shù) 據(jù)量的激增。而且從經(jīng)濟(jì)利益上來(lái)說(shuō),這更是一個(gè)非常消耗投入成本的方法。
[0004] 在這個(gè)背景與挑戰(zhàn)的驅(qū)動(dòng)下,冗余數(shù)據(jù)去重技術(shù)逐漸受到了越來(lái)越多的服務(wù)提供 商的關(guān)注,尤其是需要在主存儲(chǔ)系統(tǒng)當(dāng)中保存大量數(shù)據(jù)的服務(wù)提供商。從概括的角度來(lái)描 述,冗余數(shù)據(jù)去重技術(shù)就是通過(guò)比較數(shù)據(jù)之間的"簽名",如果發(fā)現(xiàn)了具有相同簽名的數(shù)據(jù), 則將其判定為冗余的數(shù)據(jù),接下來(lái)會(huì)將冗余的數(shù)據(jù)刪除掉,然后在索引更新被刪除的數(shù)據(jù) 的信息,將其物理磁盤位置指向保留了的冗余數(shù)據(jù)的位置。當(dāng)下一次用戶或者應(yīng)用訪問(wèn)這 個(gè)被刪除的數(shù)據(jù)的時(shí)候,系統(tǒng)則會(huì)根據(jù)索引當(dāng)中的信息,把請(qǐng)求導(dǎo)向到保留在磁盤上的冗 余數(shù)據(jù)的位置,并在該數(shù)據(jù)上進(jìn)行用戶所請(qǐng)求的操作。從數(shù)據(jù)去重技術(shù)的粒度粗細(xì)上分,一 般可以分為兩類:文件層面的去重以及數(shù)據(jù)塊層面上的去重。概括地說(shuō),文件層面上的數(shù)據(jù) 去重技術(shù)僅僅刪除冗余的完全相同的兩個(gè)文件,它的比較單位是整個(gè)文件。而數(shù)據(jù)塊層面 上的去重技術(shù)的比較和處理單位則是細(xì)化到數(shù)據(jù)塊上,如前面所提到的,分布式主存儲(chǔ)系 統(tǒng)的底層存儲(chǔ)實(shí)際上是以塊為單位的,一個(gè)文件可能會(huì)被分成多個(gè)塊存儲(chǔ)在磁盤上,而在 這種情況下,每個(gè)數(shù)據(jù)塊都會(huì)被計(jì)算出屬于這個(gè)塊的簽名,去重技術(shù)就是在基于數(shù)據(jù)塊的 簽名的對(duì)比的基礎(chǔ)上,刪除冗余的數(shù)據(jù)塊。從數(shù)據(jù)去重技術(shù)的作用域上劃分,可以分化全局 去重和本地去重。作用域的概念是在分布式存儲(chǔ)系統(tǒng)中起作用的,概括地說(shuō),全局的去重技 術(shù)會(huì)檢測(cè)所有位于該系統(tǒng)的服務(wù)器上的冗余數(shù)據(jù),即使這些數(shù)據(jù)所在的服務(wù)器在地理上是 分離的,而本地去重技術(shù)則只關(guān)注同一臺(tái)服務(wù)器上或同一臺(tái)存儲(chǔ)設(shè)備上的冗余數(shù)據(jù)。從數(shù) 據(jù)去重技術(shù)的執(zhí)行時(shí)機(jī)上劃分,可以分為離線去重和在線去重兩種。離線去重一般指的是 去重程序在系統(tǒng)后臺(tái)運(yùn)行,是當(dāng)新的文件數(shù)據(jù)寫入到了磁盤之后再進(jìn)行冗余數(shù)據(jù)的檢測(cè)和 刪除,而在線去重指的就是在新的數(shù)據(jù)在寫入的過(guò)程當(dāng)中進(jìn)行檢測(cè)和冗余刪除。
[0005] 結(jié)合以上的分類,在現(xiàn)實(shí)的存儲(chǔ)系統(tǒng)當(dāng)中普遍實(shí)現(xiàn)和使用的去重技術(shù)方案都是以 上所談及分類的結(jié)合,而最主要使用的方案有兩類:全局的基于文件層面的去重(Global File-level Deduplication,GFD)以及本地的基于數(shù)據(jù)塊層面的去重(Local Chunk-level Deduplication,IXD)。這兩種方案雖然能夠在一定程度上滿足一定的去重需求,但是它們 的設(shè)計(jì)卻都沒有考慮在主存儲(chǔ)系統(tǒng)這個(gè)應(yīng)用場(chǎng)景的與其他因素之間的平衡與取舍。首先, 數(shù)據(jù)去重技術(shù)會(huì)帶來(lái)數(shù)據(jù)讀性能上的損失,GFD可能會(huì)造成需要從遠(yuǎn)端的服務(wù)器傳送用戶 訪問(wèn)的數(shù)據(jù),從而帶來(lái)網(wǎng)絡(luò)傳輸上的延時(shí),而LCD則會(huì)造成本地磁盤的碎片化,從而在讀取 某個(gè)數(shù)據(jù)的時(shí)候可能會(huì)需要多次磁盤尋道,從而帶來(lái)對(duì)讀操作響應(yīng)的延遲。去重度越大,就 越能節(jié)省存儲(chǔ)設(shè)備上帶來(lái)的開銷,但是讀性能就會(huì)被影響得越嚴(yán)重,因此去重度與讀性能 上的平衡與取舍是一個(gè)首要要考慮的問(wèn)題。其次,主存儲(chǔ)不同于備份存儲(chǔ)系統(tǒng),后者的數(shù)據(jù) 是冷的不經(jīng)常訪問(wèn)的而且通常是作為一個(gè)歷史記錄的形式保存的,因此站在系統(tǒng)的角度來(lái) 說(shuō),這些數(shù)據(jù)可以被統(tǒng)一地看做是二進(jìn)制字節(jié)流。而在主存儲(chǔ)系統(tǒng)當(dāng)中,由于其直接支撐上 層服務(wù)的特性,它當(dāng)中所存儲(chǔ)的數(shù)據(jù)是非常多樣化的,而且會(huì)由于服務(wù)的種類不同,用戶群 的訪問(wèn)特性不同,具有一定的語(yǔ)義性。這些文件的語(yǔ)義性應(yīng)該利用到面向主存儲(chǔ)系統(tǒng)的去 重方案設(shè)計(jì)當(dāng)中。第三,由于主存儲(chǔ)系統(tǒng)直接跟用戶打交道,用戶的訪問(wèn)的特征會(huì)因?yàn)闀r(shí)間 的不同,地域的不同,或者是服務(wù)的改變而存在差異,用戶的也會(huì)因人而異,所以面向主存 儲(chǔ)系統(tǒng)的去重方案需要是動(dòng)態(tài)的,能夠作出調(diào)整的,才能更好地在讀性能和存儲(chǔ)空間效率 的平衡上做出更好的選擇。
[0006] 綜上可見,在大數(shù)據(jù)的時(shí)代背景下,云服務(wù)提供商一方面有著迫切降低存儲(chǔ)空間 成本開銷的迫切需求,另一方面,又希望冗余數(shù)據(jù)的去重不會(huì)對(duì)上層應(yīng)用和服務(wù)的性能受 到太大的影響,用戶的使用體驗(yàn)可以得到保證。如何針對(duì)分布式主存儲(chǔ)系統(tǒng)的使用特性以 及數(shù)據(jù)特征,如何利用不同于備份存儲(chǔ)系統(tǒng)的豐富的文件語(yǔ)義與變化的系統(tǒng)狀態(tài),用以設(shè) 計(jì)和實(shí)現(xiàn)高效的冗余數(shù)據(jù)去重方案,達(dá)到系統(tǒng)空間效率上和數(shù)據(jù)讀性能上高效的平衡,成 為本領(lǐng)域技術(shù)人員迫切需要解決的一個(gè)重要問(wèn)題。
【發(fā)明內(nèi)容】
[0007] 針對(duì)現(xiàn)有技術(shù)所存在的上述技術(shù)問(wèn)題,本發(fā)明提供了一種基于文件語(yǔ)義和系統(tǒng)實(shí) 時(shí)狀態(tài)的冗余數(shù)據(jù)去重方法,能夠使分布式主存儲(chǔ)系統(tǒng)在維持較高的讀請(qǐng)求響應(yīng)性能的同 時(shí),減少存儲(chǔ)空間成本的開銷。
[0008] -種基于文件語(yǔ)義和系統(tǒng)實(shí)時(shí)狀態(tài)的冗余數(shù)據(jù)去重方法,如下:
[0009] 周期性的檢測(cè)分布式存儲(chǔ)系統(tǒng)的讀響應(yīng)時(shí)延和去重比率;根據(jù)當(dāng)前時(shí)刻系統(tǒng)的讀 響應(yīng)時(shí)延和去重比率,采用以下基于SLA(Service Level Agreement,服務(wù)等級(jí)協(xié)議代)動(dòng) 態(tài)調(diào)節(jié)機(jī)制對(duì)系統(tǒng)的去重器進(jìn)行調(diào)節(jié):
[0010] 根據(jù)系統(tǒng)當(dāng)前所參照的SLA,判斷當(dāng)前