CN106528703A - 一种重复删除的模式切换方法及装置 - Google Patents
一种重复删除的模式切换方法及装置 Download PDFInfo
- Publication number
- CN106528703A CN106528703A CN201610947884.0A CN201610947884A CN106528703A CN 106528703 A CN106528703 A CN 106528703A CN 201610947884 A CN201610947884 A CN 201610947884A CN 106528703 A CN106528703 A CN 106528703A
- Authority
- CN
- China
- Prior art keywords
- hash
- granularity
- records
- record
- lun
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种重复删除的模式切换方法及装置,使DPC在收到LUN下发的多个粒度时,分别计算所述多个粒度对应的hash,再遍历哈希索引表分别统计所述多个粒度对应的hash中无记录hash和有记录hash,并在哈希索引表中为无记录hash创建新的hash记录;然后判断当前重删模式是有损重删还是无损重删;若是有损重删,则将每个粒度标记重删除成功;若是无损重删,则将新记录hash以及有记录hash中的粒度对应的数据与原数据相同的粒度标记为重删成功,将与有记录hash中的粒度对应的数据与原数据不同的粒度标记为重删冲突。因此本发明可以实现重复数据删除***中能够动态更改重删方式,使元数据组织方式更加灵活。
Description
技术领域
本发明涉及网络存储技术领域,尤其涉及一种重复删除的模式切换方法及装置。
背景技术
重复数据删除是一种数据缩减技术,旨在消除冗余数据,减少存储***的容量使用。一般采用SHA-1、MD-5等类似的算法将数据流切成更小的数据块,并且为每个数据块生成一个哈希值,方便与设备上的数据进行比较,若已存在,则不保存新数据,以下简称重删。重删包括有损重复数据删除和无损重复数据删除。其中,有损重复数据删除是指在使用哈希算法进行重复数据删除的过程中,若出现哈希冲突,则丢弃新数据,使用Hash相同的原数据,以下简称有损重删;无损重复数据删除是指在使用哈希算法进行重复数据删除的过程中,若出现哈希冲突,则从存储设备上读取对应的原数据,并与新数据进行二进制比较,若相同,则丢弃新数据;若不同,则保存新数据,以下简称无损重删。
现有的重复数据删除功能只能固定于有损重删和无损重删中的一种模式,不能实时切换,使得应用场景受到极大的限制,导致***整体不够灵活。
发明内容
有鉴于此,本发明提供一种重复删除的模式切换方法及装置来解决现有技术中重复删除不支持动态切换模式的问题。
具体地,本发明是通过如下技术方案实现的:
本发明提供一种重复删除的模式切换方法,所述方法应用于存储设备中的DPC,所述方法包括:
DPC接收LUN根据数据写入指令下发的由数据拆分成的多个粒度;
分别计算所述多个粒度对应的hash;
遍历哈希索引表分别统计所述多个粒度对应的hash中无记录hash和有记录hash,在哈希索引表中为无记录hash创建新的hash记录;
判断当前重删模式是有损重删还是无损重删;
若是有损重删,则将每个粒度标记为重删成功;
若是无损重删,则将新记录hash以及有记录hash中的粒度对应的数据与原数据相同的粒度标记为重删成功,将与有记录hash中的粒度对应的数据与原数据不同的粒度标记为重删冲突。
进一步的,所述方法还包括:
DPC将所述多个粒度的重删结果返回LUN,以使LUN根据所述多个粒度的重删结果更新本地的映射表的第一对应关系和第二对应关系,所述映射表中包括LBA与LUN本地的物理块地址PBA的第一对应关系和LBA与DPC上的Hash的第二对应关系。
进一步的,所述遍历哈希索引表分别统计所述多个粒度对应的hash中无记录hash和有记录hash,在哈希索引表中为无记录hash创建新的hash记录,具体为:
获取第一粒度对应的第一hash,在哈希索引表中查找是否存在于该第一hash相同的第二hash;若存在,则将该第一hash统计到有记录hash中;若不存在,则将所述第一hash对应的第一粒度写入DPC,将所述第一粒度在DPC中的PBA以及所述第一hash的对应关系添加到所述哈希索引表中,并将该hash统计到无记录hash中。
进一步的,所述方法还包括:
当确定哈希索引表中的hash记录没有LUN引用时,将该hash记录添加到回收集合,并在回收集合中的hash记录符合回收条件时,回收该hash记录中PBA对应的物理空间。
进一步的,所述确定哈希索引表中的hash记录已更新到LUN上,具体包括:
DPC在哈希索引表中新建hash记录时,为该hash记录增设引用计数,引用计数起始值为1,若该hash记录被引用时,则该引用计数加1;若该hash记录被更新到LUN中的映射表时,则该引用计数减1;当引用计数为零时,回收对应的hash记录;
若回收集合中的hash记录被引用时,则将该hash记录从所述回收集合中移除至哈希索引表,并将该hash记录的引用计数加1。
基于相同的构思,本发明还提供一种重复删除的模式切换装置,所述装置应用于存储设备中的DPC,所述装置包括:
接收单元,用于接收LUN根据数据写入指令下发的由数据拆分成的多个粒度;
计算单元,用于分别计算所述多个粒度对应的hash;
统计单元,用于遍历哈希索引表分别统计所述多个粒度对应的hash中无记录hash和有记录hash,在哈希索引表中为无记录hash创建新的hash记录;
标记单元,用于判断当前重删模式是有损重删还是无损重删;若是有损重删,则将每个粒度标记为重删成功;若是无损重删,则将新记录hash以及有记录hash中的粒度对应的数据与原数据相同的粒度标记为重删成功,将与有记录hash中的粒度对应的数据与原数据不同的粒度标记为重删冲突。
进一步的,所述装置还包括:
返回单元,用于所述多个粒度的重删结果返回LUN,以使LUN根据所述多个粒度的重删结果更新本地的映射表的第一对应关系和第二对应关系,所述映射表中包括LBA与LUN本地的物理块地址PBA的第一对应关系和LBA与DPC上的Hash的第二对应关系。
进一步的,所述统计单元,具体用于获取第一粒度对应的第一hash,在哈希索引表中查找是否存在于该第一hash相同的第二hash;若存在,则将该第一hash统计到有记录hash中;若不存在,则将所述第一hash对应的第一粒度写入DPC,将所述第一粒度在DPC中的PBA以及所述第一hash的对应关系添加到所述哈希索引表中,并将该hash统计到无记录hash中。
进一步的,所述装置还包括:
回收单元,用于当确定哈希索引表中的hash记录没有LUN引用时,将该hash记录添加到回收集合,并在回收集合中的hash记录符合回收条件时,回收该hash记录中PBA对应的物理空间。
进一步的,所述回收单元,具体用于在哈希索引表中新建hash记录时,为该hash记录增设引用计数,引用计数起始值为1,若该hash记录被引用时,则该引用计数加1;若该hash记录被更新到LUN中的映射表时,则该引用计数减1;当引用计数为零时,回收对应的hash记录;若回收集合中的hash记录被引用时,则将该hash记录从所述回收集合中移除至哈希索引表,并将该hash记录的引用计数加1。
由此可见,本发明可使DPC在收到LUN下发的多个粒度时,分别计算所述多个粒度对应的hash,再遍历哈希索引表分别统计所述多个粒度对应的hash中无记录hash和有记录hash,并在哈希索引表中为无记录hash创建新的hash记录;然后判断当前重删模式是有损重删还是无损重删;若是有损重删,则将每个粒度标记重删除成功;若是无损重删,则将新记录hash以及有记录hash中的粒度对应的数据与原数据相同的粒度标记为重删成功,将与有记录hash中的粒度对应的数据与原数据不同的粒度标记为重删冲突。因此本发明可以实现重复数据删除***中能够动态更改重删方式,使元数据组织方式更加灵活,使***具有较强的扩展性。
附图说明
图1是LBA、PBA、映射表以及哈希索引表的关系示意图;
图2是本发明一种示例性实施方式中的一种重复删除的模式切换方法的处理流程图;
图3是本发明一种示例性实施方式中的***结构示意图;
图4是本发明一种示例性实施方式中的映射表组织方式示意图;
图5是本发明一种示例性实施方式中的一种重复删除的处理流程图;
图6是本发明一种示例性实施方式中的一种物理空间回收的处理流程图;
图7a本发明一种示例性实施方式中的重复删除的模式切换装置所在设备的硬件结构图;
图7b本发明一种示例性实施方式中的一种重复删除的模式切换装置的逻辑结构图。
具体实施方式
存储设备中包括多个LUN(Logical Unit Number,逻辑单元号),用于为应用服务器提供可访问的逻辑存储资源,LUN中有分为多个逻辑块,其对应的地址LBA(LogicalBlock Address,逻辑块地址)是应用服务器访问LUN时使用的地址。当有新的数据写入存储设备时,先将该数据切分成若干个固定长度的数据块,利用特定的哈希算法为每个数据块生成一个哈希值Hash,再通过查询哈希索引表确定新写入的数据块是否为重复数据,其中,所述哈希索引表用于在使用重复数据删除的存储***中记录Hash到PBA(physical BlockAddress,物理块地址)的对应关系,所述PBA是向物理存储资源存取数据时使用的地址;若确定为重复数据,则丢弃该数据,并更新映射表,将对应LBA映射至该Hash;否则,将该数据块写入存储设备,将对应LBA映射至该Hash,同时,在哈希索引表中增加Hash至PBA的记录。其中所述映射表用于在使用重复数据删除的存储***中记录LBA到Hash的对应关系。所述LBA、PBA、映射表以及哈希索引表的关系如图1所示。
由于现有的重复数据删除***通常只支持有损重删或无损重删其中的一种,不能在两者之间进行实时切换,因此使得应用场景受到极大的限制,导致***整体不够灵活。
为了解决现有技术存在的问题,本发明提供一种重复删除的模式切换方法及装置,使DPC在收到LUN下发的多个粒度时,分别计算所述多个粒度对应的hash,再遍历哈希索引表分别统计所述多个粒度对应的hash中无记录hash和有记录hash,并在哈希索引表中为无记录hash创建新的hash记录;然后判断当前重删模式是有损重删还是无损重删;若是有损重删,则将每个粒度标记重删除成功;若是无损重删,则将新记录hash以及有记录hash中的粒度对应的数据与原数据相同的粒度标记为重删成功,将与有记录hash中的粒度对应的数据与原数据不同的粒度标记为重删冲突。因此本发明可以实现重复数据删除***中能够动态更改重删方式,使元数据组织方式更加灵活,使***具有较强的扩展性。
请参考图2,是本发明一种示例性实施方式中的一种重复删除的模式切换方法的处理流程图,所述方法应用于存储设备中的DPC,所述存储设备可以是单独的设备,也可以是设备集群,所述方法包括:
步骤201、DPC接收LUN根据数据写入指令下发的由数据拆分成的多个粒度;
在本实施例中,存储设备包括一个DPC以及多个LUN,如图3所示,其中,所述DPC(Deduplication Process Center,重删处理中心)主要负责对新数据进行重删处理、维护哈希索引表、存取重删成功的数据;所述LUN用于维护映射表,并提供访问资源。当LUN接收数据写入指令时,可以将数据划分为多个粒度,并将所述多个粒度下发给DPC。本实施例中,所述粒度是指在逻辑上将LUN划分成一个个固定长度的块并顺序编号,称每个块为一个粒度,粒度是重删的基本单位。LUN可以将接收到数据,按粒度的大小拆分数据,从本地映射表中读取对应的映射,不对齐的部分可以通过回读映射进行补齐,从而凑成完整粒度。
步骤202、分别计算所述多个粒度对应的hash;
DPC收到LUN下发的多个完整粒度时,可以分别计算所述多个完整粒度对应的hash。
步骤203、遍历哈希索引表分别统计所述多个粒度对应的hash中无记录hash和有记录hash,在哈希索引表中为无记录hash创建新的hash记录;
为了确定哪些粒度已经保存在DPC中,哪些粒度还没有保存,DPC可以遍历本地的哈希索引表,针对所述多个粒度对应的hash中分别统计无记录hash和有记录hash,具体来讲,DPC可以获取第一粒度对应的第一hash,在哈希索引表中查找是否存在于该第一hash相同的第二hash;若存在,则将该第一hash统计到有记录hash中;若不存在,将该hash统计到无记录hash中,并将所述第一hash对应的第一粒度写入DPC后,将所述第一粒度在DPC中的PBA以及所述第一hash的对应关系创建新的hash记录添加到所述哈希索引表中。以此类推,直到所述多个粒度对应的hash统计完成。
步骤204、判断当前重删模式是有损重删还是无损重删;
在本发明可选的实施例中,DPC可以为用户提供重删模式控制模块,使用户通过重删模式控制模块在进程数据存储时,选择所需的重删模式,本实施例中重删模式可以包括有损重删和无损重删,因此本发明可以实现重删模式的动态切换,从而使***适应更多的应用场景,提高了***的应用灵活性。
步骤205、若是有损重删,则将每个粒度标记为重删成功;
若确定当前重删模式为有损重删,则可以不顾及重删冲突的情况,因此可以将每个粒度标记为重删成功。
步骤206、若是无损重删,则将新记录hash以及有记录hash中的粒度对应的数据与原数据相同的粒度标记为重删成功,将与有记录hash中的粒度对应的数据与原数据不同的粒度标记为重删冲突。
若确定当前重删模式为无损重删,则将新记录hash以及有记录hash中的粒度对应的数据与原数据相同的粒度标记为重删成功,将与有记录hash中的粒度对应的数据与原数据不同的粒度标记为重删冲突。具体来讲,DPC首先获取第一粒度对应的第一hash,并在哈希索引表中查找与该第一hash相同的第二hash;然后读取本地物理空间中所述第二hash对应的数据并与所述第一hash对应的数据进行比较,若相同,则将该第一hash对应的第一粒度的重删结果标记为重删成功;若不同,则将该第一hash对应的第一粒度的重删结果标记为重删冲突;然后继续重复上述流程对其他粒度进行无损重删。
在本实施例中,DPC将所述多个粒度的重删结果返回LUN,以使LUN根据所述多个粒度的重删结果更新本地的映射表的第一对应关系和第二对应关系,所述映射表中包括LBA与LUN本地的物理块地址PBA的第一对应关系和LBA与DPC上的Hash的第二对应关系。在本实施例中,DPC维护的哈希索引表包括Hash到DPC的PBA的对应关系,所述LUN中维护的映射表中既包括LBA与LUN本地的PBA的第一对应关系,又包括LBA与DPC上的Hash的第二对应关系,其中所述第一对应关系用于读写存储于LUN本地的数据,所述第二对应关系用于读写存储于DPC的数据。所述LUN收到DPC返回的粒度对应的重删结果时,可以将标记为重删冲突的粒度写入本地的物理空间,记录写入的LBA和PBA,并根据写入的LBA和PBA更新本地映射表中的第一对应关系;根据标记为重删成功的粒度的LBA和hash更新本地映射表中记录的第二对应关系。
由于现有技术中,存储设备中的每个LUN维护各自的一张LBA与PBA的映射表,DPC维护***内唯一的哈希索引表。而本发明中LUN维护的映射表中可以包括LBA与PBA的第一对应关系和LBA与Hash的第二对应关系,因此用户可以通过LUN维护的映射表查询DPC上的数据,从而减少DPC的业务负担,提高读写效率。
另外,在本发明可选的实施例中,当确定哈希索引表中的hash记录已更新到LUN上时,将该hash记录添加到回收集合,并在回收集合中的hash记录符合回收条件时,回收该hash记录中PBA对应的物理空间。
因为DPC物理空间中的每一粒度数据都可能不止被一个LUN使用,也可能被一个LUN使用不止一次,所以采取引用计数的方式,实时统计哈希索引表中每一条记录的使用情况。DPC在哈希索引表中新建hash记录时,为该hash记录增设引用计数,引用计数起始值为1,若该hash记录被引用时,则该引用计数加1;若该hash记录被更新到LUN中的映射表时,则该引用计数减1;当引用计数为零时,回收对应的hash记录;若回收集合中的hash记录被引用时,则将该hash记录从所述回收集合中移除至哈希索引表,并将该hash记录的引用计数加1。在某条记录的引用计数为0时并不会立马回收,可根据设定的策略触发DPC回收,该策略由用户配置,既可以是可回收记录的个数达到阈值时触发,也可以是固定时间周期触发,在***运行期间随时可以更改策略,改完后会立即确认是否可回收。Hash保护功能可避免计数为0的记录在回收后立马又被使用,避免重复建立记录而浪费性能,提高了DPC的效率。
为使本发明的目的、技术方案及优点更加清楚明白,下面对本发明的方案作进一步地详细说明。
在存储***中,元数据包括两部分,即映射表和哈希索引表,其中,每个LUN维护各自的一张映射表,DPC维护***内唯一的哈希索引表。与现有技术不同,映射表既支持LBA-PBA的记录(此处的PBA指向LUN的物理空间),也支持LBA-Hash的记录,其具体组织方式如图4所示,整张映射表被划分成若干段,每一段包括标志区和映射区两部分,标志区每一个bit与其后映射区的每一条记录线性对应,用于标记该条记录中的映射类型,若为1,是Hash,若为0,则是PBA。假设LBA、PBA的长度均为8个字节,***若采用SHA-1算法做重删,即Hash的长度为20个字节,那么,映射区每一条记录的长度为20+8=28个字节。在用户配置完重删的算法时便可确定映射区每条记录的长度,单个段的长度设置具有很大的参考范围。
LUN接收到服务器下发的数据写入指令时,可以按命中的粒度拆分数据,从映射表中读取对应的映射,不对齐的部分会根据映射进行回读(若为PBA,则去LUN本地的物理空间读,若为Hash,则去DPC的物理空间读),并凑成完整粒度,然后将这些粒度下发给DPC,则重删处理流程如图5所示,其中包括:
步骤501、LUN将所有粒度下发给DPC,转步骤502;
步骤502、DPC计算出每个粒度的Hash,转步骤503;
步骤503、开始遍历哈希索引表,转步骤504;
步骤504、判断该Hash是否有记录,若是,则转步骤506;若否,则转步骤505;
步骤505、读取记录内容,转步骤507;
步骤506、标记该hash,转步骤507;
步骤507、结束遍历哈希索引表,转步骤508;
步骤508、判断是否所有hash均有记录,若是,则转步骤511;若否,则转步骤509;
步骤509、分配物理空间写入被标记hash的数据,转步骤510;
步骤510、根据返回的PBA逐个建立记录,转步骤511;
步骤511、判断是否为无损重删,若是,则转步骤512;若否则转步骤513;
步骤512、仅将新建记录的hash所对应的粒度标记为重删成功,转步骤514;
步骤513、将每个粒度标记为重删成功,转步骤520;
步骤514、开始遍历所读取的记录,转步骤515;
步骤515、根据记录中的PBA去物理空间读取数据,转步骤516;
步骤516、判断是否与新数据相同,若是,则转步骤517;若否,则转步骤518;
步骤517、将对应的粒度标记为重删成功,转步骤519;
步骤518、将对应的粒度标记为重删冲突,转步骤519;
步骤519、结束遍历所读取的记录,转步骤520;
步骤520、将所有hash及粒度处理结果返回给LUN,转步骤521;
步骤521、LUN逐个解析粒度的处理结果,转步骤522;
步骤522、判断是否无重删冲突,若是,则转步骤523;若否,则转步骤524;
步骤523、更新映射表,并结束;
步骤524、向LUN本地的物理空间写入数据,转步骤525;
写入数据时,若LUN本地没有对应的物理空间,则LUN可以为该数据分配可用的物理空间后再进行数据写入。
步骤525、合并返回的PBA及重删成功的Hash,转步骤523。
至此图5所示步骤结束。
请参考图6,本发明的回收流程包括:
步骤601、哈希索引表新建记录是对应的引用计数设为1,转步骤602;
步骤602、DPC由新数据计算的hash命中哈希索引表的某条记录;
步骤603、判断引用计数是否为0,若是,则转步骤604;若否,则转步骤605;
步骤604、将该记录从回收集合中剔除,转步骤605;
步骤605、将该引用计数加1,转步骤606;
步骤606、LUN更新映射表的某条记录时,记录原映射若为hash,转步骤607;
步骤607、引用计数减1,转步骤608;
步骤608、判断引用计数是否为0,若是,则转步骤609;若否,则转步骤610;
步骤609、将该记录纳入回收集合,转步骤610;
步骤610、判断策略条件是否满足,若是,则转步骤611;若否,则转步骤601;
其中,该策略由用户配置,既可以是可回收记录的个数达到阈值时触发,也可以是固定时间周期触发,在***运行期间随时可以更改策略,改完后会立即确认是否可回收。
步骤611、判断回收集合是否为空,若是,则结束流程;若否,则转步骤612;
步骤612、统一回收DPC的物理空间,并结束流程。
上述过程即为Hash保护功能,可避免计数为0的记录在回收后立马又被使用,导致重复建立记录而浪费性能,也降低DPC的效率,可以使存储设备提高存储介质的利用率,为用户降低成本。
相比于现有技术,本发明的存储***能针对不同的应用场景进行配置并支持删除模式的动态转换,因此使***的使用范围更加广泛,提高***的效率及灵活性;并且在保证数据安全及***性能的前提下,可以通过回收机制自动清除冗余数据,提高存储介质利用率。
基于相同的构思,本发明还提供一种重复删除的模式切换装置,该装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,本发明的重复删除的模式切换装置作为一个逻辑意义上的装置,是通过其所在存储设备的CPU将存储器中对应的计算机程序指令读取后运行而成。
请参考图7a是本发明一种示例性实施方式中的一种重复删除的模式切换装置700,所述装置应用于存储设备中的DPC,该装置基本运行环境包括CPU,存储器以及其他硬件,从逻辑层面上来看,该重复删除的模式切换装置的组成如图7b所示,其中该装置700包括:
接收单元701,用于接收LUN根据数据写入指令下发的由数据拆分成的多个粒度;
计算单元702,用于分别计算所述多个粒度对应的hash;
统计单元703,用于遍历哈希索引表分别统计所述多个粒度对应的hash中无记录hash和有记录hash,在哈希索引表中为无记录hash创建新的hash记录;
标记单元704,用于判断当前重删模式是有损重删还是无损重删;若是有损重删,则将每个粒度标记为重删成功;若是无损重删,则将新记录hash以及有记录hash中的粒度对应的数据与原数据相同的粒度标记为重删成功,将与有记录hash中的粒度对应的数据与原数据不同的粒度标记为重删冲突。
可选的,所述装置还包括:
返回单元705,用于所述多个粒度的重删结果返回LUN,以使LUN根据所述多个粒度的重删结果更新本地的映射表的第一对应关系和第二对应关系,所述映射表中包括LBA与LUN本地的物理块地址PBA的第一对应关系和LBA与DPC上的Hash的第二对应关系。
可选的,所述统计单元703,具体用于获取第一粒度对应的第一hash,在哈希索引表中查找是否存在于该第一hash相同的第二hash;若存在,则将该第一hash统计到有记录hash中;若不存在,则将所述第一hash对应的第一粒度写入DPC,将所述第一粒度在DPC中的PBA以及所述第一hash的对应关系添加到所述哈希索引表中,并将该hash统计到无记录hash中。
可选的,所述装置还包括:
回收单元706,用于当确定哈希索引表中的hash记录没有LUN引用时,将该hash记录添加到回收集合,并在回收集合中的hash记录符合回收条件时,回收该hash记录中PBA对应的物理空间。
可选的,所述回收单元706,具体用于在哈希索引表中新建hash记录时,为该hash记录增设引用计数,引用计数起始值为1,若该hash记录被引用时,则该引用计数加1;若该hash记录被更新到LUN中的映射表时,则该引用计数减1;当引用计数为零时,回收对应的hash记录;若回收集合中的hash记录被引用时,则将该hash记录从所述回收集合中移除至哈希索引表,并将该hash记录的引用计数加1。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种重复删除的模式切换方法,其特征在于,所述方法应用于存储设备中的DPC,所述方法包括:
DPC接收LUN根据数据写入指令下发的由数据拆分成的多个粒度;
分别计算所述多个粒度对应的hash;
遍历哈希索引表分别统计所述多个粒度对应的hash中无记录hash和有记录hash,在哈希索引表中为无记录hash创建新的hash记录;
判断当前重删模式是有损重删还是无损重删;
若是有损重删,则将每个粒度标记为重删成功;
若是无损重删,则将新记录hash以及有记录hash中的粒度对应的数据与原数据相同的粒度标记为重删成功,将与有记录hash中的粒度对应的数据与原数据不同的粒度标记为重删冲突。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
DPC将所述多个粒度的重删结果返回LUN,以使LUN根据所述多个粒度的重删结果更新本地的映射表的第一对应关系和第二对应关系,所述映射表中包括LBA与LUN本地的物理块地址PBA的第一对应关系和LBA与DPC上的Hash的第二对应关系。
3.根据权利要求1所述的方法,其特征在于,所述遍历哈希索引表分别统计所述多个粒度对应的hash中无记录hash和有记录hash,在哈希索引表中为无记录hash创建新的hash记录,具体为:
获取第一粒度对应的第一hash,在哈希索引表中查找是否存在于该第一hash相同的第二hash;若存在,则将该第一hash统计到有记录hash中;若不存在,则将所述第一hash对应的第一粒度写入DPC,将所述第一粒度在DPC中的PBA以及所述第一hash的对应关系添加到所述哈希索引表中,并将该hash统计到无记录hash中。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当确定哈希索引表中的hash记录没有LUN引用时,将该hash记录添加到回收集合,并在回收集合中的hash记录符合回收条件时,回收该hash记录中PBA对应的物理空间。
5.根据权利要求4所述的方法,其特征在于,所述确定哈希索引表中的hash记录已更新到LUN上,具体包括:
DPC在哈希索引表中新建hash记录时,为该hash记录增设引用计数,引用计数起始值为1,若该hash记录被引用时,则该引用计数加1;若该hash记录被更新到LUN中的映射表时,则该引用计数减1;当引用计数为零时,回收对应的hash记录;
若回收集合中的hash记录被引用时,则将该hash记录从所述回收集合中移除至哈希索引表,并将该hash记录的引用计数加1。
6.一种重复删除的模式切换装置,其特征在于,所述装置应用于存储设备中的DPC,所述装置包括:
接收单元,用于接收LUN根据数据写入指令下发的由数据拆分成的多个粒度;
计算单元,用于分别计算所述多个粒度对应的hash;
统计单元,用于遍历哈希索引表分别统计所述多个粒度对应的hash中无记录hash和有记录hash,在哈希索引表中为无记录hash创建新的hash记录;
标记单元,用于判断当前重删模式是有损重删还是无损重删;若是有损重删,则将每个粒度标记为重删成功;若是无损重删,则将新记录hash以及有记录hash中的粒度对应的数据与原数据相同的粒度标记为重删成功,将与有记录hash中的粒度对应的数据与原数据不同的粒度标记为重删冲突。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
返回单元,用于所述多个粒度的重删结果返回LUN,以使LUN根据所述多个粒度的重删结果更新本地的映射表的第一对应关系和第二对应关系,所述映射表中包括LBA与LUN本地的物理块地址PBA的第一对应关系和LBA与DPC上的Hash的第二对应关系。
8.根据权利要求6所述的装置,其特征在于,
所述统计单元,具体用于获取第一粒度对应的第一hash,在哈希索引表中查找是否存在于该第一hash相同的第二hash;若存在,则将该第一hash统计到有记录hash中;若不存在,则将所述第一hash对应的第一粒度写入DPC,将所述第一粒度在DPC中的PBA以及所述第一hash的对应关系添加到所述哈希索引表中,并将该hash统计到无记录hash中。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
回收单元,用于当确定哈希索引表中的hash记录没有LUN引用时,将该hash记录添加到回收集合,并在回收集合中的hash记录符合回收条件时,回收该hash记录中PBA对应的物理空间。
10.根据权利要求9所述的装置,其特征在于,
所述回收单元,具体用于在哈希索引表中新建hash记录时,为该hash记录增设引用计数,引用计数起始值为1,若该hash记录被引用时,则该引用计数加1;若该hash记录被更新到LUN中的映射表时,则该引用计数减1;当引用计数为零时,回收对应的hash记录;若回收集合中的hash记录被引用时,则将该hash记录从所述回收集合中移除至哈希索引表,并将该hash记录的引用计数加1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610947884.0A CN106528703A (zh) | 2016-10-26 | 2016-10-26 | 一种重复删除的模式切换方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610947884.0A CN106528703A (zh) | 2016-10-26 | 2016-10-26 | 一种重复删除的模式切换方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106528703A true CN106528703A (zh) | 2017-03-22 |
Family
ID=58293360
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610947884.0A Pending CN106528703A (zh) | 2016-10-26 | 2016-10-26 | 一种重复删除的模式切换方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106528703A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107122130A (zh) * | 2017-04-13 | 2017-09-01 | 杭州宏杉科技股份有限公司 | 一种数据重删方法及装置 |
CN110187834A (zh) * | 2019-05-24 | 2019-08-30 | 杭州宏杉科技股份有限公司 | 重删副本的数据处理方法、装置、电子设备 |
CN111538465A (zh) * | 2020-07-07 | 2020-08-14 | 南京云信达科技有限公司 | 一种基于Linux高性能数据重删方法 |
EP3704597A4 (en) * | 2017-10-30 | 2021-08-25 | Coder Technologies, Inc. | CLOUD DEVELOPMENT ENVIRONMENT WITH DEDUPLICATION ENGINE IMPROVING STORAGE EFFICIENCY |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719099A (zh) * | 2009-11-26 | 2010-06-02 | 成都市华为赛门铁克科技有限公司 | 减小固态硬盘写入放大的方法及装置 |
CN102646069A (zh) * | 2012-02-23 | 2012-08-22 | 华中科技大学 | 一种延长固态盘使用寿命的方法 |
CN105190573A (zh) * | 2013-02-01 | 2015-12-23 | 辛博立科伊奥公司 | 存储数据的减少冗余 |
CN105912622A (zh) * | 2016-04-05 | 2016-08-31 | 重庆大学 | 一种针对无损压缩文件的数据去重方法 |
-
2016
- 2016-10-26 CN CN201610947884.0A patent/CN106528703A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719099A (zh) * | 2009-11-26 | 2010-06-02 | 成都市华为赛门铁克科技有限公司 | 减小固态硬盘写入放大的方法及装置 |
CN102646069A (zh) * | 2012-02-23 | 2012-08-22 | 华中科技大学 | 一种延长固态盘使用寿命的方法 |
CN105190573A (zh) * | 2013-02-01 | 2015-12-23 | 辛博立科伊奥公司 | 存储数据的减少冗余 |
CN105912622A (zh) * | 2016-04-05 | 2016-08-31 | 重庆大学 | 一种针对无损压缩文件的数据去重方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107122130A (zh) * | 2017-04-13 | 2017-09-01 | 杭州宏杉科技股份有限公司 | 一种数据重删方法及装置 |
EP3704597A4 (en) * | 2017-10-30 | 2021-08-25 | Coder Technologies, Inc. | CLOUD DEVELOPMENT ENVIRONMENT WITH DEDUPLICATION ENGINE IMPROVING STORAGE EFFICIENCY |
CN110187834A (zh) * | 2019-05-24 | 2019-08-30 | 杭州宏杉科技股份有限公司 | 重删副本的数据处理方法、装置、电子设备 |
CN110187834B (zh) * | 2019-05-24 | 2022-08-09 | 杭州宏杉科技股份有限公司 | 重删副本的数据处理方法、装置、电子设备 |
CN111538465A (zh) * | 2020-07-07 | 2020-08-14 | 南京云信达科技有限公司 | 一种基于Linux高性能数据重删方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106662981B (zh) | 存储设备、程序和信息处理方法 | |
CN108572792B (zh) | 数据存储方法、装置、电子设备及计算机可读存储介质 | |
CN105787037B (zh) | 一种重复数据的删除方法及装置 | |
CN103902623B (zh) | 用于在存储***上存取文件的方法和*** | |
CN103870514B (zh) | 重复数据删除方法和装置 | |
CN103761053B (zh) | 一种数据处理方法和装置 | |
CN102629247B (zh) | 一种数据处理方法、装置和*** | |
CN103020255B (zh) | 分级存储方法和装置 | |
CN109445702B (zh) | 一种块级数据去重存储*** | |
CN106527973A (zh) | 一种数据重复删除的方法及装置 | |
US20160350302A1 (en) | Dynamically splitting a range of a node in a distributed hash table | |
US7577808B1 (en) | Efficient backup data retrieval | |
CN107209714A (zh) | 分布式存储***及分布式存储***的控制方法 | |
CN103064797B (zh) | 数据处理方法和虚拟机管理平台 | |
EP3316150B1 (en) | Method and apparatus for file compaction in key-value storage system | |
CN102495894A (zh) | 重复数据查找方法、装置及*** | |
CN109766312A (zh) | 一种区块链存储方法、***、装置及计算机可读存储介质 | |
JP2013514561A (ja) | ストレージシステム | |
CN103098035A (zh) | 存储*** | |
CN103617097B (zh) | 文件恢复方法及装置 | |
Zou et al. | The dilemma between deduplication and locality: Can both be achieved? | |
CN103677674B (zh) | 一种数据处理方法及装置 | |
CN108763473A (zh) | 一种分布式存储的本地对象存储方法及装置 | |
CN106528703A (zh) | 一种重复删除的模式切换方法及装置 | |
CN103914522A (zh) | 一种应用于云存储重复数据删除的数据块合并方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170322 |
|
RJ01 | Rejection of invention patent application after publication |