CN102221982B - 块级虚拟化存储设备上实现重复数据删除的方法及*** - Google Patents

块级虚拟化存储设备上实现重复数据删除的方法及*** Download PDF

Info

Publication number
CN102221982B
CN102221982B CN 201110156839 CN201110156839A CN102221982B CN 102221982 B CN102221982 B CN 102221982B CN 201110156839 CN201110156839 CN 201110156839 CN 201110156839 A CN201110156839 A CN 201110156839A CN 102221982 B CN102221982 B CN 102221982B
Authority
CN
China
Prior art keywords
data
duplication
metadata
lba address
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN 201110156839
Other languages
English (en)
Other versions
CN102221982A (zh
Inventor
刘慧�
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yuntian (Beijing) Data Technology Co., Ltd.
Original Assignee
Beijing Zhuowei Tiancheng Technology Consultation Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Zhuowei Tiancheng Technology Consultation Co Ltd filed Critical Beijing Zhuowei Tiancheng Technology Consultation Co Ltd
Priority to CN 201110156839 priority Critical patent/CN102221982B/zh
Priority to PCT/CN2011/077890 priority patent/WO2012171244A1/zh
Priority to US13/380,935 priority patent/US20120317084A1/en
Publication of CN102221982A publication Critical patent/CN102221982A/zh
Application granted granted Critical
Publication of CN102221982B publication Critical patent/CN102221982B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种块级虚拟化存储设备上实现重复数据删除的方法及***,属于数据存储技术领域。所述方法包括:删除指定虚拟LBA地址空间所对应的实际物理数据中的重复数据,获得物理数据去重后的数据段;建立虚拟LBA地址空间与物理数据去重后的数据段的对应关系;根据对应关系和数据段的元数据信息,获取外部数据读写请求指向的虚拟LBA地址空间对应的实际物理数据的存放位置信息,完成I/O重定向。本发明还提供了一种块级虚拟化存储设备上实现重复数据删除的***。本发明可以跨主机和存储设备删除重复数据,实现更大范围的重复数据删除。

Description

块级虚拟化存储设备上实现重复数据删除的方法及***
技术领域
本发明涉及数据存储技术领域,特别涉及一种块级虚拟化存储设备上实现重复数据删除的方法及***。
背景技术
在全球数据量平均每18~24个月便翻一倍和迫于法律要求企业数据保存期大幅增加的背景下,重复数据删除技术具有很重要的意义。该项技术是企业降低存储开销,进而降低IT开销,保持竞争力的重要手段之一。传统块级存储设备上的重复数据删除应用技术已经很成熟,且已进行大规模商用。
然而随着存储虚拟化技术的引入,存储***的整体架构有了很大的变化,这种变化主要表现在:虚拟化存储设备***架构在传统的存储体系结构中增加了一层虚拟化层,形成了具有主机层、虚拟化层和物理存储设备层(如JBOD、磁盘阵列等)的三层架构。主机层和物理存储设备层与传统的存储***完全一致,虚拟化层是一个软件层(或者是嵌入硬件内的软件功能模块)。在虚拟化层内置的软件将底端物理存储设备层中的同构或异构物理存储设备虚拟化成一个统一的存储设备池,通过构建物理LUN(Logical Unit Number,逻辑单元号)与虚拟LUN之间的对应关系,将虚拟LUN提供给前端主机挂载使用,消除了异构存储设备之间的差异,可以以统一界面管理所有存储资源,大大简化了存储管理和使用的成本;加之其所提供的精简配置(thin provisioning)、在线数据迁移(non-disruptive data migration)等功能,极大地提高了存储设备的使用效率。
随着存储虚拟化技术的使用深入,传统的重复数据删除解决方案在实施过程中也暴露了不足,具体表现在以下几个方面:
1、在主机层实现重复数据删除功能,要求用户在每台连接虚拟化存储设备的主机(host)上部署重复数据删除软件,进而对该主机上的重复数据进行删除。但是这种方法存在如下局限性:①重复数据删除范围仅限于每一个安装重复数据删除软件的主机及其所管理的数据,不能实现跨主机重复数据的删除;②在每台主机上都需要安装重复数据删除软件,由该软件执行的重复数据的指纹计算和比较需要消耗很多资源,会影响主机的性能。
2、在物理存储设备层实现重复数据删除功能,要求以存储虚拟化层为媒介,其所连接的全部或者部分存储设备自身需具有重复数据删除功能。但是这种方法存在如下局限性:①重复数据删除范围往往仅局限于某一特定存储设备内,而不能实现全数据范围的重复数据删除,影响整体重复数据删除的比例和效果;②异构存储设备之间的数据迁移需借助另外一个独立主机,将数据先还原后再迁移,影响数据迁移的性能;③不同的具有重复数据删除的存储设备所使用的元数据管理机制和策略不同,不易实现整合异构存储资源的统一管理。
发明内容
为了克服传统方法在虚拟化存储设备上实现重复数据删除功能方面所存在的局限性,本发明提出了一种块级虚拟化存储设备上的虚拟化层(非主机层和物理存储设备层)实现重复数据删除的方法,所述方法包括:
删除指定虚拟LBA地址空间所对应的实际物理数据中的重复数据,获得所述物理数据去重后的数据段;
建立所述虚拟LBA地址空间与所述物理数据去重后的数据段的对应关系;
根据所述对应关系和数据段的元数据信息,获取外部数据读写请求指向的虚拟LBA地址空间对应的实际物理数据的存放位置信息,完成I/O重定向;
在块级虚拟化存储设备的虚拟化层和物理层进行重复数据的删除。
在所述删除指定虚拟LBA地址空间所对应的实际物理数据中的重复数据的步骤之前还包括:设置重复数据删除策略及重复数据删除最小数据操作单元。
所述删除指定虚拟LBA地址空间所对应的实际物理数据中的重复数据的步骤具体包括:
根据所述重复数据删除最小数据操作单元,从虚拟LBA地址空间对应的实际物理数据中提取用于重复数据删除的指定长度数据;
根据所述重复数据删除策略,将所述指定长度数据按照所述重复数据删除最小数据操作单元,分割成指定大小的数据段;
计算所述指定大小的数据段的数据指纹,并与数据指纹库中存储的数据指纹进行比较,根据数据指纹相同的比较结果,删除实际物理数据中的重复数据。
所述获得所述物理数据去重后的数据段的步骤还包括:更新所述物理数据去重后的数据段的元数据。
所述重复数据删除最小数据操作单元为块的整数倍、比特位的整数倍或字节的整数倍。
所述块级虚拟化存储设备的结构为带内或者带外体系架构。
本发明提供了一种块级虚拟化存储设备上实现重复数据删除的***,所述***包括:
虚拟LUN设备,用于提供给前端主机挂载和使用;
重复数据删除模块,用于删除指定虚拟LBA地址空间所对应的实际物理数据中的重复数据,获得去重后的数据段;
全局元数据管理模块,用于建立所述虚拟LBA地址空间与所述去重后的数据段的对应关系,管理和更新全局元数据池设备中的元数据,以及根据接收到的虚拟LBA地址空间、所述对应关系和去重后的数据段的元数据信息,获取所述虚拟LBA地址空间对应的实际物理数据的存放位置信息,并发送所述存放位置信息;
全局元数据池设备,用于存储所述全局元数据管理模块建立的对应关系信息及所述重复数据删除模块获得的去重后数据段的元数据信息;
存储虚拟化模块,用于将外部数据读写I/O请求的虚拟LBA地址空间发送给所述全局元数据管理模块,以及接收所述全局元数据管理模块发送的所述虚拟LBA地址空间对应的实际物理数据的存放位置信息,完成I/O重定向;
物理LUN设备,用于存放实际物理数据。
所述重复数据删除模块包括:
设置单元,用于设置重复数据删除策略及重复数据删除最小数据操作单元;
获取单元,用于获取指定虚拟LBA地址空间对应的实际物理数据存放位置信息;
提取单元,用于根据从所述获取单元获取的实际物理数据存放位置信息,按照所述设置单元设置的重复数据删除最小数据操作单元,从所述物理LUN设备中提取用于重复数据删除的指定长度数据;
分割单元,用于根据所述设置单元设置的重复数据删除策略,将所述提取单元提取出的指定长度数据,按照所述设置单元设置的重复数据删除最小数据操作单元,分割成指定大小的数据段;
数据指纹库单元,用于存储数据指纹;
重复数据删除单元,用于计算所述分割单元分割的指定大小的数据段的数据指纹,并与所述数据指纹库单元存储的数据指纹进行比较,发送比较结果;
元数据管理及更新单元,用于接收所述比较结果,并在所述比较结果为数据指纹相同时,将元数据更新的内容和请求发送给所述全局元数据管理模块。
所述重复数据删除最小数据操作单元为块的整数倍、比特位的整数倍或字节的整数倍。
本发明还提供了一种块级虚拟化存储设备上实现重复数据删除的***,所述***包括:
虚拟LUN设备,用于提供给前端主机挂载和使用;
存储虚拟化元数据池设备,用于存储虚拟LBA地址空间对应的元数据信息;
重复数据删除元数据池设备,用于存储重复数据删除模块去重后的数据段的元数据信息;
重复数据删除模块,用于删除指定虚拟LBA地址空间所对应的实际物理数据中的重复数据,获得去重后的数据段,以及更新所述重复数据删除元数据池设备中的元数据信息;
全局元数据管理模块,用于建立所述虚拟LBA地址空间与所述去重后的数据段的对应关系,以及同步协调存储虚拟化模块和重复数据删除模块的元数据的更新及交互;
存储虚拟化模块,用于根据所述全局元数据管理模块建立的对应关系和所述重复数据删除模块去重后的数据段的元数据信息,获取外部数据读写请求指向的虚拟LBA地址空间对应的实际物理数据的存放位置信息,完成I/O重定向,以及更新所述存储虚拟化元数据池设备中的元数据信息;
物理LUN设备,用于存放实际物理数据。
所述重复数据删除模块包括:
设置单元,用于设置重复数据删除策略及重复数据删除最小数据操作单元;
获取单元,用于从所述物理LUN设备获取指定虚拟LBA地址空间对应的实际物理数据存放位置信息;
提取单元,用于根据从所述获取单元获取的实际物理数据存放位置信息,按照所述设置单元设置的重复数据删除最小数据操作单元,从所述物理LUN设备中提取用于重复数据删除的指定长度数据;
分割单元,用于根据所述设置单元设置的重复数据删除策略,将所述提取单元提取出的指定长度数据,按照所述设置单元设置的重复数据删除最小数据操作单元,分割成指定大小的数据段;
数据指纹库单元,用于存储数据指纹;
重复数据删除单元,用于计算所述分割单元分割的指定大小的数据段的数据指纹,并与所述数据指纹库单元存储的数据指纹进行比较,发送比较结果;
元数据管理及更新单元,用于接收所述比较结果,并在所述比较结果为数据指纹相同时,通过所述全局元数据管理模块的协调,更新去重后数据段的元数据,发送给所述重复数据删除元数据池设备。
所述重复数据删除最小数据操作单元为块的整数倍、比特位的整数倍或字节的整数倍。
与现有技术相比,本发明的上述技术方案的有益效果如下:
1、本发明提供的技术方案可以跨主机和存储设备删除重复数据,实现更大范围的重复数据删除;
2、本发明提供的技术方案不占用主机***资源,从而保证了主机上运行的业务程序可以平滑运行;
3、本发明提供的技术方案可以集中管理和保护重复数据删除功能的元数据,简化整个***设计和实施。
附图说明
图1为本发明实施例1提供的块级虚拟化存储设备上实现重复数据删除的***结构示意图;
图2为本发明实施例1块级虚拟化存储设备上实现重复数据删除的方法流程图;
图3为本发明实施例1重复数据删除模块的结构示意图;
图4为本发明实施例1没有部署重复数据删除模块的***结构示意图;
图5为本发明实施例1在部署重复数据删除模块后,还未删除重复数据的***结构示意图;
图6为本发明实施例1在部署重复数据删除模块后,部分数据已经去重的***结构示意图;
图7为本发明实施例1在重复数据删除后,在线数据读、写操作的***结构示意图;
图8为本发明实施例1将全局元数据池设备与虚拟LUN设备合并统一管理元数据的***结构示意图;
图9为本发明实施例1虚拟LBA地址空间与去重后数据段的对应关系示意图;
图10为本发明实施例2提供的块级虚拟化存储设备上实现重复数据删除的***结构示意图;
图11为本发明实施例1提供的统一元数据管理***结构示意图。
具体实施方式
为了深入了解本发明,下面结合附图及具体实施例对本发明进行详细说明。
目前在存储虚拟化层部署和实现重复数据删除功能主要集中在文件***级虚拟化存储设备范畴,例如专利WO2010/033961、PCT/US2009/057772、US2009/0204649和US2009/0204650中所记载的技术方案,而在块级虚拟化存储设备的虚拟化层上实现重复数据删除功能却没有记载和相关产品化实现。另一方面,在块级虚拟化存储设备的虚拟化层上实现重复数据删除功能并不容易,究其原因在于:
1、对一份实际数据的访问存在多条逻辑上独立的转换和指向路径,即一份实际数据对应多份为不同数据管理与操作功能服务的元数据(如分别服务于存储虚拟化和重复数据删除功能),如果这些元数据的管理与更新没有同步和协调,可能导致数据访问混乱,甚至丢失。
不同于传统的在主机层中部署重复数据的删除功能,要在虚拟化存储设备的虚拟化层实现重复数据删除功能,不可避免地会出现对一份物理数据的访问存在多条逻辑上独立的转换和重定向路径。其一是:虚拟LUN上虚拟LBA(Logical Block Address,逻辑块地址)地址在主机层所展现的“虚拟”数据,到物理存储设备上的实际数据的转换和指向路径;其二是,重复数据删除后,去重后的数据段(即重复数据删除功能对应的“虚拟”数据)到其对应的数据段引用的实际物理存放位置的转换和指向路径。以上这些数据访问路径的转换和指向信息,在本发明中,被称作虚拟LBA地址和数据段元数据。
可以想象,如果这些“虚拟”数据按照各自机制操作同一份实际数据并且没有同步更新对应的元数据信息,可能导致数据访问混乱。举例而言,在存储设备层中某一份实际物理数据被映射到某虚拟LUN提供的部分虚拟LBA地址段中(即该物理数据包含在该虚拟LBA地址段所映射的实际数据中),那么当该物理数据被删除重复数据后,其在原存储位置(实际LBA地址空间)的数据可能已经不完整(部分或者全部数据可能已经被合并到了对应的数据段引用中),那么这时,如果到达该虚拟LUN上虚拟LBA地址的I/O请求被重定向到该物理数据原实际LBA地址空间,会得到不完整或者无效数据。
2、最小数据管理和操作单元不一致。
块级虚拟化存储设备管理的最小数据单元通常是存储介质管理的最小数据单元,该最小数据单元被称之为块(block),以磁盘为例,大小通常是512个字节(bytes),磁带等其他存储介质类似。传统的重复数据删除技术中通常是以字节(byte)为最小操作单元,对待去重数据分割和比较去重(理论上,也可以以位(bit)为最小单元对数据进行分割和比较去重)。
由于数据操作最小单元不一致,使得重复数据删除技术不能在块级虚拟化存储设备的虚拟化层直接应用。具体而言,在块级虚拟化存储设备上读写数据是块为单位的,以磁盘为例,长度是512个字节;传统的数据去重技术中,其待去重数据通常是以一个字节为最小单位。如果将重复数据删除技术直接应用于块级虚拟化存储设备,那么可能导致原本数据去重前存储在一个块中的数据在数据去重后,可能分别放到至少两个块中存储(如一个块中前半部分数据被放置在一个数据段引用中,后半部分数据被放置在另一个数据段引用中)。这种拆分虽然可以满足重复数据删除功能的设计目的—最好的数据去重效果,但是会导致存储虚拟化层从“虚拟”数据到实际数据指向路径的错乱,主机层的数据丢失,因此传统的重复数据删除方法在块级虚拟化存储设备的虚拟化层上不能直接应用。
鉴于以上,本发明提供了一种在块级虚拟化存储设备的虚拟化层上实现重复数据删除的方法,该方法通过获得虚拟LBA地址空间到其对应的实际物理数据去重后所得的数据段的对应关系,进而根据该对应关系信息及所对应数据段的元数据信息,获取该虚拟LBA地址空间对应的实际数据保存位置信息,完成I/O重定向。在本发明的具体实现中,需要设定重复数据删除最小数据操作单元。
需要说明的是,在实际应用中,块级虚拟化存储设备由于引入其它功能,可能会在一定程度上影响数据的虚拟LBA地址到其对应实际物理数据存放位置的指向关系;换言之,二者可能不是典型存储虚拟化设备中直接指向关系,而是需要经过数次转换的间接指向关系,比如有些块级虚拟化存储设备提供的虚拟层RAID,或者多级虚拟化(为了提高虚拟地址空间容量)等多个虚拟LUN之间互相映射的***设计。然而无论哪种***设计,总可以获得指定虚拟LUN上指定的数据虚拟LBA地址到其对应实际物理数据存放位置的指向信息。另一方面,本发明所述方法和技术方案主要依赖于块级虚拟化存储设备所提供数据虚拟LBA地址到数据实际存放位置的指向信息,与该指向信息在虚拟化存储设备上如何获得并无直接关联,所以以上不同的虚拟化存储设备的设计并不会影响到本发明中所述技术方案的应用,不影响本发明保护的范畴。鉴于此,以下发明实施例的描述仅以典型存储虚拟化***设计为例,即数据的虚拟LBA地址到其对应实际物理数据存放位置的指向是直接指向关系。
另外,本发明所述方法的实施过程中,可以根据***设计需要,将重复数据删除最小数据操作单元设定到块的整数倍级别、字节(byte)的整数倍级别或者比特位(bit)的整数倍级别。然而设定到字节和比特位的整数倍级别,虽然可以避免过多空间的浪费,但是却大大增加了元数据的数据量,增加了元数据管理的难度。由于无论重复数据删除最小数据操作单元统一到何种级别,仅关系到如何实现重复数据删除功能的本身(即如何对指定长度的数据进行划分和管理元数据),而不会影响到本发明的适用范围—在块级虚拟化存储设备的虚拟化层实现重复数据删除的功能。因此,以下为了简化本发明实施例说明,仅以重复数据删除最小数据操作单元设定到块级别(即块的一倍级别)为例。
最后,由于本发明所提出方法实现的核心在于获取数据虚拟LBA地址空间和该虚拟LBA地址空间所对应实际物理数据去重后数据段的对应关系信息及去重后数据段的元数据信息,而传统的存储虚拟化和重复数据删除实现方法中,以上信息通常是保存在存储虚拟化和重复数据删除两份元数据中的,且管理和更新由各自功能模块完成并没有同步机制,比如有关虚拟LBA地址的信息保存在存储虚拟化的元数据中由存储虚拟模块负责管理和更新,而有关数据段的信息则保存在重复数据删除元数据信息中由重复数据删除模块负责管理和更新。为了避免如上所述的元数据管理冲突,可以采用至少两种***实现本发明的设计目的。第一种***,即实施例1所阐述***,统一管理和更新全局元数据信息,服务于存储虚拟化和重复数据删除等功能的实现;第二种***,即实施例2所阐述***,在整个***级别的协调同步后,服务于不同功能的元数据信息分别由各自功能模块管理和更新。以下分别阐述这两种***的实现细节。
实施例1:统一元数据管理***
参见图1,本发明实施例提供了一种块级虚拟化存储设备上实现重复数据删除的统一元数据管理***,该***包括:
虚拟LUN设备,用于存储虚拟化模块提供给前端主机挂载和使用的虚拟存储设备;
重复数据删除模块,用于删除指定虚拟LBA地址空间所对应的实际物理数据中的重复数据,获得去重后的数据段;
存储虚拟化模块,用于将外部数据读写I/O请求的虚拟LBA地址空间发送给全局元数据管理模块,以及接收全局元数据管理模块发送的虚拟LBA地址空间对应的实际物理数据的存放位置信息,完成I/O重定向;
全局元数据池设备,用于存储全局元数据管理模块建立的对应关系信息及重复数据删除模块获得的去重后数据段的元数据信息,是一个与虚拟LUN对应的设备;如果采用后期重复数据删除策略(如本发明实施例),那么对于尚未删除重复数据的虚拟LBA地址空间,全局元数据池设备中还会保存该虚拟LBA地址空间与实际物理数据存放位置的对应关系信息;在具体实现中,全局元据池设备可以是以一个文件或数据库中的一张表等形式进行保存和维护;
全局元数据管理模块,用于建立虚拟LBA地址空间与去重后的数据段的对应关系,创建和初始化全局元数据池设备,管理和更新全局元数据池设备中的元数据,以及根据接收到的虚拟LBA地址空间、对应关系和去重后的数据段的元数据信息,获取虚拟LBA地址空间对应的实际物理数据的存放位置信息,并发送存放位置信息;如果采用后期重复数据删除策略(如本发明实施例),由于外部I/O所请求的虚拟LBA地址空间对应的实际物理数据可能尚未去重,那么全局元数据管理模块直接返回存放在全局元数据池设备中该虚拟LBA地址空间对应的实际物理数据存放位置信息;
物理LUN设备,用于存放实际物理数据的存储设备,通常是物理存储设备层中一个较大的存储介质(如磁盘阵列等)上划分出来的存储逻辑单元,用逻辑单元号(即LUN)进行标识。
进一步,重复数据删除模块包括,如图3所示:
设置单元,用于设置重复数据删除策略及重复数据删除最小数据操作单元;重复数据删除最小数据操作单元可以设置为块的整数倍、比特位的整数倍或字节的整数倍。
获取单元,用于获取指定虚拟LBA地址空间对应的实际物理数据存放位置信息;
提取单元,用于根据从获取单元获取的实际物理数据存放位置信息,按照设置单元设置的重复数据删除最小数据操作单元,从物理LUN设备中提取用于重复数据删除的指定长度数据;
分割单元,用于根据设置单元设置的重复数据删除策略,将提取单元提取出的指定长度数据,按照设置单元设置的重复数据删除最小数据操作单元,分割成指定大小的数据段;
数据指纹库单元,用于存储数据指纹;重复数据删除过程中,通过新产生的数据指纹与数据指纹库中的数据指纹比较,从而实现重复数据删除功能;
重复数据删除单元,用于计算分割单元分割的指定大小的数据段的数据指纹,并与数据指纹库单元存储的数据指纹进行比较,发送比较结果;
元数据管理及更新单元,用于接收比较结果,并在比较结果为数据指纹相同时,将元数据更新的内容和请求发给全局元数据管理模块,由全局元数据管理模块结合数据去重过程中数据读写的情况及信息,更新每个去重后数据段的元数据。
在实际应用中,全局元数据管理模块的功能还包括:1)负责在数据读写时,协调数据读写进程和重复数据删除进程之间的冲突(如某虚拟LBA地址所指向的实际数据被数据读写进程和重复数据删除进程同时请求);2)与重复数据删除模块交互,负责更新全局元数据池设备中去重后数据段的元数据信息,确保每个虚拟LBA地址对应的元数据信息的有效性和一致性。
在该***中,全局元数据池设备和全局元数据管理模块统一保存和管理整个***所有功能对应的元数据,根据全局元数据池设备在整个***所处的位置不同,整个***可以有多种拓扑结构设计,典型的如图11和图8所示;图11中,有一个独立于***其它模块和设备的元数据存储设备(即全局元数据池设备),专用于保存和维护元数据,服务于***的各个功能;图8中,则将全局元数据池设备与虚拟LUN设备合并。然而无论哪种拓扑结构,其实现方法相似。下面以图11的拓扑结构为例,描述整个***实现的细节。在该拓扑结构中,全局元数据池设备由全局元数据管理模块统一管理和维护,保存了整个***所有元数据,服务于***的各个功能。为了简化说明,本实施例中仅以存储虚拟化和重复数据删除功能为例,其他功能如RAID等,因实现方法类似,这里不再赘述;其它拓扑结构中,也将有与全局元数据管理模块功能类似的模块和机制,维护和管理元数据,因实现方式类似,这里亦不做讨论。
在具体实践中,块级虚拟化存储设备的虚拟化有多种实现方式,典型的有带内架构(in-band architecture),主要的商业化产品有IBM SAN Volume Controller(SVC)、IBM DS8000系列、Hitachi VSP系列、EMC VPLEX、DataCore SANsymphony-V,带外架构(out-of-band architecture),主要的商业化产品有EMCInvista等。但是无论哪种实现方式,其核心思想都是创建虚拟LUN供前端主机挂载和使用,将虚拟LUN上的虚拟LBA地址空间映射及转换到对应真实数据所存放的物理位置,实现到达虚拟LUN上数据读写I/O的重定向。由于本发明所述方法的实现主要依赖于虚拟化层的虚拟LUN及其元数据,不会涉及到上述实现方式的差异(如数据路径(data path)和控制路径(control path)是否分离等),因此对于本发明而言,块级虚拟化存储设备虚拟化的各种实现方式均不会影响本发明的适用范围。为了简化本发明的可行性描述,本发明实施例以带内块级虚拟化存储设备的虚拟化实现为例来说明。
另一方面,在具体实现中,重复数据删除技术也有多种实现方式,典型的有定长(fixed-length dedup)、不定长(variable-length dedup)和混合长度(hybrid-length dedup)。但是无论哪种实现方式,其核心思想都是将指定长度的数据按照预定的算法划分出符合要求大小的数据段,通过计算这些数据段的指纹,比较去掉重复数据,保留一份数据段引用。通过每个数据段的元数据,完成所有到达指定数据段数据读写I/O的重定向。由于重复数据删除技术的不同实现方式只会影响到有关重复数据删除性能和效果等方面,而不会影响本发明的可行性,因此也不会影响到本发明对上述重复数据删除解决方案的适用性。为了简化本发明可行性的描述,本发明实施例以变长重复数据删除技术为例来说明,定长的重复数据删除可以看作是变长重复数据删除实现的一个特例。
另外,根据数据去重的时机,重复数据删除方案又可以划分为在线实时数据去重(in-line dedup)和后期去重(post-processing dedup)。同样,由于这两种方案仅会影响到整体***性能和数据去重效果等方面,不会影响到本发明的可行性,所以也不会影响到本发明对上述数据去重解决方案的适用性。为了简化本发明可行性的描述,本发明实施例以后期去重(post-processing)解决方案为例来说明。
同时,由于本发明的技术创新点在于将重复数据删除解决方案应用于块级虚拟化存储设备的虚拟化层上,而不是讨论如何进行重复数据删除;并且,重复数据删除技术已经成熟,且已大规模商业应用。所以,本发明实施例中有关重复数据删除技术的实现细节如数据分割算法、数据指纹的计算和比较等细节将被略去,不做深入阐释。
总之,本发明实施例以在带内块级虚拟化存储设备上实施变长、后期去重重复数据删除功能为讨论基础。
为了方便实施步骤描述,下面给出本发明实施例中的一些技术名词解释:
1.块(block)—存储介质管理的最小数据单元,一个块是连续的若干个字节或者比特位(a sequence of bytes or bits),通常有固定的长度,以磁盘为例,大小通常是512个字节,磁带等其他存储介质类似。
2.数据段(data extent)—用于描述重复数据删除功能的概念,是指重复数据删除功能模块在删除重复数据前,按照预定算法(不同的重复数据删除方案的数据段划分方法也不同)将指定长度的数据划分成多个符合要求大小的数据段;通过计算这些数据段的指纹,比较它们的异同,实现删除重复数据。重复数据删除后,数据段则表示一个逻辑概念,通过其对应的数据段元数据信息,指向保存在其对应的数据段引用中实际物理数据。
3.数据段引用(data extent reference)—用于描述重复数据删除功能的概念,是指在重复数据删除后,对于内容重复的数据段,仅保存一份它们的物理数据在指定存储介质上,且建立这些数据段到该份唯一物理数据拷贝的引用关系,这里被多个数据段所引用的唯一物理数据拷贝,称作这些数据段对应的数据段引用。
4.数据段元数据(data extent metadata)—用于描述重复数据删除功能的概念,是指数据去重后,所保存的数据段与其对应的数据段引用存放地址的引用信息(也称指向信息或指针信息);该信息中还包含该数据段引用所保存的实际位置信息(如LUN所在物理设备位置和LUN上对应的LBA地址等信息)。数据去重后,所有到达数据段的I/O都会根据该数据段对应的元数据重定向到其对应的数据段引用。
5.虚拟LBA地址的元数据(virtual LBA address metadata)—服务于存储虚拟化数据访问I/O重定向功能,是指用于从指定虚拟LBA地址重定向到实际数据存储位置的信息。该元数据信息可以根据***的设计需要,包含不同的信息,如在虚拟层如果实现软件RAID或者多级虚拟化,那么该元数据将包含在加入这些功能之后,指定虚拟LBA地址重定向到实际数据保存位置所必需的信息。以本实施例而言,该元数据将包含以下信息:指定的虚拟LBA地址所对应的实际数据是否已经去重,如果已经去重,其所对应的数据段及相对数据段头部的偏移量;如果没有去重,该虚拟LBA地址所对应的实际数据存放位置的指向信息。
6.虚拟LUN元数据(virtual LUN metadata)—主要指虚拟LUN所包含的虚拟LBA地址元数据的集合。现实中,该元数据可以以一个文件或数据库中的一张表等形式进行保存和维护。
7.存储虚拟化元数据(storage virtualization metadata)—主要包括至少一个虚拟LUN元数据及为虚拟LUN的其他功能(如RAID等)提供支持的信息。
8.重复数据删除元数据(data dedup metadata)—主要包括数据段的元数据及必要的支持元数据维护功能信息(如元数据存放的空间规划与部署等)。
参见图1和图2,基于统一元数据管理***,本发明实施例提供了一种块级虚拟化存储设备上实现重复数据删除的方法,包括以下步骤:
步骤101:在块级虚拟化存储设备的虚拟化层,部署重复数据删除模块和全局元数据管理模块,为指定虚拟LUN创建全局元数据池设备且将之初始化;
根据实际***需求,例如性能、功能和重复数据删除比例目标等,选择数据去重方案,进而根据所选择的数据去重方案,部署相应的重复数据删除模块;如上所述,本实施例选择目前主流的变长、后期数据去重方案;
在重复数据删除模块部署之后,还要制定相应的重复数据删除策略,包括:设定重复数据删除引擎的启动时间(如在数据读写不频繁的晚上)、设定数据去重空间回收的时间及周期等等;重复数据删除策略的制定,往往与重复数据删除模块的功能设计有关,不同的数据去重方案可能导致其对应的重复数据删除策略不同;
在部署完重复数据删除模块后,再部署全局元数据管理模块;然后,由全局元数据管理模块对指定虚拟LUN创建一个对应的全局元数据池,在具体实现中,可以为每个虚拟LUN创建一个独占的全局元数据池,也可以使之与其他虚拟LUN共用一个全局元数据池;由于两者实现方法相似,因此本发明实施例仅以为每个虚拟LUN创建一个独占的全局元数据池为例进行阐述;
在全局元数据池建立以后,全局元数据管理模块需要对其进行初始化,具体步骤如下:1)针对一个确定的虚拟LUN,创建一个全局元数据池Dedup vLUN,全局元数据管理模块通过存储虚拟化模块获取该虚拟LUN上虚拟LBA地址空间及虚拟LBA地址空间到已分配的实际LBA地址空间指向信息,并将之一一复制到对应的Dedup vLUN上;换言之,此时在虚拟LUN上每个确定的虚拟LBA地址,都可以在Dedup vLUN找到相同的虚拟LBA地址和对应该虚拟LBA地址相同的到实际物理数据存放位置指向信息;如果虚拟LUN对应的实际LBA地址空间是动态分配的(比如在使用精简配置的情况下),那么就在其分配后,将以上信息复制到Dedup vLUN上;2)初始状态下,全局元数据池中的虚拟LBA地址所对应的实际物理数据都未去重,使用“未去重”状态标识标记这些虚拟LBA地址的元数据;
在全局元数据管理模块和全局元数据池部署后,当有数据访问I/O到达虚拟LUN上确定的虚拟LBA地址时,存储虚拟化模块需要将该虚拟LBA地址传输给全局元数据管理模块,由全局元数据管理模块返回实际物理数据存放的位置信息给存储虚拟化模块,由存储虚拟化模块完成I/O重定向;
对比图4和图5,可以反映出步骤101完成前后的变化:图4是没有部署重复数据删除功能模块的***结构示意图,从图4中可以看出,存储虚拟化就是将虚拟LUN上的虚拟LBA地址映射到实际LUN(如图4中的LUN A,LUN B,LUN C)的实际LBA地址,完成主机端发送过来的I/O请求的重定向;图5是在部署重复数据删除功能模块后尚未删除重复数据的***示意图,Dedup vLUN是对应于虚拟LUN的全局元数据池;
在步骤101中初始化完成后,虚拟LUN的虚拟LBA地址空间(通过全局元数据管理模块)将和Dedup vLUN的虚拟LBA地址空间一一对应,并且DedupvLUN还保存了对应于这些虚拟LBA地址空间的实际物理数据存放位置信息;
步骤102:设置单元设置重复数据删除最小数据操作单元和重复数据删除策略,根据重复数据删除策略,删除指定虚拟LBA地址空间所对应的实际物理数据中的重复数据,获得物理数据去重后的数据段;
需要说明的是,本发明实施例中的虚拟LBA地址空间为一段虚拟LBA地址段,包含若干连续或者不连续的虚拟LBA地址;
设置单元将重复数据删除最小数据操作单元统一到块级别,使之与存储介质的最小数据单元一致;
根据设置单元设置的重复数据删除策略,删除指定虚拟LBA地址空间所对应的实际物理数据中的重复数据,获得物理数据去重后的数据段,具体包括以下子步骤:1)重复数据删除模块中的获取单元在与全局元数据管理模块交互后,获取未被去重的指定虚拟LBA地址空间及其对应的实际物理数据存放位置信息;2)根据获取单元所获取的虚拟LBA地址空间所对应的实际物理数据存放位置信息,重复数据删除模块中的提取单元从该实际物理数据存放位置信息指定的物理位置按照块的边界,提取用于重复数据删除的指定长度数据,即所提取数据的起始和终止位置必须是块的边界,该所提取数据长度是块长度的整数倍;3)根据设置单元设置的重复数据删除策略,重复数据删除模块中的分割单元将提取出的指定长度数据以块为最小单位,分割成指定大小的数据段(每个切割后的数据段也是由至少一个完整的块组成);4)重复数据删除模块中的重复数据删除单元计算分割的指定大小的数据段的数据指纹,并与数据指纹库单元存储的数据指纹进行比较去重,获得指定虚拟LBA地址空间对应的物理数据去重后的数据段;
在步骤1)中,全局元数据管理模块需要根据所保存的虚拟LBA地址空间的元数据中关于指定虚拟LBA地址是否已经去重的信息,以及存储虚拟化模块的I/O请求情况,选定一段未被数据读写进程占用的虚拟LBA地址,交予重复数据删除模块进行重复数据删除;
步骤103:更新去重后的数据段的元数据,建立虚拟LBA地址空间与去重后数据段的对应关系,以及更新虚拟LBA地址空间所含虚拟LBA地址的元数据;
在步骤102完成后,根据数据去重后的结果,重复数据删除模块中的元数据管理及更新单元将元数据更新的内容和请求发给全局元数据管理模块,全局元数据管理模块将综合数据去重过程中数据读写的情况及信息,更新每个去重后数据段的元数据;
进一步,根据数据去重的情况,全局元数据管理模块建立用于数据去重的虚拟LBA地址空间与其对应实际物理数据去重后数据段的对应关系;如图9所示,数据的虚拟LBA地址空间对应于物理LUN上的实际LBA地址空间,实际LBA地址空间保存的实际物理数据去重后,得到了数据段DE1、DE2、DE3,它们分别指向于数据段引用DI1、DI2、DI1;从图9中可以看出,通过对相同的数据去重前实际LBA地址空间的指向和对应关系,可以将虚拟LBA地址空间中每个虚拟LBA地址与数据段DE1、DE2、DE3中的每个块一一对应起来(因为这里重复数据删除最小数据操作单元是块,与存储介质的最小数据管理单元一致),图中以双箭头表达了这种对应关系,即vLai与DE2中c2是对应的;
待这种对应关系建立起来以后,指定虚拟LBA地址的元数据将更新为,该虚拟LBA地址所指向的实际物理数据是否已经去重的标识;如果已经去重,元数据还包括其所对应的数据段及相对数据段头部的偏移量;如果没有去重(可能在数据去重过程中该虚拟LBA地址对应的实际物理数据被写,那么该虚拟LBA地址对应的实际物理数据去重过程无效,具体详见步骤104),则元数据包括该虚拟LBA地址所对应的实际物理数据存放位置的指向信息;
在元数据更新后,还需定期回收重复数据删除后释放出来新的物理空间,该物理空间回收的发起和执行在不同的***设计中可能有不同的选择,比如,整个物理空间的管理可以由存储虚拟化模块负责,其空间的回收也可以由它发起,由重复数据删除模块完成;
对比图5和图6,可以看出步骤102和103完成前后的变化:图5是在部署重复数据删除功能模块后尚未删除重复数据的***示意图,Dedup vLUN是对应于虚拟LUN的全局元数据池;图6是在重复数据删除模块部署后,部分数据已经去重的***示意图,数据去重后的数据段以ci(i=1,2,…,8,…n,n是自然数)表示,其对应的每个数据段的长度(即其对应的数据段引用实际LBA地址的长度)以gi(i=1,2,…,8,…n,n是自然数)表示,对于变长的重复数据删除技术而言,每个数据段的长度可能不同;为了描述方便,本实施例在存储介质上创建了一个名为“Dedup LUN”的物理LUN设备,用于存放数据去重后数据段所对应的数据段引用;需要指出的是,本实施例中重复数据删除最小数据操作单元已经设置到块级别,所以gi是存储介质块长度的整数倍,每个数据段对应的数据段引用也是由数个完整的块组成的;此时,Dedup vLUN除了保存了一份与虚拟LUN一致的虚拟LBA地址空间,还需要保存每个虚拟LBA地址对应的元数据信息及去重后数据段的元数据信息;
步骤104:对到达虚拟LUN上某确定虚拟LBA地址空间的数据读写I/O请求,根据所保存的该虚拟LBA地址空间与去重后数据段的对应关系及数据段的元数据信息,获取实际物理数据的存放位置信息,完成虚拟化存储设备数据读写I/O的重定向;
需要说明的是,出于一般性考虑,本步骤的设计主要以去重后数据I/O的重定向为讨论基础,这也是本发明尝试解决的核心问题,对于外部数据I/O访问的虚拟LBA地址对应的实际物理数据尚未去重的情况,如采取后期去重的重复数据删除策略(如本发明实施例),与未部署重复数据删除功能的虚拟化存储设备类似,I/O重定向主要依据的是预存在虚拟LBA地址元数据中该虚拟LBA地址与实际物理数据保存位置的对应信息,本发明实施例中关于指定虚拟LBA地址对应的实际物理数据是否去重的信息保存在虚拟LBA地址的元数据中备索;
当有外部数据访问I/O请求到达指定虚拟LBA地址上时,存储虚拟化模块将该虚拟LBA地址发送给全局元数据管理模块,全局元数据管理模块根据该虚拟LBA地址对应的元数据信息,判断该虚拟LBA地址对应的实际物理数据是否已经被去重,如果未被去重,则返回该虚拟LBA地址对应的实际物理数据存放位置信息给存储虚拟化模块;如果已经去重,根据该虚拟LBA地址的元数据信息(所对应的数据段及相对数据段头部的偏移量),及所对应数据段的元数据信息(包含了其对应的数据段引用的实际存放位置信息),通过以下计算(参看图6),获取实际物理数据的存放位置信息,返回给存储虚拟化模块:
假定主机数据读写I/O申请的虚拟LBA地址vLa在Dedup vLUN上对应的物理数据已经去重,对应的是去重后数据段ck中离头部偏移量rLa的位置,因本发明实施例中,重复数据删除最小数据操作单元是块级别,所以rLa即为vLa在ck中对应位置相对其头部的相对LBA地址长度,所需获取的vLa对应的实际数据存放位置pLa,其实是ck对应的数据段引用中某实际LBA地址,可以通过公式(1)获得:
pLa=pAddrks+rLa              (1)
其中,pAddrks是数据块ck对应的数据段引用保存物理位置的起始LBA地址,该信息是数据去重后保存在数据段元数据中的已知信息;同时,rLa也是在数据去重过程中保存在虚拟LBA地址元数据中的已知信息,所以,通过以上计算,可以获取确定虚拟LBA地址vLa对应的实际数据存放位置信息pLa;
在获取全局元数据管理模块返回的实际数据存放位置信息后,存储虚拟化模块便可以完成到达虚拟LUN数据读写I/O重定向和数据的实际读写,具体包括以下几种情况:
1、重复数据删除前,数据的读写操作;
在全局元数据管理模块创建和初始化Dedup vLUN后,所有虚拟LBA地址的元数据中已经包含了其对应的实际物理数据的存放位置信息;
因重复数据删除前,所有到达虚拟LUN上确定虚拟LBA地址的数据读写I/O请求,全局元数据管理模块直接返回预先保存的该虚拟LBA地址对应的实际物理数据存放位置信息给存储虚拟化模块,进而由存储虚拟化模块完成I/O的重定向,整个过程与无重复数据删除功能的虚拟化存储设备基本一致,所以这里不再赘述细节;
2、重复数据删除后,数据的读写操作;
数据去重后,虚拟LUN或者Dedup vLUN上将有至少一部分的虚拟LBA地址对应的实际物理数据被重构到去重后的数据段中,这种变化使得虚拟LBA地址的转换机制与传统存储虚拟化有所不同,但是对于主机层面的数据I/O访问则是完全透明的;
1)在线数据读操作;
重复数据删除后,数据的读操作过程与重复数据删除前的数据读操作有所不同,如图7所示:假设有外部读I/O请求被派送到了虚拟LUN上的一段虚拟LBA地址(即要访问b1到bn所映射的物理数据),该段虚拟LBA地址的数据读请求由存储虚拟化模块发送给了全局元数据管理模块,全局元数据管理模块发现Dedup vLUN中相同的虚拟LBA地址段所对应的物理数据已经被去重,所对应的去重后的数据段是c2到c6之间的部分数据(即从c2的第二个块到c6的第二个块之间的块所对应的数据),通过上述虚拟LBA地址的转换过程后,获知其对应的实际数据存放的LBA地址(可能不连续)并返回给存储虚拟化模块,存储虚拟化模块进而从指定的物理位置提取数据,返回给外部数据读I/O请求;
2)在线数据写操作;
重复数据删除后,数据的写操作过程与重复数据删除前的数据写操作有所不同,如图7所示:假设有外部写I/O请求被派送到了虚拟LUN上的一段虚拟LBA地址(即要访问b1到bn所映射的物理数据),进而存储虚拟化模块将该虚拟LBA地址段的写请求发给了全局元数据管理模块,全局元数据管理模块发现Dedup vLUN相同的虚拟LBA地址段所对应的物理数据已经被去重,所对应的去重后的数据段是c2到c6之间的部分数据(即从c2的第二个块到c6的第二个块之间的块所对应的数据);那么,
(1)全局元数据管理模块通过存储虚拟化模块在后端存储介质上将为该次写I/O分配新的存储空间,并将新存储空间位置信息返回给存储虚拟化模块,存储虚拟化模块进而将外部写I/O重定向到新分配的存储位置,将数据写入;
(2)全局元数据管理模块通过存储虚拟化模块在后端存储介质上分配新的存储空间,由重复数据删除模块将该次写I/O未影响的数据段中块(即c2的第一个块及c6的第三个块)在数据段引用中对应的实际数据拷贝到新分配的存储位置,保存起来;
(3)全局元数据管理模块更新全局元数据池中数据段c2~c6对应的虚拟LBA地址段的元数据信息:①更新该次写I/O所影响到的在Dedup vLUN上的虚拟LBA地址段元数据信息,将其对实际数据存放位置的指向信息更新为第(1)步中新分配的数据存储位置;②更新该次写I/O所关联数据段中未必影响的在Dedup vLUN上的虚拟LBA地址段元数据,即c2的第一个块及c6的第三个块所对应的虚拟LBA地址段的元数据,将其对实际数据存放位置的指向信息更新到第(2)步中它们实际数据拷贝存放的位置;③将数据段c2到c6在Dedup vLUN上所对应的虚拟LBA地址段(要大于该次写I/O所影响的虚拟LBA地址段)标记为“未去重”状态,重复数据删除模块随后按照预定的重复数据删除策略将对之做去重处理;
(4)根据预置的策略,定期回收(如果没有其他数据段指向该物理数据)存放在Dedup LUN上原c2到c6之间的块所指向的数据段引用占用物理空间;
3、重复数据删除过程中,数据的读写操作;
这种情况是冲突的协调问题,由全局元数据管理模块负责;在重复数据删除过程中,因全局元数据池中虚拟LBA地址的元数据尚未更新,所以数据读写I/O过程中将对所涉及的虚拟LBA地址的元数据更新将被全局元数据管理模块锁定;
如果是数据读I/O,那么在该I/O完成后,可以允许所涉及虚拟LBA地址的元数据更新,即将之对实际数据位置的指向信息,更新为,该虚拟LBA地址对应实际数据已经去重,及其所对应的数据段及相对数据段头部的偏移量;
如果是数据写I/O,需要根据重复数据删除的进展情况决定采取相应的措施:如果重复数据删除进程尚未完成,那么需要将重复数据删除进程(仅针对该写I/O关联虚拟LBA地址段的重复数据删除任务)暂时挂起,待正常数据写操作完成后,再重新启动(需要更新重复数据删除目标数据);如果重复数据删除已经完成,需要更新对应虚拟LBA地址(该虚拟LBA地址长度可能大于该次写I/O所影响的虚拟LBA地址长度)的元数据,那么需要将该次写I/O请求所关联的去重后数据段对应的全部虚拟LBA地址段的元数据标记为未去重,保留其对实际数据存放位置的指向信息,待以后根据重复数据删除策略,再删除重复数据。
实施例2:元数据分制式管理***
该***与实施例1的区别在于:该***中没有一个类似于实施例1的全局元数据池设备统一保存和管理整个***的元数据,取而代之的是虚拟LBA地址的元数据和数据去重后数据段的元数据分别由存储虚拟化模块和重复数据删除模块各自负责管理与更新,如图10所示。但是,这两份元数据的内容与实施例1基本相同。同时为了保证元数据的一致性,全局元数据管理模块在整个***中发挥的作用与实施例1不再相同,即不再是主要负责初始化全局元数据池设备和统一元数据管理与更新,而是专注于存储虚拟化和重复数据删除模块的元数据更新的同步协调与交互。
参见图10,本发明实施例还提供了一种块级虚拟化存储设备上实现重复数据删除的元数据分制式管理***,该***包括:
虚拟LUN设备,用于提供给前端主机挂载和使用;
存储虚拟化元数据池设备,用于存储虚拟LBA地址空间对应的元数据信息;
重复数据删除元数据池设备,用于存储重复数据删除模块去重后的数据段的元数据信息;
重复数据删除模块,用于删除指定虚拟LBA地址空间所对应的实际物理数据中的重复数据,获得去重后的数据段,以及更新重复数据删除元数据池设备中的元数据信息;
全局元数据管理模块,用于建立虚拟LBA地址空间与去重后的数据段的对应关系,以及同步协调存储虚拟化模块和重复数据删除模块的元数据的更新及交互;
存储虚拟化模块,用于根据全局元数据管理模块建立的对应关系和重复数据删除模块去重后的数据段的元数据信息,获取外部数据读写请求指向的虚拟LBA地址空间对应的实际物理数据的存放位置信息,完成I/O重定向,以及更新存储虚拟化元数据池设备中的元数据信息;
物理LUN设备,用于存放实际物理数据。
进一步,重复数据删除模块包括:
设置单元,用于设置重复数据删除策略及重复数据删除最小数据操作单元;重复数据删除最小数据操作单元为块的整数倍、比特位的整数倍或字节的整数倍;
获取单元,用于获取指定虚拟LBA地址空间对应的实际物理数据存放位置信息;
提取单元,用于根据从获取单元获取的实际物理数据存放位置信息,按照设置单元设置的重复数据删除最小数据操作单元,从物理LUN设备中提取用于重复数据删除的指定长度数据;
分割单元,用于根据设置单元设置的重复数据删除策略,将提取单元提取出的指定长度数据,按照设置单元设置的重复数据删除最小数据操作单元,分割成指定大小的数据段;
数据指纹库单元,用于存储数据指纹;重复数据删除过程中,通过新产生的数据指纹与数据指纹库中的数据指纹比较,从而实现重复数据删除功能;
重复数据删除单元,用于计算分割单元分割的指定大小的数据段的数据指纹,并与数据指纹库单元存储的数据指纹进行比较,发送比较结果;
元数据管理及更新单元,用于接收比较结果,并在比较结果为数据指纹相同时,通过全局元数据管理模块的协调,更新去重后数据段的元数据,发送给重复数据删除元数据池设备。
本实施例与实施例1***的区别还体现在如下几点:
1)元数据的保存与更新
虚拟LBA地址元数据和去重后数据段元数据的保存位置不再是全局元数据池设备,而是由存储虚拟化元数据池设备和重复数据删除元数据池设备分别存储;元数据的更新也不是由全局元数据管理模块完成,而是分别由存储虚拟化和重复数据删除模块完成;但是元数据内容及元数据更新过程中全局元数据管理模块的同步协调机制与实施例1基本相同。
2)元数据的获取
获取指定虚拟LBA地址元数据的请求,由存储虚拟化模块在与全局元数据管理模块交互后,从存储虚拟化元数据池设备中获取;存储虚拟化模块根据虚拟LBA地址元数据信息,如需获取指定数据段元数据,将该请求发送给全局元数据管理模块,由全局元数据管理模块在与重复数据删除模块交互后,由重复数据删除模块从重复数据删除元数据池设备中获得,并由全局元数据管理模块最终返回给存储虚拟化模块;该过程中所需获取元数据的内容与实施例1相似。
基于元数据分制式管理架构,本实施例提供的块级虚拟化存储设备上实现重复数据删除的方法与实施例1区别如下:
步骤101′:在块级虚拟化存储设备的虚拟化层,部署重复数据删除模块和全局元数据管理模块;
与实施例1不同,本步骤中全局元数据管理模块不需要创建和初始化全局元数据池设备;除了本步骤,本实施例的其他实施细节与实施例1基本一致,这里不再赘述。
本发明实施例提供的技术方案可以跨主机和存储设备删除重复数据,实现更大范围的重复数据删除;本发明实施例提供的技术方案不占用主机***资源,从而保证了主机上运行的业务程序可以平滑运行;本发明实施例提供的技术方案可以集中管理和保护重复数据删除功能的元数据,简化整个***设计和实施。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种块级虚拟化存储设备上实现重复数据删除的方法,其特征在于,所述方法包括:
删除指定虚拟LBA地址空间所对应的实际物理数据中的重复数据,获得所述物理数据去重后的数据段;
建立所述虚拟LBA地址空间与所述物理数据去重后的数据段的对应关系;
根据所述对应关系和数据段的元数据信息,获取外部数据读写请求指向的虚拟LBA地址空间对应的实际物理数据的存放位置信息,完成I/O重定向;
在块级虚拟化存储设备的虚拟化层和物理层进行重复数据的删除。
2.如权利要求1所述的块级虚拟化存储设备上实现重复数据删除的方法,其特征在于,在所述删除指定虚拟LBA地址空间所对应的实际物理数据中的重复数据的步骤之前还包括:设置重复数据删除策略及重复数据删除最小数据操作单元。
3.如权利要求2所述的块级虚拟化存储设备上实现重复数据删除的方法,其特征在于,所述删除指定虚拟LBA地址空间所对应的实际物理数据中的重复数据的步骤具体包括:
根据所述重复数据删除最小数据操作单元,从虚拟LBA地址空间对应的实际物理数据中提取用于重复数据删除的指定长度数据;
根据所述重复数据删除策略,将所述指定长度数据按照所述重复数据删除最小数据操作单元,分割成指定大小的数据段;
计算所述指定大小的数据段的数据指纹,并与数据指纹库中存储的数据指纹进行比较,根据数据指纹相同的比较结果,删除实际物理数据中的重复数据。
4.如权利要求3所述的块级虚拟化存储设备上实现重复数据删除的方法,其特征在于,所述获得所述物理数据去重后的数据段的步骤还包括:更新所述物理数据去重后的数据段的元数据。
5.如权利要求4所述的块级虚拟化存储设备上实现重复数据删除的方法,其特征在于,所述重复数据删除最小数据操作单元为块的整数倍、比特位的整数倍或字节的整数倍。
6.如权利要求1-5中任一所述的块级虚拟化存储设备上实现重复数据删除的方法,其特征在于,所述块级虚拟化存储设备的结构为带内或者带外体系架构。
7.一种块级虚拟化存储设备上实现重复数据删除的***,其特征在于,所述***包括:
虚拟LUN设备,用于提供给前端主机挂载和使用;
重复数据删除模块,用于删除指定虚拟LBA地址空间所对应的实际物理数据中的重复数据,获得去重后的数据段;
全局元数据管理模块,用于建立所述虚拟LBA地址空间与所述去重后的数据段的对应关系,管理和更新全局元数据池设备中的元数据,以及根据接收到的虚拟LBA地址空间、所述对应关系和去重后的数据段的元数据信息,获取所述虚拟LBA地址空间对应的实际物理数据的存放位置信息,并发送所述存放位置信息;
全局元数据池设备,用于存储所述全局元数据管理模块建立的对应关系信息及所述重复数据删除模块获得的去重后数据段的元数据信息;
存储虚拟化模块,用于将外部数据读写I/O请求的虚拟LBA地址空间发送给所述全局元数据管理模块,以及接收所述全局元数据管理模块发送的所述虚拟LBA地址空间对应的实际物理数据的存放位置信息,完成I/O重定向;
物理LUN设备,用于存放实际物理数据。
8.如权利要求7所述的块级虚拟化存储设备上实现重复数据删除的***,其特征在于,所述重复数据删除模块包括:
设置单元,用于设置重复数据删除策略及重复数据删除最小数据操作单元;
获取单元,用于获取指定虚拟LBA地址空间对应的实际物理数据存放位置信息;
提取单元,用于根据从所述获取单元获取的实际物理数据存放位置信息,按照所述设置单元设置的重复数据删除最小数据操作单元,从所述物理LUN设备中提取用于重复数据删除的指定长度数据;
分割单元,用于根据所述设置单元设置的重复数据删除策略,将所述提取单元提取出的指定长度数据,按照所述设置单元设置的重复数据删除最小数据操作单元,分割成指定大小的数据段;
数据指纹库单元,用于存储数据指纹;
重复数据删除单元,用于计算所述分割单元分割的指定大小的数据段的数据指纹,并与所述数据指纹库单元存储的数据指纹进行比较,发送比较结果;
元数据管理及更新单元,用于接收所述比较结果,并在所述比较结果为数据指纹相同时,将元数据更新的内容和请求发送给所述全局元数据管理模块。
9.如权利要求8所述的块级虚拟化存储设备上实现重复数据删除的***,其特征在于,所述重复数据删除最小数据操作单元为块的整数倍、比特位的整数倍或字节的整数倍。
10.一种块级虚拟化存储设备上实现重复数据删除的***,其特征在于,所述***包括:
虚拟LUN设备,用于提供给前端主机挂载和使用;
存储虚拟化元数据池设备,用于存储虚拟LBA地址空间对应的元数据信息;
重复数据删除元数据池设备,用于存储重复数据删除模块去重后的数据段的元数据信息;
重复数据删除模块,用于删除指定虚拟LBA地址空间所对应的实际物理数据中的重复数据,获得去重后的数据段,以及更新所述重复数据删除元数据池设备中的元数据信息;
全局元数据管理模块,用于建立所述虚拟LBA地址空间与所述去重后的数据段的对应关系,以及同步协调存储虚拟化模块和重复数据删除模块的元数据的更新及交互;
存储虚拟化模块,用于根据所述全局元数据管理模块建立的对应关系和所述重复数据删除模块去重后的数据段的元数据信息,获取外部数据读写请求指向的虚拟LBA地址空间对应的实际物理数据的存放位置信息,完成I/O重定向,以及更新所述存储虚拟化元数据池设备中的元数据信息;
物理LUN设备,用于存放实际物理数据。
11.如权利要求10所述的块级虚拟化存储设备上实现重复数据删除的***,其特征在于,所述重复数据删除模块包括:
设置单元,用于设置重复数据删除策略及重复数据删除最小数据操作单元;
获取单元,用于获取指定虚拟LBA地址空间对应的实际物理数据存放位置信息;
提取单元,用于根据从所述获取单元获取的实际物理数据存放位置信息,按照所述设置单元设置的重复数据删除最小数据操作单元,从所述物理LUN设备中提取用于重复数据删除的指定长度数据;
分割单元,用于根据所述设置单元设置的重复数据删除策略,将所述提取单元提取出的指定长度数据,按照所述设置单元设置的重复数据删除最小数据操作单元,分割成指定大小的数据段;
数据指纹库单元,用于存储数据指纹;
重复数据删除单元,用于计算所述分割单元分割的指定大小的数据段的数据指纹,并与所述数据指纹库单元存储的数据指纹进行比较,发送比较结果;
元数据管理及更新单元,用于接收所述比较结果,并在所述比较结果为数据指纹相同时,通过所述全局元数据管理模块的协调,更新去重后数据段的元数据,发送给所述重复数据删除元数据池设备。
12.如权利要求11所述的块级虚拟化存储设备上实现重复数据删除的***,其特征在于,所述重复数据删除最小数据操作单元为块的整数倍、比特位的整数倍或字节的整数倍。
CN 201110156839 2011-06-13 2011-06-13 块级虚拟化存储设备上实现重复数据删除的方法及*** Active CN102221982B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN 201110156839 CN102221982B (zh) 2011-06-13 2011-06-13 块级虚拟化存储设备上实现重复数据删除的方法及***
PCT/CN2011/077890 WO2012171244A1 (zh) 2011-06-13 2011-08-01 块级虚拟化存储设备上实现重复数据删除的方法及***
US13/380,935 US20120317084A1 (en) 2011-06-13 2011-08-01 Method and system for achieving data de-duplication on a block-level storage virtualization device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110156839 CN102221982B (zh) 2011-06-13 2011-06-13 块级虚拟化存储设备上实现重复数据删除的方法及***

Publications (2)

Publication Number Publication Date
CN102221982A CN102221982A (zh) 2011-10-19
CN102221982B true CN102221982B (zh) 2013-09-11

Family

ID=44778543

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110156839 Active CN102221982B (zh) 2011-06-13 2011-06-13 块级虚拟化存储设备上实现重复数据删除的方法及***

Country Status (2)

Country Link
CN (1) CN102221982B (zh)
WO (1) WO2012171244A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996881B2 (en) 2012-04-23 2015-03-31 International Business Machines Corporation Preserving redundancy in data deduplication systems by encryption
US9262428B2 (en) 2012-04-23 2016-02-16 International Business Machines Corporation Preserving redundancy in data deduplication systems by designation of virtual address
US9779103B2 (en) 2012-04-23 2017-10-03 International Business Machines Corporation Preserving redundancy in data deduplication systems
US10133747B2 (en) 2012-04-23 2018-11-20 International Business Machines Corporation Preserving redundancy in data deduplication systems by designation of virtual device
CN102882885B (zh) * 2012-10-17 2015-07-01 北京卓微天成科技咨询有限公司 一种提高云计算数据安全的方法及***
WO2015100639A1 (zh) * 2013-12-31 2015-07-09 华为技术有限公司 一种去重方法装置与***
CN105373346B (zh) * 2015-10-23 2018-06-29 成都卫士通信息产业股份有限公司 一种虚拟化存储方法及存储装置
US10235396B2 (en) * 2016-08-29 2019-03-19 International Business Machines Corporation Workload optimized data deduplication using ghost fingerprints
CN109964217B (zh) * 2017-08-25 2021-11-09 华为技术有限公司 去重数据装置和方法
CN109918018B (zh) * 2017-12-13 2020-06-16 华为技术有限公司 一种数据存储方法及存储设备
CN108845764A (zh) * 2018-05-30 2018-11-20 郑州云海信息技术有限公司 一种io数据的处理方法及装置
CN109445702B (zh) * 2018-10-26 2019-12-06 黄淮学院 一种块级数据去重存储***
CN109684238A (zh) * 2018-12-19 2019-04-26 湖南国科微电子股份有限公司 一种固态硬盘映射关系的存储方法、读取方法及固态硬盘
CN113472609B (zh) * 2020-05-25 2024-03-19 汪永强 一种用于无线通信的数据重复发送标记***

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8069191B2 (en) * 2006-07-13 2011-11-29 International Business Machines Corporation Method, an apparatus and a system for managing a snapshot storage pool
US20080243769A1 (en) * 2007-03-30 2008-10-02 Symantec Corporation System and method for exporting data directly from deduplication storage to non-deduplication storage
CN101809559B (zh) * 2007-09-05 2013-10-16 伊姆西公司 在虚拟化服务器和虚拟化存储环境中的去重复
CN101741536B (zh) * 2008-11-26 2012-09-05 中兴通讯股份有限公司 数据级容灾方法、***和生产中心节点
CN101582076A (zh) * 2009-06-24 2009-11-18 浪潮电子信息产业股份有限公司 一种基于数据库的重复数据删除方法
CN101908077B (zh) * 2010-08-27 2012-11-21 华中科技大学 一种适用于云备份的重复数据删除方法

Also Published As

Publication number Publication date
WO2012171244A1 (zh) 2012-12-20
CN102221982A (zh) 2011-10-19

Similar Documents

Publication Publication Date Title
CN102221982B (zh) 块级虚拟化存储设备上实现重复数据删除的方法及***
CN102255962B (zh) 一种分布式存储方法、装置和***
US11372544B2 (en) Write type based crediting for block level write throttling to control impact to read input/output operations
CN104395904B (zh) 高效的数据对象存储和检索
CN103874980B (zh) 存储***中的映射
CN103635900B (zh) 基于时间的数据分割
CN103502926B (zh) 基于扩展区的存储架构
JP5608016B2 (ja) オブジェクト単位階層の管理方法及び装置
CN103562914B (zh) 节约资源型扩展文件***
US20120317084A1 (en) Method and system for achieving data de-duplication on a block-level storage virtualization device
CN110383251B (zh) 存储***、计算机可读记录介质、***的控制方法
US20050257083A1 (en) Transaction-based storage system and method that uses variable sized objects to store data
CN101976181A (zh) 一种存储资源的管理方法及管理装置
CN103890738A (zh) 用于保留克隆分离操作之后的存储对象中的消重的***和方法
WO2002065275A1 (en) Storage virtualization system and methods
CN104272242B (zh) 创建加密存储体
CN104471524B (zh) 存储***和存储控制方法
CN109344090A (zh) 数据中心中kvm虚拟机的虚拟硬盘***及数据中心
CN104054071A (zh) 访问存储设备的方法和存储设备
CN106610903A (zh) 层级化存储器***、存储器控制器和去重及存储器层级化方法
CN101221485A (zh) 建立冗余磁盘阵列的方法及控制设备
CN111324305B (zh) 一种分布式存储***中数据写入/读取方法
CN103514222B (zh) 虚拟机映像的存储方法、管理方法、存储管理装置及***
CN110427347A (zh) 重复数据删除的方法、装置、存储节点及存储介质
CN101997919B (zh) 一种存储资源的管理方法及管理装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20181115

Address after: 100193 West District, First Floor of Lisichen Building, No. 25 Building, 8 Wangxi Road, Northeast Haidian District, Beijing

Patentee after: Yuntian (Beijing) Data Technology Co., Ltd.

Address before: 100085 Beijing Haidian District Shangdi Information Industry Base North District No. 5 Overground Glorious International Center B Block 1808

Patentee before: Beijing Zhuowei Tiancheng Technology Consultation Co., Ltd.