專利名稱:塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本 發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,特別涉及一種塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的方法及系統(tǒng)。
背景技術(shù):
在全球數(shù)據(jù)量平均每18 24個(gè)月便翻一倍和迫于法律要求企業(yè)數(shù)據(jù)保存期大幅增加的背景下,重復(fù)數(shù)據(jù)刪除技術(shù)具有很重要的意義。該項(xiàng)技術(shù)是企業(yè)降低存儲(chǔ)開銷,進(jìn)而降低IT開銷,保持競(jìng)爭(zhēng)力的重要手段之一。傳統(tǒng)塊級(jí)存儲(chǔ)設(shè)備上的重復(fù)數(shù)據(jù)刪除應(yīng)用技術(shù)已經(jīng)很成熟,且已進(jìn)行大規(guī)模商用。然而隨著存儲(chǔ)虛擬化技術(shù)的引入,存儲(chǔ)系統(tǒng)的整體架構(gòu)有了很大的變化,這種變化主要表現(xiàn)在虛擬化存儲(chǔ)設(shè)備系統(tǒng)架構(gòu)在傳統(tǒng)的存儲(chǔ)體系結(jié)構(gòu)中增加了一層虛擬化層, 形成了具有主機(jī)層、虛擬化層和物理存儲(chǔ)設(shè)備層(如JB0D、磁盤陣列等)的三層架構(gòu)。主機(jī)層和物理存儲(chǔ)設(shè)備層與傳統(tǒng)的存儲(chǔ)系統(tǒng)完全一致,虛擬化層是一個(gè)軟件層(或者是嵌入硬件內(nèi)的軟件功能模塊)。在虛擬化層內(nèi)置的軟件將底端物理存儲(chǔ)設(shè)備層中的同構(gòu)或異構(gòu)物理存儲(chǔ)設(shè)備虛擬化成一個(gè)統(tǒng)一的存儲(chǔ)設(shè)備池,通過構(gòu)建物理LUN(Logical Unit Number, 邏輯單元號(hào))與虛擬LUN之間的對(duì)應(yīng)關(guān)系,將虛擬LUN提供給前端主機(jī)掛載使用,消除了異構(gòu)存儲(chǔ)設(shè)備之間的差異,可以以統(tǒng)一界面管理所有存儲(chǔ)資源,大大簡(jiǎn)化了存儲(chǔ)管理和使用的成本;加之其所提供的精簡(jiǎn)配置(thin provisioning)、在線數(shù)據(jù)遷移(non-disruptive data migration)等功能,極大地提高了存儲(chǔ)設(shè)備的使用效率。隨著存儲(chǔ)虛擬化技術(shù)的使用深入,傳統(tǒng)的重復(fù)數(shù)據(jù)刪除解決方案在實(shí)施過程中也暴露了不足,具體表現(xiàn)在以下幾個(gè)方面1、在主機(jī)層實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除功能,要求用戶在每臺(tái)連接虛擬化存儲(chǔ)設(shè)備的主機(jī) (host)上部署重復(fù)數(shù)據(jù)刪除軟件,進(jìn)而對(duì)該主機(jī)上的重復(fù)數(shù)據(jù)進(jìn)行刪除。但是這種方法存在如下局限性①重復(fù)數(shù)據(jù)刪除范圍僅限于每一個(gè)安裝重復(fù)數(shù)據(jù)刪除軟件的主機(jī)及其所管理的數(shù)據(jù),不能實(shí)現(xiàn)跨主機(jī)重復(fù)數(shù)據(jù)的刪除;②在每臺(tái)主機(jī)上都需要安裝重復(fù)數(shù)據(jù)刪除軟件,由該軟件執(zhí)行的重復(fù)數(shù)據(jù)的指紋計(jì)算和比較需要消耗很多資源,會(huì)影響主機(jī)的性能。2、在物理存儲(chǔ)設(shè)備層實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除功能,要求以存儲(chǔ)虛擬化層為媒介,其所連接的全部或者部分存儲(chǔ)設(shè)備自身需具有重復(fù)數(shù)據(jù)刪除功能。但是這種方法存在如下局限性①重復(fù)數(shù)據(jù)刪除范圍往往僅局限于某一特定存儲(chǔ)設(shè)備內(nèi),而不能實(shí)現(xiàn)全數(shù)據(jù)范圍的重復(fù)數(shù)據(jù)刪除,影響整體重復(fù)數(shù)據(jù)刪除的比例和效果;②異構(gòu)存儲(chǔ)設(shè)備之間的數(shù)據(jù)遷移需借助另外一個(gè)獨(dú)立主機(jī),將數(shù)據(jù)先還原后再遷移,影響數(shù)據(jù)遷移的性能;③不同的具有重復(fù)數(shù)據(jù)刪除的存儲(chǔ)設(shè)備所使用的元數(shù)據(jù)管理機(jī)制和策略不同,不易實(shí)現(xiàn)整合異構(gòu)存儲(chǔ)資源的統(tǒng)一管理。
發(fā)明內(nèi)容
為了克服傳統(tǒng)方法在虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除功能方面所存在的局限性,本發(fā)明提出了一種塊級(jí)虛擬化存儲(chǔ)設(shè)備上的虛擬化層(非主機(jī)層和物理存儲(chǔ)設(shè)備層)實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的方法,所述方法包括 刪除指定虛擬LBA地址空間所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)中的重復(fù)數(shù)據(jù),獲得所述物理數(shù)據(jù)去重后的數(shù)據(jù)段;建立所述虛擬LBA地址空間與所述物理數(shù)據(jù)去重后的數(shù)據(jù)段的對(duì)應(yīng)關(guān)系;根據(jù)所述對(duì)應(yīng)關(guān)系和數(shù)據(jù)段的元數(shù)據(jù)信息,獲取外部數(shù)據(jù)讀寫請(qǐng)求指向的虛擬 LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)的存放位置信息,完成I/O重定向。在所述刪除指定虛擬LBA地址空間所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)中的重復(fù)數(shù)據(jù)的步驟之前還包括設(shè)置重復(fù)數(shù)據(jù)刪除策略及重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元。所述刪除指定虛擬LBA地址空間所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)中的重復(fù)數(shù)據(jù)的步驟具體包括根據(jù)所述重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元,從虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)中提取用于重復(fù)數(shù)據(jù)刪除的指定長(zhǎng)度數(shù)據(jù);根據(jù)所述重復(fù)數(shù)據(jù)刪除策略,將所述指定長(zhǎng)度數(shù)據(jù)按照所述重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元,分割成指定大小的數(shù)據(jù)段;計(jì)算所述指定大小的數(shù)據(jù)段的數(shù)據(jù)指紋,并與數(shù)據(jù)指紋庫(kù)中存儲(chǔ)的數(shù)據(jù)指紋進(jìn)行比較,根據(jù)數(shù)據(jù)指紋相同的比較結(jié)果,刪除實(shí)際物理數(shù)據(jù)中的重復(fù)數(shù)據(jù)。所述獲得所述物理數(shù)據(jù)去重后的數(shù)據(jù)段的步驟還包括更新所述物理數(shù)據(jù)去重后的數(shù)據(jù)段的元數(shù)據(jù)。所述重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元為塊的整數(shù)倍、比特位的整數(shù)倍或字節(jié)的整數(shù)倍。所述塊級(jí)虛擬化存儲(chǔ)設(shè)備的結(jié)構(gòu)為帶內(nèi)或者帶外體系架構(gòu)。本發(fā)明提供了一種塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的系統(tǒng),所述系統(tǒng)包括虛擬LUN設(shè)備,用于提供給前端主機(jī)掛載和使用;重復(fù)數(shù)據(jù)刪除模塊,用于刪除指定虛擬LBA地址空間所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)中的重復(fù)數(shù)據(jù),獲得去重后的數(shù)據(jù)段;全局元數(shù)據(jù)管理模塊,用于建立所述虛擬LBA地址空間與所述去重后的數(shù)據(jù)段的對(duì)應(yīng)關(guān)系,管理和更新全局元數(shù)據(jù)池設(shè)備中的元數(shù)據(jù),以及根據(jù)接收到的虛擬LBA地址空間、所述對(duì)應(yīng)關(guān)系和去重后的數(shù)據(jù)段的元數(shù)據(jù)信息,獲取所述虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)的存放位置信息,并發(fā)送所述存放位置信息;全局元數(shù)據(jù)池設(shè)備,用于存儲(chǔ)所述全局元數(shù)據(jù)管理模塊建立的對(duì)應(yīng)關(guān)系信息及所述重復(fù)數(shù)據(jù)刪除模塊獲得的去重后數(shù)據(jù)段的元數(shù)據(jù)信息;存儲(chǔ)虛擬化模塊,用于將外部數(shù)據(jù)讀寫I/O請(qǐng)求的虛擬LBA地址空間發(fā)送給所述全局元數(shù)據(jù)管理模塊,以及接收所述全局元數(shù)據(jù)管理模塊發(fā)送的所述虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)的存放位置信息,完成I/O重定向;物理LUN設(shè)備,用于存放實(shí)際物理數(shù)據(jù)。所述重復(fù)數(shù)據(jù)刪除模塊包括設(shè)置單元,用于設(shè)置重復(fù)數(shù)據(jù)刪除策略及重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元;
獲取單元,用于獲取指定虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)存放位置信息;提取單元,用于根據(jù)從所述獲取單元獲取的實(shí)際物理數(shù)據(jù)存放位置信息,按照所述設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元,從所述物理LUN設(shè)備中提取用于重復(fù)數(shù)據(jù)刪除的指定長(zhǎng)度數(shù)據(jù);分割單元, 用于根據(jù)所述設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除策略,將所述提取單元提取出的指定長(zhǎng)度數(shù)據(jù),按照所述設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元,分割成指定大小的數(shù)據(jù)段;數(shù)據(jù)指紋庫(kù)單元,用于存儲(chǔ)數(shù)據(jù)指紋;重復(fù)數(shù)據(jù)刪除單元,用于計(jì)算所述分割單元分割的指定大小的數(shù)據(jù)段的數(shù)據(jù)指紋,并與所述數(shù)據(jù)指紋庫(kù)單元存儲(chǔ)的數(shù)據(jù)指紋進(jìn)行比較,發(fā)送比較結(jié)果;元數(shù)據(jù)管理及更新單元,用于接收所述比較結(jié)果,并在所述比較結(jié)果為數(shù)據(jù)指紋相同時(shí),將元數(shù)據(jù)更新的內(nèi)容和請(qǐng)求發(fā)送給所述全局元數(shù)據(jù)管理模塊。所述重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元為塊的整數(shù)倍、比特位的整數(shù)倍或字節(jié)的整數(shù)倍。本發(fā)明還提供了一種塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的系統(tǒng),所述系統(tǒng)包括虛擬LUN設(shè)備,用于提供給前端主機(jī)掛載和使用;存儲(chǔ)虛擬化元數(shù)據(jù)池設(shè)備,用于存儲(chǔ)虛擬LBA地址空間對(duì)應(yīng)的元數(shù)據(jù)信息;重復(fù)數(shù)據(jù)刪除元數(shù)據(jù)池設(shè)備,用于存儲(chǔ)重復(fù)數(shù)據(jù)刪除模塊去重后的數(shù)據(jù)段的元數(shù)據(jù)信息;重復(fù)數(shù)據(jù)刪除模塊,用于刪除指定虛擬LBA地址空間所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)中的重復(fù)數(shù)據(jù),獲得去重后的數(shù)據(jù)段,以及更新所述重復(fù)數(shù)據(jù)刪除元數(shù)據(jù)池設(shè)備中的元數(shù)據(jù)信息;全局元數(shù)據(jù)管理模塊,用于建立所述虛擬LBA地址空間與所述去重后的數(shù)據(jù)段的對(duì)應(yīng)關(guān)系,以及同步協(xié)調(diào)存儲(chǔ)虛擬化模塊和重復(fù)數(shù)據(jù)刪除模塊的元數(shù)據(jù)的更新及交互;存儲(chǔ)虛擬化模塊,用于根據(jù)所述全局元數(shù)據(jù)管理模塊建立的對(duì)應(yīng)關(guān)系和所述重復(fù)數(shù)據(jù)刪除模塊去重后的數(shù)據(jù)段的元數(shù)據(jù)信息,獲取外部數(shù)據(jù)讀寫請(qǐng)求指向的虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)的存放位置信息,完成I/O重定向,以及更新所述存儲(chǔ)虛擬化元數(shù)據(jù)池設(shè)備中的元數(shù)據(jù)信息;物理LUN設(shè)備,用于存放實(shí)際物理數(shù)據(jù)。所述重復(fù)數(shù)據(jù)刪除模塊包括設(shè)置單元,用于設(shè)置重復(fù)數(shù)據(jù)刪除策略及重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元;獲取單元,用于從所述物理LUN設(shè)備獲取指定虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)存放位置信息;提取單元,用于根據(jù)從所述獲取單元獲取的實(shí)際物理數(shù)據(jù)存放位置信息,按照所述設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元,從所述物理LUN設(shè)備中提取用于重復(fù)數(shù)據(jù)刪除的指定長(zhǎng)度數(shù)據(jù);分割單元,用于根據(jù)所述設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除策略,將所述提取單元提取出的指定長(zhǎng)度數(shù)據(jù),按照所述設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元,分割成指定大小的數(shù)據(jù)段; 數(shù)據(jù)指紋庫(kù)單元,用于存儲(chǔ)數(shù)據(jù)指紋;重復(fù)數(shù)據(jù)刪除單元,用于計(jì)算所述分割單元分割的指定大小的數(shù)據(jù)段的數(shù)據(jù)指紋,并與所述數(shù)據(jù)指紋庫(kù)單元存儲(chǔ)的數(shù)據(jù)指紋進(jìn)行比較,發(fā)送比較結(jié)果;元數(shù)據(jù)管理及更新單元,用于接收所述比較結(jié)果,并在所述比較結(jié)果為數(shù)據(jù)指紋相同時(shí),通過所述全局元數(shù)據(jù)管理模塊的協(xié)調(diào),更新去重后數(shù)據(jù)段的元數(shù)據(jù),發(fā)送給所述重復(fù)數(shù)據(jù)刪除元數(shù)據(jù)池設(shè)備。所述重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元為塊的整數(shù)倍、比特位的整數(shù)倍或字節(jié)的整數(shù)倍。與現(xiàn)有技術(shù)相比,本發(fā)明的上述技術(shù)方案的有益效果如下1、本發(fā)明提供的技術(shù)方案可以跨主機(jī)和存儲(chǔ)設(shè)備刪除重復(fù)數(shù)據(jù),實(shí)現(xiàn)更大范圍的重復(fù)數(shù)據(jù)刪除;2、本發(fā)明提供的技術(shù)方案不占用主機(jī)系統(tǒng)資源,從而保證了主機(jī)上運(yùn)行的業(yè)務(wù)程序可以平滑運(yùn)行;3、本發(fā)明提供的技術(shù)方案可以集中管理和保護(hù)重復(fù)數(shù)據(jù)刪除功能的元數(shù)據(jù),簡(jiǎn)化整個(gè)系統(tǒng)設(shè)計(jì)和實(shí)施。
圖1為本發(fā)明實(shí)施例1提供的塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的系統(tǒng)結(jié)構(gòu)示意圖;圖2為本發(fā)明實(shí)施例1塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的方法流程圖;圖3為本發(fā)明實(shí)施例1重復(fù)數(shù)據(jù)刪除模塊的結(jié)構(gòu)示意圖;圖4為本發(fā)明實(shí)施例1沒有部署重復(fù)數(shù)據(jù)刪除模塊的系統(tǒng)結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例1在部署重復(fù)數(shù)據(jù)刪除模塊后,還未刪除重復(fù)數(shù)據(jù)的系統(tǒng)結(jié)構(gòu)示意圖;圖6為本發(fā)明實(shí)施例1在部署重復(fù)數(shù)據(jù)刪除模塊后,部分?jǐn)?shù)據(jù)已經(jīng)去重的系統(tǒng)結(jié)構(gòu)示意圖;圖7為本發(fā)明實(shí)施例1在重復(fù)數(shù)據(jù)刪除后,在線數(shù)據(jù)讀、寫操作的系統(tǒng)結(jié)構(gòu)示意圖;圖8為本發(fā)明實(shí)施例1將全局元數(shù)據(jù)池設(shè)備與虛擬LUN設(shè)備合并統(tǒng)一管理元數(shù)據(jù)的系統(tǒng)結(jié)構(gòu)示意圖;圖9為本發(fā)明實(shí)施例1虛擬LBA地址空間與去重后數(shù)據(jù)段的對(duì)應(yīng)關(guān)系示意圖;圖10為本發(fā)明實(shí)施例2提供的塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的系統(tǒng)結(jié)構(gòu)示意圖;圖11為本發(fā)明實(shí)施例1提供的統(tǒng)一元數(shù)據(jù)管理系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了深入了解本發(fā)明,下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說明。目前在存儲(chǔ)虛擬化層部署和實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除功能主要集中在文件系統(tǒng)級(jí)虛擬化存儲(chǔ)設(shè)備范疇,例如專利 W02010/033961、PCT/US2009/057772、US2009/0204649 和 US2009/0204650中所記載的技術(shù)方案,而在塊級(jí)虛擬化存儲(chǔ)設(shè)備的虛擬化層上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除功能卻沒有記載和相關(guān)產(chǎn)品化實(shí)現(xiàn)。另一方面,在塊級(jí)虛擬化存儲(chǔ)設(shè)備的虛擬化層上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除功能并不容易,究其原因在于1、對(duì)一份實(shí)際數(shù)據(jù)的訪問存在多條邏輯上獨(dú)立的轉(zhuǎn)換和指向路徑,即一份實(shí)際數(shù)據(jù)對(duì)應(yīng)多份為不同數(shù)據(jù)管理與操作功能服務(wù)的元數(shù)據(jù)(如分別服務(wù)于存儲(chǔ)虛擬化和重復(fù)數(shù)據(jù)刪除功能),如果這些元數(shù)據(jù)的管理與更新沒有同步和協(xié)調(diào),可能導(dǎo)致數(shù)據(jù)訪問混亂, 甚至丟失。不同于傳統(tǒng)的在主機(jī)層中部署重復(fù)數(shù)據(jù)的刪除功能,要在虛擬化存儲(chǔ)設(shè)備的虛擬化層實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除功能,不可避免地會(huì)出現(xiàn)對(duì)一份物理數(shù)據(jù)的訪問存在多條邏輯上獨(dú)立 的轉(zhuǎn)換和重定向路徑。其一是虛擬LUN上虛擬LBA(Logical Block Address,邏輯塊地址)地址在主機(jī)層所展現(xiàn)的“虛擬”數(shù)據(jù),到物理存儲(chǔ)設(shè)備上的實(shí)際數(shù)據(jù)的轉(zhuǎn)換和指向路徑;其二是,重復(fù)數(shù)據(jù)刪除后,去重后的數(shù)據(jù)段(即重復(fù)數(shù)據(jù)刪除功能對(duì)應(yīng)的“虛擬”數(shù)據(jù)) 到其對(duì)應(yīng)的數(shù)據(jù)段引用的實(shí)際物理存放位置的轉(zhuǎn)換和指向路徑。以上這些數(shù)據(jù)訪問路徑的轉(zhuǎn)換和指向信息,在本發(fā)明中,被稱作虛擬LBA地址和數(shù)據(jù)段元數(shù)據(jù)??梢韵胂螅绻@些“虛擬”數(shù)據(jù)按照各自機(jī)制操作同一份實(shí)際數(shù)據(jù)并且沒有同步更新對(duì)應(yīng)的元數(shù)據(jù)信息,可能導(dǎo)致數(shù)據(jù)訪問混亂。舉例而言,在存儲(chǔ)設(shè)備層中某一份實(shí)際物理數(shù)據(jù)被映射到某虛擬LUN提供的部分虛擬LBA地址段中(即該物理數(shù)據(jù)包含在該虛擬 LBA地址段所映射的實(shí)際數(shù)據(jù)中),那么當(dāng)該物理數(shù)據(jù)被刪除重復(fù)數(shù)據(jù)后,其在原存儲(chǔ)位置 (實(shí)際LBA地址空間)的數(shù)據(jù)可能已經(jīng)不完整(部分或者全部數(shù)據(jù)可能已經(jīng)被合并到了對(duì)應(yīng)的數(shù)據(jù)段引用中),那么這時(shí),如果到達(dá)該虛擬LUN上虛擬LBA地址的I/O請(qǐng)求被重定向到該物理數(shù)據(jù)原實(shí)際LBA地址空間,會(huì)得到不完整或者無(wú)效數(shù)據(jù)。2、最小數(shù)據(jù)管理和操作單元不一致。塊級(jí)虛擬化存儲(chǔ)設(shè)備管理的最小數(shù)據(jù)單元通常是存儲(chǔ)介質(zhì)管理的最小數(shù)據(jù)單元, 該最小數(shù)據(jù)單元被稱之為塊(block),以磁盤為例,大小通常是512個(gè)字節(jié)(bytes),磁帶等其他存儲(chǔ)介質(zhì)類似。傳統(tǒng)的重復(fù)數(shù)據(jù)刪除技術(shù)中通常是以字節(jié)(byte)為最小操作單元,對(duì)待去重?cái)?shù)據(jù)分割和比較去重(理論上,也可以以位(bit)為最小單元對(duì)數(shù)據(jù)進(jìn)行分割和比較去重)。由于數(shù)據(jù)操作最小單元不一致,使得重復(fù)數(shù)據(jù)刪除技術(shù)不能在塊級(jí)虛擬化存儲(chǔ)設(shè)備的虛擬化層直接應(yīng)用。具體而言,在塊級(jí)虛擬化存儲(chǔ)設(shè)備上讀寫數(shù)據(jù)是塊為單位的,以磁盤為例,長(zhǎng)度是512個(gè)字節(jié);傳統(tǒng)的數(shù)據(jù)去重技術(shù)中,其待去重?cái)?shù)據(jù)通常是以一個(gè)字節(jié)為最小單位。如果將重復(fù)數(shù)據(jù)刪除技術(shù)直接應(yīng)用于塊級(jí)虛擬化存儲(chǔ)設(shè)備,那么可能導(dǎo)致原本數(shù)據(jù)去重前存儲(chǔ)在一個(gè)塊中的數(shù)據(jù)在數(shù)據(jù)去重后,可能分別放到至少兩個(gè)塊中存儲(chǔ)(如一個(gè)塊中前半部分?jǐn)?shù)據(jù)被放置在一個(gè)數(shù)據(jù)段引用中,后半部分?jǐn)?shù)據(jù)被放置在另一個(gè)數(shù)據(jù)段引用中)。這種拆分雖然可以滿足重復(fù)數(shù)據(jù)刪除功能的設(shè)計(jì)目的-最好的數(shù)據(jù)去重效果,但是會(huì)導(dǎo)致存儲(chǔ)虛擬化層從“虛擬”數(shù)據(jù)到實(shí)際數(shù)據(jù)指向路徑的錯(cuò)亂,主機(jī)層的數(shù)據(jù)丟失,因此傳統(tǒng)的重復(fù)數(shù)據(jù)刪除方法在塊級(jí)虛擬化存儲(chǔ)設(shè)備的虛擬化層上不能直接應(yīng)用。鑒于以上,本發(fā)明提供了一種在塊級(jí)虛擬化存儲(chǔ)設(shè)備的虛擬化層上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的方法,該方法通過獲得虛擬LBA地址空間到其對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)去重后所得的數(shù)據(jù)段的對(duì)應(yīng)關(guān)系,進(jìn)而根據(jù)該對(duì)應(yīng)關(guān)系信息及所對(duì)應(yīng)數(shù)據(jù)段的元數(shù)據(jù)信息,獲取該虛擬LBA 地址空間對(duì)應(yīng)的實(shí)際數(shù)據(jù)保存位置信息,完成I/O重定向。在本發(fā)明的具體實(shí)現(xiàn)中,需要設(shè)定重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元。
需要說明的是,在實(shí)際應(yīng)用中,塊級(jí)虛擬化存儲(chǔ)設(shè)備由于引入其它功能,可能會(huì)在一定程度上影響數(shù)據(jù)的虛擬LBA地址到其對(duì)應(yīng)實(shí)際物理數(shù)據(jù)存放位置的指向關(guān)系;換言之,二者可能不是典型存儲(chǔ)虛擬化設(shè)備中直接指向關(guān)系,而是需要經(jīng)過數(shù)次轉(zhuǎn)換的間接指向關(guān)系,比如有些塊級(jí)虛擬化存儲(chǔ)設(shè)備提供的虛擬層RAID,或者多級(jí)虛擬化(為了提高虛擬地址空間容量)等多個(gè)虛擬LUN之間互相映射的系統(tǒng)設(shè)計(jì)。然而無(wú)論哪種系統(tǒng)設(shè)計(jì),總可以獲得指定虛擬LUN上指定的數(shù)據(jù)虛擬LBA地址到其對(duì)應(yīng)實(shí)際物理數(shù)據(jù)存放位置的指向信息。另一方面,本發(fā)明所述方法和技術(shù)方案主要依賴于塊級(jí)虛擬化存儲(chǔ)設(shè)備所提供數(shù)據(jù)虛擬LBA地址到數(shù)據(jù)實(shí)際存放位置的指向信息,與該指向信息在虛擬化存儲(chǔ)設(shè)備上如何獲得并無(wú)直接關(guān)聯(lián),所以以上不同的虛擬化存儲(chǔ)設(shè)備的設(shè)計(jì)并不會(huì)影響到本發(fā)明中所述技術(shù)方案的應(yīng)用,不影響本發(fā)明保護(hù)的范疇。鑒于此,以下發(fā)明實(shí)施例的描述僅以典型存儲(chǔ)虛擬化系統(tǒng)設(shè)計(jì)為例,即數(shù)據(jù)的虛擬LBA地址到其對(duì)應(yīng)實(shí)際物理數(shù)據(jù)存放位置的指向是直接指向關(guān)系。另外,本發(fā)明所述方法的實(shí)施過程中,可以根據(jù)系統(tǒng)設(shè)計(jì)需要,將重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元設(shè)定到塊的整數(shù)倍級(jí)別、字節(jié)(byte)的整數(shù)倍級(jí)別或者比特位(bit)的整數(shù)倍級(jí)別。然而設(shè)定到字節(jié)和比特位的整數(shù)倍級(jí)別,雖然可以避免過多空間的浪費(fèi),但是卻大大增加了元數(shù)據(jù)的數(shù)據(jù)量,增加了元數(shù)據(jù)管理的難度。由于無(wú)論重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元統(tǒng)一到何種級(jí)別,僅關(guān)系到如何實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除功能的本身(即如何對(duì)指定長(zhǎng)度的數(shù)據(jù)進(jìn)行劃分和管理元數(shù)據(jù)),而不會(huì)影響到本發(fā)明的適用范圍-在塊級(jí)虛擬化存儲(chǔ)設(shè)備的虛擬化層實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的功能。因此,以下為了簡(jiǎn)化本發(fā)明實(shí)施例說明,僅以重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元設(shè)定到塊級(jí)別(即塊的一倍級(jí)別)為例。最后,由于本發(fā)明所提出方法實(shí)現(xiàn)的核心在于獲取數(shù)據(jù)虛擬LBA地址空間和該虛擬LBA地址空間所對(duì)應(yīng)實(shí)際物理數(shù)據(jù)去重后數(shù)據(jù)段的對(duì)應(yīng)關(guān)系信息及去重后數(shù)據(jù)段的元數(shù)據(jù)信息,而傳統(tǒng)的存儲(chǔ)虛擬化和重復(fù)數(shù)據(jù)刪除實(shí)現(xiàn)方法中,以上信息通常是保存在存儲(chǔ)虛擬化和重復(fù)數(shù)據(jù)刪除兩份元數(shù)據(jù)中的,且管理和更新由各自功能模塊完成并沒有同步機(jī)制,比如有關(guān)虛擬LBA地址的信息保存在存儲(chǔ)虛擬化的元數(shù)據(jù)中由存儲(chǔ)虛擬模塊負(fù)責(zé)管理和更新,而有關(guān)數(shù)據(jù)段的信息則保存在重復(fù)數(shù)據(jù)刪除元數(shù)據(jù)信息中由重復(fù)數(shù)據(jù)刪除模塊負(fù)責(zé)管理和更新。為了避免如上所述的元數(shù)據(jù)管理沖突,可以采用至少兩種系統(tǒng)實(shí)現(xiàn)本發(fā)明的設(shè)計(jì)目的。第一種系統(tǒng),即實(shí)施例1所闡述系統(tǒng),統(tǒng)一管理和更新全局元數(shù)據(jù)信息,服務(wù)于存儲(chǔ)虛擬化和重復(fù)數(shù)據(jù)刪除等功能的實(shí)現(xiàn);第二種系統(tǒng),即實(shí)施例2所闡述系統(tǒng),在整個(gè)系統(tǒng)級(jí)別的協(xié)調(diào)同步后,服務(wù)于不同功能的元數(shù)據(jù)信息分別由各自功能模塊管理和更新。 以下分別闡述這兩種系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié)。實(shí)施例1 統(tǒng)一元數(shù)據(jù)管理系統(tǒng)參見圖1,本發(fā)明實(shí)施例提供了一種塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的統(tǒng)一元數(shù)據(jù)管理系統(tǒng),該系統(tǒng)包括虛擬LUN設(shè)備,用于存儲(chǔ)虛擬化模塊提供給前端主機(jī)掛載和使用的虛擬存儲(chǔ)設(shè)備;
重復(fù)數(shù)據(jù)刪除模塊,用于刪除指定虛擬LBA地址空間所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)中的重復(fù)數(shù)據(jù),獲得去重后的數(shù)據(jù)段; 存儲(chǔ)虛擬化模塊,用于將外部數(shù)據(jù)讀寫I/O請(qǐng)求的虛擬LBA地址空間發(fā)送給全局元數(shù)據(jù)管理模塊,以及接收全局元數(shù)據(jù)管理模塊發(fā)送的虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)的存放位置信息,完成I/O重定向;全局元數(shù)據(jù)池設(shè)備,用于存儲(chǔ)全局元數(shù)據(jù)管理模塊建立的對(duì)應(yīng)關(guān)系信息及重復(fù)數(shù)據(jù)刪除模塊獲得的去重后數(shù)據(jù)段的元數(shù)據(jù)信息,是一個(gè)與虛擬LUN對(duì)應(yīng)的設(shè)備;如果采用后期重復(fù)數(shù)據(jù)刪除策略(如本發(fā)明實(shí)施例),那么對(duì)于尚未刪除重復(fù)數(shù)據(jù)的虛擬LBA地址空間,全局元數(shù)據(jù)池設(shè)備中還會(huì)保存該虛擬LBA地址空間與實(shí)際物理數(shù)據(jù)存放位置的對(duì)應(yīng)關(guān)系信息;在具體實(shí)現(xiàn)中,全局元據(jù)池設(shè)備可以是以一個(gè)文件或數(shù)據(jù)庫(kù)中的一張表等形式進(jìn)行保存和維護(hù);全局元數(shù)據(jù)管理模塊,用于建立虛擬LBA地址空間與去重后的數(shù)據(jù)段的對(duì)應(yīng)關(guān)系,創(chuàng)建和初始化全局元數(shù)據(jù)池設(shè)備,管理和更新全局元數(shù)據(jù)池設(shè)備中的元數(shù)據(jù),以及根據(jù)接收到的虛擬LBA地址空間、對(duì)應(yīng)關(guān)系和去重后的數(shù)據(jù)段的元數(shù)據(jù)信息,獲取虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)的存放位置信息,并發(fā)送存放位置信息;如果采用后期重復(fù)數(shù)據(jù)刪除策略(如本發(fā)明實(shí)施例),由于外部I/O所請(qǐng)求的虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)可能尚未去重,那么全局元數(shù)據(jù)管理模塊直接返回存放在全局元數(shù)據(jù)池設(shè)備中該虛擬 LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)存放位置信息;物理LUN設(shè)備,用于存放實(shí)際物理數(shù)據(jù)的存儲(chǔ)設(shè)備,通常是物理存儲(chǔ)設(shè)備層中一個(gè)較大的存儲(chǔ)介質(zhì)(如磁盤陣列等)上劃分出來(lái)的存儲(chǔ)邏輯單元,用邏輯單元號(hào)(即LUN) 進(jìn)行標(biāo)識(shí)。進(jìn)一步,重復(fù)數(shù)據(jù)刪除模塊包括,如圖3所示設(shè)置單元,用于設(shè)置重復(fù)數(shù)據(jù)刪除策略及重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元;重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元可以設(shè)置為塊的整數(shù)倍、比特位的整數(shù)倍或字節(jié)的整數(shù)倍。獲取單元,用于獲取指定虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)存放位置信息;提取單元,用于根據(jù)從獲取單元獲取的實(shí)際物理數(shù)據(jù)存放位置信息,按照設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元,從物理LUN設(shè)備中提取用于重復(fù)數(shù)據(jù)刪除的指定長(zhǎng)度數(shù)據(jù);分割單元,用于根據(jù)設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除策略,將提取單元提取出的指定長(zhǎng)度數(shù)據(jù),按照設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元,分割成指定大小的數(shù)據(jù)段;數(shù)據(jù)指紋庫(kù)單元,用于存儲(chǔ)數(shù)據(jù)指紋;重復(fù)數(shù)據(jù)刪除過程中,通過新產(chǎn)生的數(shù)據(jù)指紋與數(shù)據(jù)指紋庫(kù)中的數(shù)據(jù)指紋比較,從而實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除功能;重復(fù)數(shù)據(jù)刪除單元,用于計(jì)算分割單元分割的指定大小的數(shù)據(jù)段的數(shù)據(jù)指紋,并與數(shù)據(jù)指紋庫(kù)單元存儲(chǔ)的數(shù)據(jù)指紋進(jìn)行比較,發(fā)送比較結(jié)果;元數(shù)據(jù)管理及更新單元,用于接收比較結(jié)果,并在比較結(jié)果為數(shù)據(jù)指紋相同時(shí),將元數(shù)據(jù)更新的內(nèi)容和請(qǐng)求發(fā)給全局元數(shù)據(jù)管理模塊,由全局元數(shù)據(jù)管理模塊結(jié)合數(shù)據(jù)去重過程中數(shù)據(jù)讀寫的情況及信息,更新每個(gè)去重后數(shù)據(jù)段的元數(shù)據(jù)。在實(shí)際應(yīng)用中,全局元數(shù)據(jù)管理模塊的功能還包括1)負(fù)責(zé)在數(shù)據(jù)讀寫時(shí),協(xié)調(diào)數(shù)據(jù)讀寫進(jìn)程和重復(fù)數(shù)據(jù)刪除進(jìn)程之間的沖突(如某虛擬LBA地址所指向的實(shí)際數(shù)據(jù)被數(shù)據(jù)讀寫進(jìn)程和重復(fù)數(shù)據(jù)刪除進(jìn)程同時(shí)請(qǐng)求);2)與重復(fù)數(shù)據(jù)刪除模塊交互,負(fù)責(zé)更新全局元數(shù)據(jù)池設(shè)備中去重后數(shù)據(jù)段的元數(shù)據(jù)信息,確保每個(gè)虛擬LBA地址對(duì)應(yīng)的元數(shù)據(jù)信息的有效性和一致性。在該系統(tǒng)中,全局元數(shù)據(jù)池設(shè)備和全局元數(shù)據(jù)管理模塊統(tǒng)一保存和管理整個(gè)系統(tǒng)所有功能對(duì)應(yīng)的元數(shù)據(jù),根據(jù)全局元數(shù)據(jù)池設(shè)備在整個(gè)系統(tǒng)所處的位置不同,整個(gè)系統(tǒng)可以有多種拓?fù)浣Y(jié)構(gòu)設(shè)計(jì),典型的如圖11和圖8所示;圖11中,有一個(gè)獨(dú)立于系統(tǒng)其它模塊和設(shè)備的元數(shù)據(jù)存儲(chǔ)設(shè)備(即全局元數(shù)據(jù)池設(shè)備),專用于保存和維護(hù)元數(shù)據(jù),服務(wù)于系統(tǒng)的各個(gè)功能;圖8中,則將全局元數(shù)據(jù)池設(shè)備與虛擬LUN設(shè)備合并。然而無(wú)論哪種拓?fù)浣Y(jié)構(gòu),其實(shí)現(xiàn)方法相似。下面以圖11的拓?fù)浣Y(jié)構(gòu)為例,描述整個(gè)系統(tǒng) 實(shí)現(xiàn)的細(xì)節(jié)。在該拓?fù)浣Y(jié)構(gòu)中,全局元數(shù)據(jù)池設(shè)備由全局元數(shù)據(jù)管理模塊統(tǒng)一管理和維護(hù),保存了整個(gè)系統(tǒng)所有元數(shù)據(jù),服務(wù)于系統(tǒng)的各個(gè)功能。為了簡(jiǎn)化說明,本實(shí)施例中僅以存儲(chǔ)虛擬化和重復(fù)數(shù)據(jù)刪除功能為例,其他功能如RAID等,因?qū)崿F(xiàn)方法類似,這里不再贅述;其它拓?fù)浣Y(jié)構(gòu)中,也將有與全局元數(shù)據(jù)管理模塊功能類似的模塊和機(jī)制,維護(hù)和管理元數(shù)據(jù),因?qū)崿F(xiàn)方式類似,這里亦不做討論。在具體實(shí)踐中,塊級(jí)虛擬化存儲(chǔ)設(shè)備的虛擬化有多種實(shí)現(xiàn)方式,典型的有帶內(nèi)架構(gòu)(in-band architecture),主要的商業(yè)化產(chǎn)品有 IBM SAN Volume Controller (SVC)、 IBM DS8000 系列、Hitachi VSP 系列、EMC VPLEX、DataCore SANsymphony-V,帶外架構(gòu) (out-of-band architecture),主要的商業(yè)化產(chǎn)品有EMCInvista等。但是無(wú)論哪種實(shí)現(xiàn)方式,其核心思想都是創(chuàng)建虛擬LUN供前端主機(jī)掛載和使用,將虛擬LUN上的虛擬LBA地址空間映射及轉(zhuǎn)換到對(duì)應(yīng)真實(shí)數(shù)據(jù)所存放的物理位置,實(shí)現(xiàn)到達(dá)虛擬LUN上數(shù)據(jù)讀寫1/0的重定向。由于本發(fā)明所述方法的實(shí)現(xiàn)主要依賴于虛擬化層的虛擬LUN及其元數(shù)據(jù),不會(huì)涉及到上述實(shí)現(xiàn)方式的差異(如數(shù)據(jù)路徑(data path)和控制路徑(control path)是否分離等),因此對(duì)于本發(fā)明而言,塊級(jí)虛擬化存儲(chǔ)設(shè)備虛擬化的各種實(shí)現(xiàn)方式均不會(huì)影響本發(fā)明的適用范圍。為了簡(jiǎn)化本發(fā)明的可行性描述,本發(fā)明實(shí)施例以帶內(nèi)塊級(jí)虛擬化存儲(chǔ)設(shè)備的虛擬化實(shí)現(xiàn)為例來(lái)說明。另一方面,在具體實(shí)現(xiàn)中,重復(fù)數(shù)據(jù)刪除技術(shù)也有多種實(shí)現(xiàn)方式,典型的有定長(zhǎng) (fixed-length dedup)、不定長(zhǎng)(variable-length dedup)禾口^昆合長(zhǎng)度(hybrid-length dedup)。但是無(wú)論哪種實(shí)現(xiàn)方式,其核心思想都是將指定長(zhǎng)度的數(shù)據(jù)按照預(yù)定的算法劃分出符合要求大小的數(shù)據(jù)段,通過計(jì)算這些數(shù)據(jù)段的指紋,比較去掉重復(fù)數(shù)據(jù),保留一份數(shù)據(jù)段引用。通過每個(gè)數(shù)據(jù)段的元數(shù)據(jù),完成所有到達(dá)指定數(shù)據(jù)段數(shù)據(jù)讀寫1/0的重定向。由于重復(fù)數(shù)據(jù)刪除技術(shù)的不同實(shí)現(xiàn)方式只會(huì)影響到有關(guān)重復(fù)數(shù)據(jù)刪除性能和效果等方面,而不會(huì)影響本發(fā)明的可行性,因此也不會(huì)影響到本發(fā)明對(duì)上述重復(fù)數(shù)據(jù)刪除解決方案的適用性。為了簡(jiǎn)化本發(fā)明可行性的描述,本發(fā)明實(shí)施例以變長(zhǎng)重復(fù)數(shù)據(jù)刪除技術(shù)為例來(lái)說明,定長(zhǎng)的重復(fù)數(shù)據(jù)刪除可以看作是變長(zhǎng)重復(fù)數(shù)據(jù)刪除實(shí)現(xiàn)的一個(gè)特例。另外,根據(jù)數(shù)據(jù)去重的時(shí)機(jī),重復(fù)數(shù)據(jù)刪除方案又可以劃分為在線實(shí)時(shí)數(shù)據(jù)去重 (in-line dedup)和后期去重(post-processing dedup)。同樣,由于這兩種方案僅會(huì)影響到整體系統(tǒng)性能和數(shù)據(jù)去重效果等方面,不會(huì)影響到本發(fā)明的可行性,所以也不會(huì)影響到本發(fā)明對(duì)上述數(shù)據(jù)去重解決方案的適用性。為了簡(jiǎn)化本發(fā)明可行性的描述,本發(fā)明實(shí)施例以后期去重(post-processing)解決方案為例來(lái)說明。 同時(shí),由于本發(fā)明的技術(shù)創(chuàng)新點(diǎn)在于將重復(fù)數(shù)據(jù)刪除解決方案應(yīng)用于塊級(jí)虛擬化存儲(chǔ)設(shè)備的虛擬化層上,而不是討論如何進(jìn)行重復(fù)數(shù)據(jù)刪除;并且,重復(fù)數(shù)據(jù)刪除技術(shù)已經(jīng)成熟,且已大規(guī)模商業(yè)應(yīng)用。所以,本發(fā)明實(shí)施例中有關(guān)重復(fù)數(shù)據(jù)刪除技術(shù)的實(shí)現(xiàn)細(xì)節(jié)如數(shù)據(jù)分割算法、數(shù)據(jù)指紋的計(jì)算和比較等細(xì)節(jié)將被略去,不做深入闡釋。總之,本發(fā)明實(shí)施例以在帶內(nèi)塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)施變長(zhǎng)、后期去重重復(fù)數(shù)據(jù)刪除功能為討論基礎(chǔ)。為了方便實(shí)施步驟描述,下面給出本發(fā)明實(shí)施例中的一些技術(shù)名詞解釋1.塊(block)-存儲(chǔ)介質(zhì)管理的最小數(shù)據(jù)單元,一個(gè)塊是連續(xù)的若干個(gè)字節(jié)或者比特位(a sequence of bytes or bits),通常有固定的長(zhǎng)度,以磁盤為例,大小通常是512 個(gè)字節(jié),磁帶等其他存儲(chǔ)介質(zhì)類似。2.數(shù)據(jù)段(data extent)-用于描述重復(fù)數(shù)據(jù)刪除功能的概念,是指重復(fù)數(shù)據(jù)刪除功能模塊在刪除重復(fù)數(shù)據(jù)前,按照預(yù)定算法(不同的重復(fù)數(shù)據(jù)刪除方案的數(shù)據(jù)段劃分方法也不同)將指定長(zhǎng)度的數(shù)據(jù)劃分成多個(gè)符合要求大小的數(shù)據(jù)段;通過計(jì)算這些數(shù)據(jù)段的指紋,比較它們的異同,實(shí)現(xiàn)刪除重復(fù)數(shù)據(jù)。重復(fù)數(shù)據(jù)刪除后,數(shù)據(jù)段則表示一個(gè)邏輯概念, 通過其對(duì)應(yīng)的數(shù)據(jù)段元數(shù)據(jù)信息,指向保存在其對(duì)應(yīng)的數(shù)據(jù)段引用中實(shí)際物理數(shù)據(jù)。3.數(shù)據(jù)段引用(data extent reference)-用于描述重復(fù)數(shù)據(jù)刪除功能的概念,是指在重復(fù)數(shù)據(jù)刪除后,對(duì)于內(nèi)容重復(fù)的數(shù)據(jù)段,僅保存一份它們的物理數(shù)據(jù)在指定存儲(chǔ)介質(zhì)上,且建立這些數(shù)據(jù)段到該份唯一物理數(shù)據(jù)拷貝的引用關(guān)系,這里被多個(gè)數(shù)據(jù)段所引用的唯一物理數(shù)據(jù)拷貝,稱作這些數(shù)據(jù)段對(duì)應(yīng)的數(shù)據(jù)段引用。4.數(shù)據(jù)段元數(shù)據(jù)(data extent metadata)-用于描述重復(fù)數(shù)據(jù)刪除功能的概念, 是指數(shù)據(jù)去重后,所保存的數(shù)據(jù)段與其對(duì)應(yīng)的數(shù)據(jù)段引用存放地址的引用信息(也稱指向信息或指針信息);該信息中還包含該數(shù)據(jù)段引用所保存的實(shí)際位置信息(如LUN所在物理設(shè)備位置和LUN上對(duì)應(yīng)的LBA地址等信息)。數(shù)據(jù)去重后,所有到達(dá)數(shù)據(jù)段的1/0都會(huì)根據(jù)該數(shù)據(jù)段對(duì)應(yīng)的元數(shù)據(jù)重定向到其對(duì)應(yīng)的數(shù)據(jù)段引用。5.虛擬LBA地址的元數(shù)據(jù)(virtual LBA address metadata)-服務(wù)于存儲(chǔ)虛擬化數(shù)據(jù)訪問1/0重定向功能,是指用于從指定虛擬LBA地址重定向到實(shí)際數(shù)據(jù)存儲(chǔ)位置的信息。該元數(shù)據(jù)信息可以根據(jù)系統(tǒng)的設(shè)計(jì)需要,包含不同的信息,如在虛擬層如果實(shí)現(xiàn)軟件 RAID或者多級(jí)虛擬化,那么該元數(shù)據(jù)將包含在加入這些功能之后,指定虛擬LBA地址重定向到實(shí)際數(shù)據(jù)保存位置所必需的信息。以本實(shí)施例而言,該元數(shù)據(jù)將包含以下信息指定的虛擬LBA地址所對(duì)應(yīng)的實(shí)際數(shù)據(jù)是否已經(jīng)去重,如果已經(jīng)去重,其所對(duì)應(yīng)的數(shù)據(jù)段及相對(duì)數(shù)據(jù)段頭部的偏移量;如果沒有去重,該虛擬LBA地址所對(duì)應(yīng)的實(shí)際數(shù)據(jù)存放位置的指向 fn息ο6.虛擬LUN元數(shù)據(jù)(virtual LUN metadata)-主要指虛擬LUN所包含的虛擬LBA 地址元數(shù)據(jù)的集合?,F(xiàn)實(shí)中,該元數(shù)據(jù)可以以一個(gè)文件或數(shù)據(jù)庫(kù)中的一張表等形式進(jìn)行保存和維護(hù)。7.存儲(chǔ)虛擬化元數(shù)據(jù)(storage visualization metadata)-主要包括至少一個(gè)虛擬LUN元數(shù)據(jù)及為虛擬LUN的其他功能(如RAID等)提供支持的信息。8.重復(fù)數(shù)據(jù)刪除元數(shù)據(jù)(data dedup metadata)-主要包括數(shù)據(jù)段的元數(shù)據(jù)及必要的支持元數(shù)據(jù)維護(hù)功能信息(如元數(shù)據(jù)存放的空間規(guī)劃與部署等)。參見圖1和圖2,基于統(tǒng)一元數(shù)據(jù)管理系統(tǒng),本發(fā)明實(shí)施例提供了一種塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的方法,包括以下步驟步驟101 在塊級(jí) 虛擬化存儲(chǔ)設(shè)備的虛擬化層,部署重復(fù)數(shù)據(jù)刪除模塊和全局元數(shù)據(jù)管理模塊,為指定虛擬LUN創(chuàng)建全局元數(shù)據(jù)池設(shè)備且將之初始化;根據(jù)實(shí)際系統(tǒng)需求,例如性能、功能和重復(fù)數(shù)據(jù)刪除比例目標(biāo)等,選擇數(shù)據(jù)去重方案,進(jìn)而根據(jù)所選擇的數(shù)據(jù)去重方案,部署相應(yīng)的重復(fù)數(shù)據(jù)刪除模塊;如上所述,本實(shí)施例選擇目前主流的變長(zhǎng)、后期數(shù)據(jù)去重方案;在重復(fù)數(shù)據(jù)刪除模塊部署之后,還要制定相應(yīng)的重復(fù)數(shù)據(jù)刪除策略,包括設(shè)定重復(fù)數(shù)據(jù)刪除引擎的啟動(dòng)時(shí)間(如在數(shù)據(jù)讀寫不頻繁的晚上)、設(shè)定數(shù)據(jù)去重空間回收的時(shí)間及周期等等;重復(fù)數(shù)據(jù)刪除策略的制定,往往與重復(fù)數(shù)據(jù)刪除模塊的功能設(shè)計(jì)有關(guān),不同的數(shù)據(jù)去重方案可能導(dǎo)致其對(duì)應(yīng)的重復(fù)數(shù)據(jù)刪除策略不同;在部署完重復(fù)數(shù)據(jù)刪除模塊后,再部署全局元數(shù)據(jù)管理模塊;然后,由全局元數(shù)據(jù)管理模塊對(duì)指定虛擬LUN創(chuàng)建一個(gè)對(duì)應(yīng)的全局元數(shù)據(jù)池,在具體實(shí)現(xiàn)中,可以為每個(gè)虛擬 LUN創(chuàng)建一個(gè)獨(dú)占的全局元數(shù)據(jù)池,也可以使之與其他虛擬LUN共用一個(gè)全局元數(shù)據(jù)池;由于兩者實(shí)現(xiàn)方法相似,因此本發(fā)明實(shí)施例僅以為每個(gè)虛擬LUN創(chuàng)建一個(gè)獨(dú)占的全局元數(shù)據(jù)池為例進(jìn)行闡述;在全局元數(shù)據(jù)池建立以后,全局元數(shù)據(jù)管理模塊需要對(duì)其進(jìn)行初始化,具體步驟如下1)針對(duì)一個(gè)確定的虛擬LUN,創(chuàng)建一個(gè)全局元數(shù)據(jù)池Dedup vLUN,全局元數(shù)據(jù)管理模塊通過存儲(chǔ)虛擬化模塊獲取該虛擬LUN上虛擬LBA地址空間及虛擬LBA地址空間到已分配的實(shí)際LBA地址空間指向信息,并將之一一復(fù)制到對(duì)應(yīng)的Dedup vLUN上;換言之,此時(shí)在虛擬LUN上每個(gè)確定的虛擬LBA地址,都可以在Dedup vLUN找到相同的虛擬LBA地址和對(duì)應(yīng)該虛擬LBA地址相同的到實(shí)際物理數(shù)據(jù)存放位置指向信息;如果虛擬LUN對(duì)應(yīng)的實(shí)際LBA 地址空間是動(dòng)態(tài)分配的(比如在使用精簡(jiǎn)配置的情況下),那么就在其分配后,將以上信息復(fù)制到Dedup vLUN上;2)初始狀態(tài)下,全局元數(shù)據(jù)池中的虛擬LBA地址所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)都未去重,使用“未去重”狀態(tài)標(biāo)識(shí)標(biāo)記這些虛擬LBA地址的元數(shù)據(jù);在全局元數(shù)據(jù)管理模塊和全局元數(shù)據(jù)池部署后,當(dāng)有數(shù)據(jù)訪問I/O到達(dá)虛擬LUN 上確定的虛擬LBA地址時(shí),存儲(chǔ)虛擬化模塊需要將該虛擬LBA地址傳輸給全局元數(shù)據(jù)管理模塊,由全局元數(shù)據(jù)管理模塊返回實(shí)際物理數(shù)據(jù)存放的位置信息給存儲(chǔ)虛擬化模塊,由存儲(chǔ)虛擬化模塊完成I/O重定向;對(duì)比圖4和圖5,可以反映出步驟101完成前后的變化圖4是沒有部署重復(fù)數(shù)據(jù)刪除功能模塊的系統(tǒng)結(jié)構(gòu)示意圖,從圖4中可以看出,存儲(chǔ)虛擬化就是將虛擬LUN上的虛擬 LBA地址映射到實(shí)際LUN(如圖4中的LUN A,LUN B, LUN C)的實(shí)際LBA地址,完成主機(jī)端發(fā)送過來(lái)的I/O請(qǐng)求的重定向;圖5是在部署重復(fù)數(shù)據(jù)刪除功能模塊后尚未刪除重復(fù)數(shù)據(jù)的系統(tǒng)示意圖,Dedup vLUN是對(duì)應(yīng)于虛擬LUN的全局元數(shù)據(jù)池;在步驟101中初始化完成后,虛擬LUN的虛擬LBA地址空間(通過全局元數(shù)據(jù)管理模塊)將和Dedup vLUN的虛擬LBA地址空間——對(duì)應(yīng),并且DedupvLUN還保存了對(duì)應(yīng)于這些虛擬LBA地址空間的實(shí)際物理數(shù)據(jù)存放位置信息;步驟102 設(shè)置單元設(shè)置重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元和重復(fù)數(shù)據(jù)刪除策略,根據(jù)重復(fù)數(shù)據(jù)刪除策略,刪除指定虛擬LBA地址空間所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)中的重復(fù)數(shù)據(jù),獲得物理數(shù)據(jù)去重后的數(shù)據(jù)段; 需要說明的是,本發(fā)明實(shí)施例中的虛擬LBA地址空間為一段虛擬LBA地址段,包含若干連續(xù)或者不連續(xù)的虛擬LBA地址;設(shè)置單元將重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元統(tǒng)一到塊級(jí)別,使之與存儲(chǔ)介質(zhì)的最小數(shù)據(jù)單元一致;根據(jù)設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除策略,刪除指定虛擬LBA地址空間所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)中的重復(fù)數(shù)據(jù),獲得物理數(shù)據(jù)去重后的數(shù)據(jù)段,具體包括以下子步驟1)重復(fù)數(shù)據(jù)刪除模塊中的獲取單元在與全局元數(shù)據(jù)管理模塊交互后,獲取未被去重的指定虛擬 LBA地址空間及其對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)存放位置信息;2)根據(jù)獲取單元所獲取的虛擬LBA 地址空間所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)存放位置信息,重復(fù)數(shù)據(jù)刪除模塊中的提取單元從該實(shí)際物理數(shù)據(jù)存放位置信息指定的物理位置按照塊的邊界,提取用于重復(fù)數(shù)據(jù)刪除的指定長(zhǎng)度數(shù)據(jù),即所提取數(shù)據(jù)的起始和終止位置必須是塊的邊界,該所提取數(shù)據(jù)長(zhǎng)度是塊長(zhǎng)度的整數(shù)倍;3)根據(jù)設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除策略,重復(fù)數(shù)據(jù)刪除模塊中的分割單元將提取出的指定長(zhǎng)度數(shù)據(jù)以塊為最小單位,分割成指定大小的數(shù)據(jù)段(每個(gè)切割后的數(shù)據(jù)段也是由至少一個(gè)完整的塊組成);4)重復(fù)數(shù)據(jù)刪除模塊中的重復(fù)數(shù)據(jù)刪除單元計(jì)算分割的指定大小的數(shù)據(jù)段的數(shù)據(jù)指紋,并與數(shù)據(jù)指紋庫(kù)單元存儲(chǔ)的數(shù)據(jù)指紋進(jìn)行比較去重,獲得指定虛擬LBA地址空間對(duì)應(yīng)的物理數(shù)據(jù)去重后的數(shù)據(jù)段;在步驟1)中,全局元數(shù)據(jù)管理模塊需要根據(jù)所保存的虛擬LBA地址空間的元數(shù)據(jù)中關(guān)于指定虛擬LBA地址是否已經(jīng)去重的信息,以及存儲(chǔ)虛擬化模塊的I/O請(qǐng)求情況,選定一段未被數(shù)據(jù)讀寫進(jìn)程占用的虛擬LBA地址,交予重復(fù)數(shù)據(jù)刪除模塊進(jìn)行重復(fù)數(shù)據(jù)刪除;步驟103 更新去重后的數(shù)據(jù)段的元數(shù)據(jù),建立虛擬LBA地址空間與去重后數(shù)據(jù)段的對(duì)應(yīng)關(guān)系,以及更新虛擬LBA地址空間所含虛擬LBA地址的元數(shù)據(jù);在步驟102完成后,根據(jù)數(shù)據(jù)去重后的結(jié)果,重復(fù)數(shù)據(jù)刪除模塊中的元數(shù)據(jù)管理及更新單元將元數(shù)據(jù)更新的內(nèi)容和請(qǐng)求發(fā)給全局元數(shù)據(jù)管理模塊,全局元數(shù)據(jù)管理模塊將綜合數(shù)據(jù)去重過程中數(shù)據(jù)讀寫的情況及信息,更新每個(gè)去重后數(shù)據(jù)段的元數(shù)據(jù);進(jìn)一步,根據(jù)數(shù)據(jù)去重的情況,全局元數(shù)據(jù)管理模塊建立用于數(shù)據(jù)去重的虛擬LBA 地址空間與其對(duì)應(yīng)實(shí)際物理數(shù)據(jù)去重后數(shù)據(jù)段的對(duì)應(yīng)關(guān)系;如圖9所示,數(shù)據(jù)的虛擬LBA地址空間對(duì)應(yīng)于物理LUN上的實(shí)際LBA地址空間,實(shí)際LBA地址空間保存的實(shí)際物理數(shù)據(jù)去重后,得到了數(shù)據(jù)段DE1、DE2、DE3,它們分別指向于數(shù)據(jù)段引用DI UDI 2,DI 1 ;從圖9中可以看出,通過對(duì)相同的數(shù)據(jù)去重前實(shí)際LBA地址空間的指向和對(duì)應(yīng)關(guān)系,可以將虛擬LBA 地址空間中每個(gè)虛擬LBA地址與數(shù)據(jù)段DE1、DE2、DE3中的每個(gè)塊一一對(duì)應(yīng)起來(lái)(因?yàn)檫@里重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元是塊,與存儲(chǔ)介質(zhì)的最小數(shù)據(jù)管理單元一致),圖中以雙箭頭表達(dá)了這種對(duì)應(yīng)關(guān)系,即vLai與DE2中C2是對(duì)應(yīng)的;待這種對(duì)應(yīng)關(guān)系建立起來(lái)以后,指定虛擬LBA地址的元數(shù)據(jù)將更新為,該虛擬LBA 地址所指向的實(shí)際物理數(shù)據(jù)是否已經(jīng)去重的標(biāo)識(shí);如果已經(jīng)去重,元數(shù)據(jù)還包括其所對(duì)應(yīng)的數(shù)據(jù)段及相對(duì)數(shù)據(jù)段頭部的偏移量;如果沒有去重(可能在數(shù)據(jù)去重過程中該虛擬LBA 地址對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)被寫,那么該虛擬LBA地址對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)去重過程無(wú)效, 具體詳見步驟104),則元數(shù)據(jù)包括該虛擬LBA地址所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)存放位置的指向fn息;在元數(shù)據(jù)更新 后,還需定期回收重復(fù)數(shù)據(jù)刪除后釋放出來(lái)新的物理空間,該物理空間回收的發(fā)起和執(zhí)行在不同的系統(tǒng)設(shè)計(jì)中可能有不同的選擇,比如,整個(gè)物理空間的管理可以由存儲(chǔ)虛擬化模塊負(fù)責(zé),其空間的回收也可以由它發(fā)起,由重復(fù)數(shù)據(jù)刪除模塊完成;對(duì)比圖5和圖6,可以看出步驟102和103完成前后的變化圖5是在部署重復(fù)數(shù)據(jù)刪除功能模塊后尚未刪除重復(fù)數(shù)據(jù)的系統(tǒng)示意圖,Dedup vLUN是對(duì)應(yīng)于虛擬LUN的全局元數(shù)據(jù)池;圖6是在重復(fù)數(shù)據(jù)刪除模塊部署后,部分?jǐn)?shù)據(jù)已經(jīng)去重的系統(tǒng)示意圖,數(shù)據(jù)去重后的數(shù)據(jù)段以Ci (i = 1,2,...,8,... η,η是自然數(shù))表示,其對(duì)應(yīng)的每個(gè)數(shù)據(jù)段的長(zhǎng)度(即其對(duì)應(yīng)的數(shù)據(jù)段引用實(shí)際LBA地址的長(zhǎng)度)= 1,2,...,8,...n,n是自然數(shù))表示, 對(duì)于變長(zhǎng)的重復(fù)數(shù)據(jù)刪除技術(shù)而言,每個(gè)數(shù)據(jù)段的長(zhǎng)度可能不同;為了描述方便,本實(shí)施例在存儲(chǔ)介質(zhì)上創(chuàng)建了一個(gè)名為“Dedup LUN"的物理LUN設(shè)備,用于存放數(shù)據(jù)去重后數(shù)據(jù)段所對(duì)應(yīng)的數(shù)據(jù)段引用;需要指出的是,本實(shí)施例中重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元已經(jīng)設(shè)置到塊級(jí)別,所以gi是存儲(chǔ)介質(zhì)塊長(zhǎng)度的整數(shù)倍,每個(gè)數(shù)據(jù)段對(duì)應(yīng)的數(shù)據(jù)段引用也是由數(shù)個(gè)完整的塊組成的;此時(shí),Dedup vLUN除了保存了一份與虛擬LUN —致的虛擬LBA地址空間,還需要保存每個(gè)虛擬LBA地址對(duì)應(yīng)的元數(shù)據(jù)信息及去重后數(shù)據(jù)段的元數(shù)據(jù)信息;步驟104 對(duì)到達(dá)虛擬LUN上某確定虛擬LBA地址空間的數(shù)據(jù)讀寫I/O請(qǐng)求,根據(jù)所保存的該虛擬LBA地址空間與去重后數(shù)據(jù)段的對(duì)應(yīng)關(guān)系及數(shù)據(jù)段的元數(shù)據(jù)信息,獲取實(shí)際物理數(shù)據(jù)的存放位置信息,完成虛擬化存儲(chǔ)設(shè)備數(shù)據(jù)讀寫I/O的重定向;需要說明的是,出于一般性考慮,本步驟的設(shè)計(jì)主要以去重后數(shù)據(jù)I/O的重定向?yàn)橛懻摶A(chǔ),這也是本發(fā)明嘗試解決的核心問題,對(duì)于外部數(shù)據(jù)I/O訪問的虛擬LBA地址對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)尚未去重的情況,如采取后期去重的重復(fù)數(shù)據(jù)刪除策略(如本發(fā)明實(shí)施例),與未部署重復(fù)數(shù)據(jù)刪除功能的虛擬化存儲(chǔ)設(shè)備類似,I/O重定向主要依據(jù)的是預(yù)存在虛擬LBA地址元數(shù)據(jù)中該虛擬LBA地址與實(shí)際物理數(shù)據(jù)保存位置的對(duì)應(yīng)信息,本發(fā)明實(shí)施例中關(guān)于指定虛擬LBA地址對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)是否去重的信息保存在虛擬LBA地址的元數(shù)據(jù)中備索;當(dāng)有外部數(shù)據(jù)訪問I/O請(qǐng)求到達(dá)指定虛擬LBA地址上時(shí),存儲(chǔ)虛擬化模塊將該虛擬LBA地址發(fā)送給全局元數(shù)據(jù)管理模塊,全局元數(shù)據(jù)管理模塊根據(jù)該虛擬LBA地址對(duì)應(yīng)的元數(shù)據(jù)信息,判斷該虛擬LBA地址對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)是否已經(jīng)被去重,如果未被去重,則返回該虛擬LBA地址對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)存放位置信息給存儲(chǔ)虛擬化模塊;如果已經(jīng)去重,根據(jù)該虛擬LBA地址的元數(shù)據(jù)信息(所對(duì)應(yīng)的數(shù)據(jù)段及相對(duì)數(shù)據(jù)段頭部的偏移量),及所對(duì)應(yīng)數(shù)據(jù)段的元數(shù)據(jù)信息(包含了其對(duì)應(yīng)的數(shù)據(jù)段引用的實(shí)際存放位置信息),通過以下計(jì)算(參看圖6),獲取實(shí)際物理數(shù)據(jù)的存放位置信息,返回給存儲(chǔ)虛擬化模塊假定主機(jī)數(shù)據(jù)讀寫I/O申請(qǐng)的虛擬LBA地址vLa在Dedup vLUN上對(duì)應(yīng)的物理數(shù)據(jù)已經(jīng)去重,對(duì)應(yīng)的是去重后數(shù)據(jù)段Ck中離頭部偏移量rLa的位置,因本發(fā)明實(shí)施例中,重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元是塊級(jí)別,所以rLa即為vLa在Ck中對(duì)應(yīng)位置相對(duì)其頭部的相對(duì)LBA地址長(zhǎng)度,所需獲取的vLa對(duì)應(yīng)的實(shí)際數(shù)據(jù)存放位置pLa,其實(shí)是Ck對(duì)應(yīng)的數(shù)據(jù)段弓丨用中某實(shí)際LBA地址,可以通過公式⑴獲得pLa = pAddrks+rLa (1)
其中,PAddrks是數(shù)據(jù)塊Ck對(duì)應(yīng)的數(shù)據(jù)段引用保存物理位置的起始LBA地址,該信息是數(shù)據(jù)去重后保存在數(shù)據(jù)段元數(shù)據(jù)中的已知信息;同時(shí),rLa也是在數(shù)據(jù)去重過程中保存在虛擬LBA地址元數(shù)據(jù)中的已知信息,所以,通過以上計(jì)算,可以獲取確定虛擬LBA地址 vLa對(duì)應(yīng)的實(shí)際數(shù)據(jù)存放位置信息pLa ; 在獲取全局元數(shù)據(jù)管理模塊返回的實(shí)際數(shù)據(jù)存放位置信息后,存儲(chǔ)虛擬化模塊便可以完成到達(dá)虛擬LUN數(shù)據(jù)讀寫I/O重定向和數(shù)據(jù)的實(shí)際讀寫,具體包括以下幾種情況1、重復(fù)數(shù)據(jù)刪除前,數(shù)據(jù)的讀寫操作;在全局元數(shù)據(jù)管理模塊創(chuàng)建和初始化Dedup vLUN后,所有虛擬LBA地址的元數(shù)據(jù)中已經(jīng)包含了其對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)的存放位置信息;因重復(fù)數(shù)據(jù)刪除前,所有到達(dá)虛擬LUN上確定虛擬LBA地址的數(shù)據(jù)讀寫I/O請(qǐng)求, 全局元數(shù)據(jù)管理模塊直接返回預(yù)先保存的該虛擬LBA地址對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)存放位置信息給存儲(chǔ)虛擬化模塊,進(jìn)而由存儲(chǔ)虛擬化模塊完成I/O的重定向,整個(gè)過程與無(wú)重復(fù)數(shù)據(jù)刪除功能的虛擬化存儲(chǔ)設(shè)備基本一致,所以這里不再贅述細(xì)節(jié);2、重復(fù)數(shù)據(jù)刪除后,數(shù)據(jù)的讀寫操作;數(shù)據(jù)去重后,虛擬LUN或者Dedup vLUN上將有至少一部分的虛擬LBA地址對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)被重構(gòu)到去重后的數(shù)據(jù)段中,這種變化使得虛擬LBA地址的轉(zhuǎn)換機(jī)制與傳統(tǒng)存儲(chǔ)虛擬化有所不同,但是對(duì)于主機(jī)層面的數(shù)據(jù)I/O訪問則是完全透明的;1)在線數(shù)據(jù)讀操作;重復(fù)數(shù)據(jù)刪除后,數(shù)據(jù)的讀操作過程與重復(fù)數(shù)據(jù)刪除前的數(shù)據(jù)讀操作有所不同, 如圖7所示假設(shè)有外部讀I/O請(qǐng)求被派送到了虛擬LUN上的一段虛擬LBA地址(即要訪問h到bn所映射的物理數(shù)據(jù)),該段虛擬LBA地址的數(shù)據(jù)讀請(qǐng)求由存儲(chǔ)虛擬化模塊發(fā)送給了全局元數(shù)據(jù)管理模塊,全局元數(shù)據(jù)管理模塊發(fā)現(xiàn)Dedup vLUN中相同的虛擬LBA地址段所對(duì)應(yīng)的物理數(shù)據(jù)已經(jīng)被去重,所對(duì)應(yīng)的去重后的數(shù)據(jù)段是C2到C6之間的部分?jǐn)?shù)據(jù)(即從C2 的第二個(gè)塊到C6的第二個(gè)塊之間的塊所對(duì)應(yīng)的數(shù)據(jù)),通過上述虛擬LBA地址的轉(zhuǎn)換過程后,獲知其對(duì)應(yīng)的實(shí)際數(shù)據(jù)存放的LBA地址(可能不連續(xù))并返回給存儲(chǔ)虛擬化模塊,存儲(chǔ)虛擬化模塊進(jìn)而從指定的物理位置提取數(shù)據(jù),返回給外部數(shù)據(jù)讀I/O請(qǐng)求;2)在線數(shù)據(jù)寫操作;重復(fù)數(shù)據(jù)刪除后,數(shù)據(jù)的寫操作過程與重復(fù)數(shù)據(jù)刪除前的數(shù)據(jù)寫操作有所不同, 如圖7所示假設(shè)有外部寫I/O請(qǐng)求被派送到了虛擬LUN上的一段虛擬LBA地址(即要訪問h到bn所映射的物理數(shù)據(jù)),進(jìn)而存儲(chǔ)虛擬化模塊將該虛擬LBA地址段的寫請(qǐng)求發(fā)給了全局元數(shù)據(jù)管理模塊,全局元數(shù)據(jù)管理模塊發(fā)現(xiàn)Dedup vLUN相同的虛擬LBA地址段所對(duì)應(yīng)的物理數(shù)據(jù)已經(jīng)被去重,所對(duì)應(yīng)的去重后的數(shù)據(jù)段是C2到C6之間的部分?jǐn)?shù)據(jù)(即從C2的第二個(gè)塊到C6的第二個(gè)塊之間的塊所對(duì)應(yīng)的數(shù)據(jù));那么,(1)全局元數(shù)據(jù)管理模塊通過存儲(chǔ)虛擬化模塊在后端存儲(chǔ)介質(zhì)上將為該次寫I/ 0分配新的存儲(chǔ)空間,并將新存儲(chǔ)空間位置信息返回給存儲(chǔ)虛擬化模塊,存儲(chǔ)虛擬化模塊進(jìn)而將外部寫I/O重定向到新分配的存儲(chǔ)位置,將數(shù)據(jù)寫入;(2)全局元數(shù)據(jù)管理模塊通過存儲(chǔ)虛擬化模塊在后端存儲(chǔ)介質(zhì)上分配新的存儲(chǔ)空間,由重復(fù)數(shù)據(jù)刪除模塊將該次寫I/O未影響的數(shù)據(jù)段中塊(即C2的第一個(gè)塊及C6的第三個(gè)塊)在數(shù)據(jù)段引用中對(duì)應(yīng)的實(shí)際數(shù)據(jù)拷貝到新分配的存儲(chǔ)位置,保存起來(lái);
(3)全局元數(shù)據(jù)管理模塊更新全局元數(shù)據(jù)池中數(shù)據(jù)段C2 C6對(duì)應(yīng)的虛擬LBA地址段的元數(shù)據(jù)信息①更新該次寫I/O所影響到的在Dedup vLUN上的虛擬LBA地址段元數(shù)據(jù)信息,將其對(duì)實(shí)際數(shù)據(jù)存放位置的指向信息更新為第(1)步中新分配的數(shù)據(jù)存儲(chǔ)位置; ②更新該次寫I/O所關(guān)聯(lián)數(shù)據(jù)段中未必影響的在Dedup vLUN上的虛擬LBA地址段 元數(shù)據(jù), 即C2的第一個(gè)塊及C6的第三個(gè)塊所對(duì)應(yīng)的虛擬LBA地址段的元數(shù)據(jù),將其對(duì)實(shí)際數(shù)據(jù)存放位置的指向信息更新到第(2)步中它們實(shí)際數(shù)據(jù)拷貝存放的位置;③將數(shù)據(jù)段C2到(6在 Dedup vLUN上所對(duì)應(yīng)的虛擬LBA地址段(要大于該次寫I/O所影響的虛擬LBA地址段)標(biāo)記為“未去重”狀態(tài),重復(fù)數(shù)據(jù)刪除模塊隨后按照預(yù)定的重復(fù)數(shù)據(jù)刪除策略將對(duì)之做去重處理;(4)根據(jù)預(yù)置的策略,定期回收(如果沒有其他數(shù)據(jù)段指向該物理數(shù)據(jù))存放在 Dedup LUN上原C2到C6之間的塊所指向的數(shù)據(jù)段引用占用物理空間;3、重復(fù)數(shù)據(jù)刪除過程中,數(shù)據(jù)的讀寫操作;這種情況是沖突的協(xié)調(diào)問題,由全局元數(shù)據(jù)管理模塊負(fù)責(zé);在重復(fù)數(shù)據(jù)刪除過程中,因全局元數(shù)據(jù)池中虛擬LBA地址的元數(shù)據(jù)尚未更新,所以數(shù)據(jù)讀寫I/O過程中將對(duì)所涉及的虛擬LBA地址的元數(shù)據(jù)更新將被全局元數(shù)據(jù)管理模塊鎖定;如果是數(shù)據(jù)讀1/0,那么在該I/O完成后,可以允許所涉及虛擬LBA地址的元數(shù)據(jù)更新,即將之對(duì)實(shí)際數(shù)據(jù)位置的指向信息,更新為,該虛擬LBA地址對(duì)應(yīng)實(shí)際數(shù)據(jù)已經(jīng)去重,及其所對(duì)應(yīng)的數(shù)據(jù)段及相對(duì)數(shù)據(jù)段頭部的偏移量;如果是數(shù)據(jù)寫1/0,需要根據(jù)重復(fù)數(shù)據(jù)刪除的進(jìn)展情況決定采取相應(yīng)的措施如果重復(fù)數(shù)據(jù)刪除進(jìn)程尚未完成,那么需要將重復(fù)數(shù)據(jù)刪除進(jìn)程(僅針對(duì)該寫I/O關(guān)聯(lián)虛擬 LBA地址段的重復(fù)數(shù)據(jù)刪除任務(wù))暫時(shí)掛起,待正常數(shù)據(jù)寫操作完成后,再重新啟動(dòng)(需要更新重復(fù)數(shù)據(jù)刪除目標(biāo)數(shù)據(jù));如果重復(fù)數(shù)據(jù)刪除已經(jīng)完成,需要更新對(duì)應(yīng)虛擬LBA地址 (該虛擬LBA地址長(zhǎng)度可能大于該次寫I/O所影響的虛擬LBA地址長(zhǎng)度)的元數(shù)據(jù),那么需要將該次寫I/O請(qǐng)求所關(guān)聯(lián)的去重后數(shù)據(jù)段對(duì)應(yīng)的全部虛擬LBA地址段的元數(shù)據(jù)標(biāo)記為未去重,保留其對(duì)實(shí)際數(shù)據(jù)存放位置的指向信息,待以后根據(jù)重復(fù)數(shù)據(jù)刪除策略,再刪除重復(fù)數(shù)據(jù)。實(shí)施例2 元數(shù)據(jù)分制式管理系統(tǒng)該系統(tǒng)與實(shí)施例1的區(qū)別在于該系統(tǒng)中沒有一個(gè)類似于實(shí)施例1的全局元數(shù)據(jù)池設(shè)備統(tǒng)一保存和管理整個(gè)系統(tǒng)的元數(shù)據(jù),取而代之的是虛擬LBA地址的元數(shù)據(jù)和數(shù)據(jù)去重后數(shù)據(jù)段的元數(shù)據(jù)分別由存儲(chǔ)虛擬化模塊和重復(fù)數(shù)據(jù)刪除模塊各自負(fù)責(zé)管理與更新,如圖10所示。但是,這兩份元數(shù)據(jù)的內(nèi)容與實(shí)施例1基本相同。同時(shí)為了保證元數(shù)據(jù)的一致性,全局元數(shù)據(jù)管理模塊在整個(gè)系統(tǒng)中發(fā)揮的作用與實(shí)施例1不再相同,即不再是主要負(fù)責(zé)初始化全局元數(shù)據(jù)池設(shè)備和統(tǒng)一元數(shù)據(jù)管理與更新,而是專注于存儲(chǔ)虛擬化和重復(fù)數(shù)據(jù)刪除模塊的元數(shù)據(jù)更新的同步協(xié)調(diào)與交互。參見圖10,本發(fā)明實(shí)施例還提供了一種塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的元數(shù)據(jù)分制式管理系統(tǒng),該系統(tǒng)包括虛擬LUN設(shè)備,用于提供給前端主機(jī)掛載和使用;存儲(chǔ)虛擬化元數(shù)據(jù)池設(shè)備,用于存儲(chǔ)虛擬LBA地址空間對(duì)應(yīng)的元數(shù)據(jù)信息;重復(fù)數(shù)據(jù)刪除元數(shù)據(jù)池設(shè)備,用于存儲(chǔ)重復(fù)數(shù)據(jù)刪除模塊去重后的數(shù)據(jù)段的元數(shù)據(jù)信息; 重復(fù)數(shù)據(jù)刪除模塊,用于刪除指定虛擬LBA地址空間所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)中的重復(fù)數(shù)據(jù),獲得去重后的數(shù)據(jù)段,以及更新重復(fù)數(shù)據(jù)刪除元數(shù)據(jù)池設(shè)備中的元數(shù)據(jù)信息;全局元數(shù)據(jù)管理模塊,用于建立虛擬LBA地址空間與去重后的數(shù)據(jù)段的對(duì)應(yīng)關(guān)系,以及同步協(xié)調(diào)存儲(chǔ)虛擬化模塊和重復(fù)數(shù)據(jù)刪除模塊的元數(shù)據(jù)的更新及交互;存儲(chǔ)虛擬化模塊,用于根據(jù)全局元數(shù)據(jù)管理模塊建立的對(duì)應(yīng)關(guān)系和重復(fù)數(shù)據(jù)刪除模塊去重后的數(shù)據(jù)段的元數(shù)據(jù)信息,獲取外部數(shù)據(jù)讀寫請(qǐng)求指向的虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)的存放位置信息,完成I/O重定向,以及更新存儲(chǔ)虛擬化元數(shù)據(jù)池設(shè)備中的元數(shù)據(jù)信息;物理LUN設(shè)備,用于存放實(shí)際物理數(shù)據(jù)。進(jìn)一步,重復(fù)數(shù)據(jù)刪除模塊包括設(shè)置單元,用于設(shè)置重復(fù)數(shù)據(jù)刪除策略及重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元;重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元為塊的整數(shù)倍、比特位的整數(shù)倍或字節(jié)的整數(shù)倍;獲取單元,用于獲取指定虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)存放位置信息;提取單元,用于根據(jù)從獲取單元獲取的實(shí)際物理數(shù)據(jù)存放位置信息,按照設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元,從物理LUN設(shè)備中提取用于重復(fù)數(shù)據(jù)刪除的指定長(zhǎng)度數(shù)據(jù);分割單元,用于根據(jù)設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除策略,將提取單元提取出的指定長(zhǎng)度數(shù)據(jù),按照設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元,分割成指定大小的數(shù)據(jù)段;數(shù)據(jù)指紋庫(kù)單元,用于存儲(chǔ)數(shù)據(jù)指紋;重復(fù)數(shù)據(jù)刪除過程中,通過新產(chǎn)生的數(shù)據(jù)指紋與數(shù)據(jù)指紋庫(kù)中的數(shù)據(jù)指紋比較,從而實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除功能;重復(fù)數(shù)據(jù)刪除單元,用于計(jì)算分割單元分割的指定大小的數(shù)據(jù)段的數(shù)據(jù)指紋,并與數(shù)據(jù)指紋庫(kù)單元存儲(chǔ)的數(shù)據(jù)指紋進(jìn)行比較,發(fā)送比較結(jié)果;元數(shù)據(jù)管理及更新單元,用于接收比較結(jié)果,并在比較結(jié)果為數(shù)據(jù)指紋相同時(shí),通過全局元數(shù)據(jù)管理模塊的協(xié)調(diào),更新去重后數(shù)據(jù)段的元數(shù)據(jù),發(fā)送給重復(fù)數(shù)據(jù)刪除元數(shù)據(jù)池設(shè)備。本實(shí)施例與實(shí)施例1系統(tǒng)的區(qū)別還體現(xiàn)在如下幾點(diǎn)1)元數(shù)據(jù)的保存與更新虛擬LBA地址元數(shù)據(jù)和去重后數(shù)據(jù)段元數(shù)據(jù)的保存位置不再是全局元數(shù)據(jù)池設(shè)備,而是由存儲(chǔ)虛擬化元數(shù)據(jù)池設(shè)備和重復(fù)數(shù)據(jù)刪除元數(shù)據(jù)池設(shè)備分別存儲(chǔ);元數(shù)據(jù)的更新也不是由全局元數(shù)據(jù)管理模塊完成,而是分別由存儲(chǔ)虛擬化和重復(fù)數(shù)據(jù)刪除模塊完成; 但是元數(shù)據(jù)內(nèi)容及元數(shù)據(jù)更新過程中全局元數(shù)據(jù)管理模塊的同步協(xié)調(diào)機(jī)制與實(shí)施例1基本相同。2)元數(shù)據(jù)的獲取獲取指定虛擬LBA地址元數(shù)據(jù)的請(qǐng)求,由存儲(chǔ)虛擬化模塊在與全局元數(shù)據(jù)管理模塊交互后,從存儲(chǔ)虛擬化元數(shù)據(jù)池設(shè)備中獲取;存儲(chǔ)虛擬化模塊根據(jù)虛擬LBA地址元數(shù)據(jù)信息,如需獲取指定數(shù)據(jù)段元數(shù)據(jù),將該請(qǐng)求發(fā)送給全局元數(shù)據(jù)管理模塊,由全局元數(shù)據(jù)管理模塊在與重復(fù)數(shù)據(jù)刪除模塊交互后,由重復(fù)數(shù)據(jù)刪除模塊從重復(fù)數(shù)據(jù)刪除元數(shù)據(jù)池設(shè)備中獲得,并由全局元數(shù)據(jù)管理模塊最終返回給存儲(chǔ)虛擬化模塊;該過程中所需獲取元數(shù)據(jù)的內(nèi)容與實(shí)施例1相似。基于元數(shù)據(jù)分制式管理架構(gòu),本實(shí)施例提供的塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的方法與實(shí)施例1區(qū)別如下步驟101':在塊 級(jí)虛擬化存儲(chǔ)設(shè)備的虛擬化層,部署重復(fù)數(shù)據(jù)刪除模塊和全局元數(shù)據(jù)管理模塊;與實(shí)施例1不同,本步驟中全局元數(shù)據(jù)管理模塊不需要?jiǎng)?chuàng)建和初始化全局元數(shù)據(jù)池設(shè)備;除了本步驟,本實(shí)施例的其他實(shí)施細(xì)節(jié)與實(shí)施例1基本一致,這里不再贅述。 本發(fā)明實(shí)施例提供的技術(shù)方案可以跨主機(jī)和存儲(chǔ)設(shè)備刪除重復(fù)數(shù)據(jù),實(shí)現(xiàn)更大范圍的重復(fù)數(shù)據(jù)刪除;本發(fā)明實(shí)施例提供的技術(shù)方案不占用主機(jī)系統(tǒng)資源,從而保證了主機(jī)上運(yùn)行的業(yè)務(wù)程序可以平滑運(yùn)行;本發(fā)明實(shí)施例提供的技術(shù)方案可以集中管理和保護(hù)重復(fù)數(shù)據(jù)刪除功能的元數(shù)據(jù),簡(jiǎn)化整個(gè)系統(tǒng)設(shè)計(jì)和實(shí)施。 以上所述的具體實(shí)施方式
,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施方式
而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的方法,其特征在于,所述方法包括刪除指定虛擬LBA地址空間所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)中的重復(fù)數(shù)據(jù),獲得所述物理數(shù)據(jù)去重后的數(shù)據(jù)段;建立所述虛擬LBA地址空間與所述物理數(shù)據(jù)去重后的數(shù)據(jù)段的對(duì)應(yīng)關(guān)系; 根據(jù)所述對(duì)應(yīng)關(guān)系和數(shù)據(jù)段的元數(shù)據(jù)信息,獲取外部數(shù)據(jù)讀寫請(qǐng)求指向的虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)的存放位置信息,完成I/O重定向。
2.如權(quán)利要求1所述的塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的方法,其特征在于,在所述刪除指定虛擬LBA地址空間所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)中的重復(fù)數(shù)據(jù)的步驟之前包括設(shè)置重復(fù)數(shù)據(jù)刪除策略及重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元。
3.如權(quán)利要求2所述的塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的方法,其特征在于,所述刪除指定虛擬LBA地址空間所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)中的重復(fù)數(shù)據(jù)的步驟具體包括根據(jù)所述重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元,從虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)中提取用于重復(fù)數(shù)據(jù)刪除的指定長(zhǎng)度數(shù)據(jù);根據(jù)所述重復(fù)數(shù)據(jù)刪除策略,將所述指定長(zhǎng)度數(shù)據(jù)按照所述重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元,分割成指定大小的數(shù)據(jù)段;計(jì)算所述指定大小的數(shù)據(jù)段的數(shù)據(jù)指紋,并與數(shù)據(jù)指紋庫(kù)中存儲(chǔ)的數(shù)據(jù)指紋進(jìn)行比較,根據(jù)數(shù)據(jù)指紋相同的比較結(jié)果,刪除實(shí)際物理數(shù)據(jù)中的重復(fù)數(shù)據(jù)。
4.如權(quán)利要求3所述的塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的方法,其特征在于,所述獲得所述物理數(shù)據(jù)去重后的數(shù)據(jù)段的步驟還包括更新所述物理數(shù)據(jù)去重后的數(shù)據(jù)段的元數(shù)據(jù)。
5.如權(quán)利要求4所述的塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的方法,其特征在于,所述重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元為塊的整數(shù)倍、比特位的整數(shù)倍或字節(jié)的整數(shù)倍。
6.如權(quán)利要求1-5中任一所述的塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的方法,其特征在于,所述塊級(jí)虛擬化存儲(chǔ)設(shè)備的結(jié)構(gòu)為帶內(nèi)或者帶外體系架構(gòu)。
7.一種塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的系統(tǒng),其特征在于,所述系統(tǒng)包括虛擬LUN設(shè)備,用于提供給前端主機(jī)掛載和使用;重復(fù)數(shù)據(jù)刪除模塊,用于刪除指定虛擬LBA地址空間所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)中的重復(fù)數(shù)據(jù),獲得去重后的數(shù)據(jù)段;全局元數(shù)據(jù)管理模塊,用于建立所述虛擬LBA地址空間與所述去重后的數(shù)據(jù)段的對(duì)應(yīng)關(guān)系,管理和更新全局元數(shù)據(jù)池設(shè)備中的元數(shù)據(jù),以及根據(jù)接收到的虛擬LBA地址空間、所述對(duì)應(yīng)關(guān)系和去重后的數(shù)據(jù)段的元數(shù)據(jù)信息,獲取所述虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)的存放位置信息,并發(fā)送所述存放位置信息;全局元數(shù)據(jù)池設(shè)備,用于存儲(chǔ)所述全局元數(shù)據(jù)管理模塊建立的對(duì)應(yīng)關(guān)系信息及所述重復(fù)數(shù)據(jù)刪除模塊獲得的去重后數(shù)據(jù)段的元數(shù)據(jù)信息;存儲(chǔ)虛擬化模塊,用于將外部數(shù)據(jù)讀寫I/O請(qǐng)求的虛擬LBA地址空間發(fā)送給所述全局元數(shù)據(jù)管理模塊,以及接收所述全局元數(shù)據(jù)管理模塊發(fā)送的所述虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)的存放位置信息,完成I/O重定向; 物理LUN設(shè)備,用于存放實(shí)際物理數(shù)據(jù)。
8.如權(quán)利要求7所述的塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的系統(tǒng),其特征在于,所述重復(fù)數(shù)據(jù)刪除模塊包括設(shè)置單元,用于設(shè)置重復(fù)數(shù)據(jù)刪除策略及重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元; 獲取單元,用于獲取指定虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)存放位置信息; 提取單元,用于根據(jù)從所述獲取單元獲取的實(shí)際物理數(shù)據(jù)存放位置信息,按照所述設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元,從所述物理LUN設(shè)備中提取用于重復(fù)數(shù)據(jù)刪除的指定長(zhǎng)度數(shù)據(jù);分割單元,用于根據(jù)所述設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除策略,將所述提取單元提取出的指定長(zhǎng)度數(shù)據(jù),按照所述設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元,分割成指定大小的數(shù)據(jù)段;數(shù)據(jù)指紋庫(kù)單元,用于存儲(chǔ)數(shù)據(jù)指紋;重復(fù)數(shù)據(jù)刪除單元,用于計(jì)算所述分割單元分割的指定大小的數(shù)據(jù)段的數(shù)據(jù)指紋,并與所述數(shù)據(jù)指紋庫(kù)單元存儲(chǔ)的數(shù)據(jù)指紋進(jìn)行比較,發(fā)送比較結(jié)果;元數(shù)據(jù)管理及更新單元,用于接收所述比較結(jié)果,并在所述比較結(jié)果為數(shù)據(jù)指紋相同時(shí),將元數(shù)據(jù)更新的內(nèi)容和請(qǐng)求發(fā)送給所述全局元數(shù)據(jù)管理模塊。
9.如權(quán)利要求8所述的塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的系統(tǒng),其特征在于,所述重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元為塊的整數(shù)倍、比特位的整數(shù)倍或字節(jié)的整數(shù)倍。
10.一種塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的系統(tǒng),其特征在于,所述系統(tǒng)包括虛擬LUN設(shè)備,用于提供給前端主機(jī)掛載和使用;存儲(chǔ)虛擬化元數(shù)據(jù)池設(shè)備,用于存儲(chǔ)虛擬LBA地址空間對(duì)應(yīng)的元數(shù)據(jù)信息; 重復(fù)數(shù)據(jù)刪除元數(shù)據(jù)池設(shè)備,用于存儲(chǔ)重復(fù)數(shù)據(jù)刪除模塊去重后的數(shù)據(jù)段的元數(shù)據(jù)信息;重復(fù)數(shù)據(jù)刪除模塊,用于刪除指定虛擬LBA地址空間所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)中的重復(fù)數(shù)據(jù),獲得去重后的數(shù)據(jù)段,以及更新所述重復(fù)數(shù)據(jù)刪除元數(shù)據(jù)池設(shè)備中的元數(shù)據(jù)信息;全局元數(shù)據(jù)管理模塊,用于建立所述虛擬LBA地址空間與所述去重后的數(shù)據(jù)段的對(duì)應(yīng)關(guān)系,以及同步協(xié)調(diào)存儲(chǔ)虛擬化模塊和重復(fù)數(shù)據(jù)刪除模塊的元數(shù)據(jù)的更新及交互;存儲(chǔ)虛擬化模塊,用于根據(jù)所述全局元數(shù)據(jù)管理模塊建立的對(duì)應(yīng)關(guān)系和所述重復(fù)數(shù)據(jù)刪除模塊去重后的數(shù)據(jù)段的元數(shù)據(jù)信息,獲取外部數(shù)據(jù)讀寫請(qǐng)求指向的虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)的存放位置信息,完成I/O重定向,以及更新所述存儲(chǔ)虛擬化元數(shù)據(jù)池設(shè)備中的元數(shù)據(jù)信息;物理LUN設(shè)備,用于存放實(shí)際物理數(shù)據(jù)。
11.如權(quán)利要求10所述的塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的系統(tǒng),其特征在于,所述重復(fù)數(shù)據(jù)刪除模塊包括設(shè)置單元,用于設(shè)置重復(fù)數(shù)據(jù)刪除策略及重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元; 獲取單元,用于獲取指定虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)存放位置信息; 提取單元,用于根據(jù)從所述獲取單元獲取的實(shí)際物理數(shù)據(jù)存放位置信息,按照所述設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元,從所述物理LUN設(shè)備中提取用于重復(fù)數(shù)據(jù)刪除的指定長(zhǎng)度數(shù)據(jù);分割單元,用于根據(jù)所述設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除策略,將所述提取單元提取出的指定長(zhǎng)度數(shù)據(jù),按照所述設(shè)置單元設(shè)置的重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元,分割成指定大小的數(shù)據(jù)段;數(shù)據(jù)指紋庫(kù)單元,用于存儲(chǔ)數(shù)據(jù)指紋;重復(fù)數(shù)據(jù)刪除單元,用于計(jì)算所述分割單元分割的指定大小的數(shù)據(jù)段的數(shù)據(jù)指紋,并與所述數(shù)據(jù)指紋庫(kù)單元存儲(chǔ)的數(shù)據(jù)指紋進(jìn)行比較,發(fā)送比較結(jié)果;元數(shù)據(jù)管理及更新單元,用于接收所述比較結(jié)果,并在所述比較結(jié)果為數(shù)據(jù)指紋相同時(shí),通過所述全局元數(shù)據(jù)管理模塊的協(xié)調(diào),更新去重后數(shù)據(jù)段的元數(shù)據(jù),發(fā)送給所述重復(fù)數(shù)據(jù)刪除元數(shù)據(jù)池設(shè)備。
12.如權(quán)利要求11所述的塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的系統(tǒng),其特征在于,所述重復(fù)數(shù)據(jù)刪除最小數(shù)據(jù)操作單元為塊的整數(shù)倍、比特位的整數(shù)倍或字節(jié)的整數(shù)倍。
全文摘要
本發(fā)明公開了一種塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的方法及系統(tǒng),屬于數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域。所述方法包括刪除指定虛擬LBA地址空間所對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)中的重復(fù)數(shù)據(jù),獲得物理數(shù)據(jù)去重后的數(shù)據(jù)段;建立虛擬LBA地址空間與物理數(shù)據(jù)去重后的數(shù)據(jù)段的對(duì)應(yīng)關(guān)系;根據(jù)對(duì)應(yīng)關(guān)系和數(shù)據(jù)段的元數(shù)據(jù)信息,獲取外部數(shù)據(jù)讀寫請(qǐng)求指向的虛擬LBA地址空間對(duì)應(yīng)的實(shí)際物理數(shù)據(jù)的存放位置信息,完成I/O重定向。本發(fā)明還提供了一種塊級(jí)虛擬化存儲(chǔ)設(shè)備上實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除的系統(tǒng)。本發(fā)明可以跨主機(jī)和存儲(chǔ)設(shè)備刪除重復(fù)數(shù)據(jù),實(shí)現(xiàn)更大范圍的重復(fù)數(shù)據(jù)刪除。
文檔編號(hào)G06F3/06GK102221982SQ201110156839
公開日2011年10月19日 申請(qǐng)日期2011年6月13日 優(yōu)先權(quán)日2011年6月13日
發(fā)明者劉慧 申請(qǐng)人:北京卓微天成科技咨詢有限公司