CN106527973A - 一种数据重复删除的方法及装置 - Google Patents
一种数据重复删除的方法及装置 Download PDFInfo
- Publication number
- CN106527973A CN106527973A CN201610884178.6A CN201610884178A CN106527973A CN 106527973 A CN106527973 A CN 106527973A CN 201610884178 A CN201610884178 A CN 201610884178A CN 106527973 A CN106527973 A CN 106527973A
- Authority
- CN
- China
- Prior art keywords
- lun
- granularity
- hash
- local
- data
- 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
- 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
-
- 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/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)
- 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
本发明提供一种数据重复删除的方法及装置,可以在LUN接收数据写入指令时,通过判断是否允许重复删除,若是,则将数据划分为多个粒度,并通过DPC对多个粒度进行重复删除并将重删结果返回LUN,以使LUN根据重删结果更新本地的映射表;若否,则LUN根据本地的映射表将所述数据写入LUN本地的物理空间。因此,本发明能够在不同的应用场景进行配置并支持动态转换,从而使存储***的使用范围更加广泛,提高了存储***的存储效率及灵活性。
Description
技术领域
本发明涉及网络存储技术领域,尤其涉及一种数据重复删除的方法及装置。
背景技术
重复数据删除,是一种提高存储介质利用率的数据缩减技术。存储设备中包括多个LUN(Logical Unit Number,逻辑单元号),用于为应用服务器提供可访问的逻辑存储资源,LUN中有分为多个逻辑块,其对应的地址LBA(Logical Block Address,逻辑块地址)是应用服务器访问LUN时使用的地址。当有新的数据写入存储设备时,先将该数据切分成若干个固定长度的数据块,利用特定的哈希算法为每个数据块生成一个哈希值Hash,再通过查询哈希索引表确定新写入的数据块是否为重复数据,其中,所述哈希索引表用于在使用重复数据删除的存储***中记录Hash到PBA(physical Block Address,物理块地址)的对应关系,所述PBA是向物理存储资源存取数据时使用的地址;若确定为重复数据,则丢弃该数据,并更新映射表,将对应LBA映射至该Hash;否则,将该数据块写入存储设备,将对应LBA映射至该Hash,同时,在哈希索引表中增加Hash至PBA的记录。其中所述映射表用于在使用重复数据删除的存储***中记录LBA到Hash的对应关系。所述LBA、PBA、映射表以及哈希索引表的关系如图1所示。
现有的重复数据删除功能始终开启,不允许关闭,也不支持动态地开关。因此在数据重复概率较小时,重复删除会降低***的工作效率,导致***整体不够灵活,使得适用的应用场景变得很局限。
发明内容
有鉴于此,本发明提供一种数据重复删除的方法及装置来解决现有技术中重复删除不支持动态开关的问题。
具体地,本发明是通过如下技术方案实现的:
本发明提供一种数据重复删除的方法,所述方法应用于存储设备,所述方法包括:
LUN接收数据写入指令时,判断是否允许重复删除;
若是,则将数据划分为多个粒度,并将所述多个粒度下发给DPC;
DPC接收LUN下发的多个粒度,对所述多个粒度进行重复删除并记录所述多个粒度的重删结果返回LUN;
LUN根据DPC返回的所述多个粒度的重删结果更新本地的映射表的第一对应关系和第二对应关系,所述映射表中包括LBA与LUN本地的物理块地址PBA的第一对应关系和LBA与DPC上的Hash的第二对应关系;
若否,则LUN根据本地的映射表将所述数据写入LUN本地的物理空间。
进一步的,所述方法还包括:
预先为DPC设置全局开关,为每个LUN设置局部开关;
判断是否允许重复删除的具体方法为:
判断全局开关是否开启;若全局开关开启,则判断所述LUN对应的局部开关是否开启;若局部开关开启,则允许重复删除;若全局开关未开启或局部开关未开启,则不允许重复删除。
进一步的,所述DPC接收LUN下发的多个粒度,对所述多个粒度进行重复删除并记录所述多个粒度的重删结果返回LUN,具体包括:
分别计算所述多个粒度对应的hash;
获取第一粒度对应的第一hash,在哈希索引表中查找是否存在与该第一hash相同的第二hash;若存在,则读取物理空间中所述第二hash对应的数据并与所述第一hash对应的数据进行比较,若相同,则将该第一hash对应的第一粒度的重删结果标记为重删成功;若不同,则将该第一hash对应的第一粒度的重删结果标记为重删冲突;若不存在,则将所述第一hash对应的第一粒度写入DPC,将所述第一粒度在DPC中的PBA以及所述第一hash的对应关系添加到所述哈希索引表中,并将所述第一粒度的重删结果标记为重删成功;对每个粒度完成重复删除后,记录每个粒度对应的重删结果,并发送到所述LUN;
所述LUN根据DPC返回的所述多个粒度的重删结果更新本地的映射表的第一对应关系和第二对应关系,包括:
LUN根据DPC返回的重删结果,将标记为重删冲突的粒度写入本地的物理空间,根据写入的LBA和PBA更新本地映射表中的第一对应关系;根据标记为重删成功的粒度在本地的LBA和在DPC中的hash更新本地映射表中记录的第二对应关系。
进一步的,所述LUN根据本地的映射表将所述数据写入LUN本地的物理空间,具体包括:
根据LUN本地的映射表确定数据的LBA对应的映射地址;
若映射地址是PBA,则根据该PBA将该数据就写入本地的物理空间;若映射地址是hash,或者没有映射地址,则为该LBA分配新的物理空间进行写入,并根据返回的PBA更新映射表。
进一步的,所述方法还包括:
LUN根据DPC返回的所述多个粒度的重删结果,将标记为重删成功的且存储于本地物理空间的粒度对应的物理空间进行回收。
基于相同的构思,本发明还提供一种数据重复删除的装置,所述装置应用于存储设备,所述装置包括:
判断单元,用于在LUN接收数据写入指令时,判断是否允许重复删除;
下发单元,用于若允许重复删除,则将数据划分为多个粒度,并将所述多个粒度下发给DPC上的重删单元;
重删单元,用于接收LUN下发的多个粒度,对所述多个粒度进行重复删除并记录所述多个粒度的重删结果返回LUN的更新单元;
更新单元,用于根据重删单元返回的所述多个粒度的重删结果更新本地的映射表的第一对应关系和第二对应关系,所述映射表中包括LBA与LUN本地的PBA的第一对应关系和LBA与DPC上的Hash的第二对应关系;
写入单元,用于若不允许重复删除,则根据LUN本地的映射表将所述数据写入LUN本地的物理空间。
进一步的,所述装置还包括:
设置单元,用于预先为DPC设置全局开关,为每个LUN设置局部开关;
所述判断单元,具体用于判断全局开关是否开启;若全局开关开启,则判断所述LUN对应的局部开关是否开启;若局部开关开启,则允许重复删除;若全局开关未开启或局部开关未开启,则不允许重复删除。
进一步的,所述重删单元,具体用于分别计算所述多个粒度对应的hash;获取第一粒度对应的第一hash,在哈希索引表中查找是否存在与该第一hash相同的第二hash;若存在,则读取物理空间中所述第二hash对应的数据并与所述第一hash对应的数据进行比较,若相同,则将该第一hash对应的第一粒度的重删结果标记为重删成功;若不同,则将该第一hash对应的第一粒度的重删结果标记为重删冲突;若不存在,则将所述第一hash对应的第一粒度写入DPC,将所述第一粒度在DPC中的PBA以及所述第一hash的对应关系添加到所述哈希索引表中,并将所述第一粒度的重删结果标记为重删成功;对每个粒度完成重复删除后,记录每个粒度对应的重删结果,并发送到所述LUN的更新单元;
所述更新单元,具体用于根据重删单元返回的重删结果,将标记为重删冲突的粒度写入本地的物理空间,根据写入的LBA和PBA更新本地映射表中的第一对应关系;根据标记为重删成功的粒度在本地的LBA和在DPC中的hash更新本地映射表中记录的第二对应关系。
进一步的,所述写入单元,具体用于根据LUN本地的映射表确定数据的LBA对应的映射地址;若映射地址是PBA,则根据该PBA将该数据就写入本地的物理空间;若映射地址是hash,或者没有映射地址,则为该LBA分配新的物理空间进行写入,并根据返回的PBA更新映射表。
进一步的,所述装置还包括:
回收单元,用于根据重删单元返回的所述多个粒度的重删结果,将标记为重删成功的且存储于LUN本地物理空间的粒度对应的物理空间进行回收。
由此可见,本发明在LUN接收数据写入指令时,通过判断是否允许重复删除,若是,则将数据划分为多个粒度,并通过DPC对多个粒度进行重复删除并将重删结果返回LUN,以使LUN根据重删结果更新本地的映射表;若否,则LUN根据本地的映射表将所述数据写入LUN本地的物理空间。因此,本发明能够在不同的应用场景进行配置并支持动态转换,从而使存储***的使用范围更加广泛,提高了存储***的存储效率及灵活性。
附图说明
图1是LBA、PBA、映射表以及哈希索引表的关系示意图;
图2是本发明一种示例性实施方式中的一种数据重复删除方法的处理流程图;
图3是本发明一种示例性实施方式中的***结构示意图;
图4是本发明一种示例性实施方式中的映射表组织方式示意图;
图5是本发明一种示例性实施方式中的一种数据重复删除的处理流程图;
图6是本发明一种示例性实施方式中的一种数据写入的处理流程图;
图7是本发明一种示例性实施方式中的一种物理空间回收的处理流程图;
图8a本发明一种示例性实施方式中的数据重复删除装置所在设备的硬件结构图;
图8b本发明一种示例性实施方式中的一种数据重复删除装置的逻辑结构图。
具体实施方式
为了解决现有技术存在的问题,本发明提供一种数据重复删除的方法及装置,在LUN接收数据写入指令时,通过判断是否允许重复删除,若是,则将数据划分为多个粒度,并通过DPC对多个粒度进行重复删除并将重删结果返回LUN,以使LUN根据重删结果更新本地的映射表;若否,则LUN根据本地的映射表将所述数据写入LUN本地的物理空间。因此,本发明能够在不同的应用场景进行配置并支持动态转换,从而使存储***的使用范围更加广泛,提高了存储***的存储效率及灵活性。
请参考图2,是本发明一种示例性实施方式中的一种数据重复删除的方法的处理流程图,所述方法应用于存储设备,所述存储设备可以是单独的设备,也可以是设备集群,所述方法包括:
步骤201、LUN接收数据写入指令时,判断是否允许重复删除;若是,则转步骤202;若否,则转步骤205;
请参考图3,在本实施例中,存储设备包括一个DPC以及多个LUN,其中,所述DPC(Deduplication Process Center,重删处理中心)主要负责对新数据进行重删处理、维护哈希索引表、存取重删成功的数据;所述LUN用于维护映射表,并提供访问资源。当LUN接收数据写入指令时,可以先判断当前***是否允许重复删除。
在本发明可选的实施例中,可以预先为DPC设置全局开关,为每个LUN设置局部开关;所述全局开关***级别的开关,若关闭,***接收的所有数据都不再做重删处理,若开启,各LUN根据自身设置处理数据;所述局部开关是LUN级别的开关,若关闭,写入该LUN的数据不做重删,若开启,写入该LUN的数据做重删,仅在全局开关处于开启状态时该设置才有效。全局开关和局部开关都具备用户调控的功能,用户可以根据实际需求进行设置。当LUN接收数据写入指令时,首先判断全局开关是否开启;若全局开关开启,则进一步判断所述LUN对应的局部开关是否开启;若局部开关开启,则认为当前允许重复删除;若全局开关未开启或局部开关未开启,则不允许重复删除。因此,本发明可以通过设置全局开关和局部开关实现对重删的动态开关,从而使***适应更多的应用场景,提高了***的应用灵活性。
步骤202、将数据划分为多个粒度,并将所述多个粒度下发给DPC;转步骤203;
本实施例中,所述粒度是指在逻辑上将LUN划分成一个个固定长度的块并顺序编号,称每个块为一个粒度,粒度是重删的基本单位。LUN可以将接收到数据,按粒度的大小拆分数据,从本地映射表中读取对应的映射,不对齐的部分可以通过回读映射进行补齐,从而凑成完整粒度。
步骤203、DPC接收LUN下发的多个粒度,对所述多个粒度进行重复删除并记录所述多个粒度的重删结果返回LUN,转步骤204;
在本实施例中,DPC收到LUN下发的多个完整粒度时,可以分别计算所述多个完整粒度对应的hash,然后对每个粒度逐个进行重复删除操作。具体来讲,DPC首先获取第一粒度对应的第一hash,并在哈希索引表中查找是否存在与该第一hash相同的第二hash;若存在,则读取物理空间中所述第二hash对应的数据并与所述第一hash对应的数据进行比较,若相同,则将该第一hash对应的第一粒度的重删结果标记为重删成功;若不同,则将该第一hash对应的第一粒度的重删结果标记为重删冲突;若不存在,则先将所述第一hash对应的第一粒度写入DPC的物理空间,在获得对应的PBA后,将所述第一粒度在DPC中的PBA以及所述第一hash的对应关系添加到所述哈希索引表中,再将所述第一粒度的重删结果标记为重删成功,然后继续重复上述流程对其他粒度进行重复删除。当DPC对每个粒度完成重复删除后,记录每个粒度对应的重删结果,并发送到所述LUN。
步骤204、LUN根据DPC返回的所述多个粒度的重删结果更新本地的映射表的第一对应关系和第二对应关系,所述映射表中包括LBA与LUN本地的物理地址PBA的第一对应关系和LBA与DPC上的Hash的第二对应关系;
在本实施例中,DPC维护的哈希索引表包括DPC的PBA到Hash的对应关系,所述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的业务负担,提高读写效率。
步骤205、LUN根据本地的映射表将所述数据写入LUN本地的物理空间。
在本实施例中,若确定不允许重复删除,则LUN可以根据本地的映射表将所述数据写入LUN本地的物理空间。具体来讲,LUN可以根据LUN本地的映射表确定数据的LBA对应的映射地址;若映射地址是PBA,则根据该PBA将该数据就写入本地的物理空间;若映射地址是hash,或者没有映射地址,则为该LBA分配新的物理空间进行写入,并根据返回的PBA以及数据对应的LBA更新映射表。
对于某个LUN,若它的重删功能处于关闭状态,则其所接收的数据均会保存在LUN本地分配的物理空间中,当重删功能再次开启时,新数据所命中的粒度可能需要从本地物理空间回读数据凑成完整粒度后,便下发至DPC做重删,因为哈希冲突的概率极低,所以通常这些粒度的数据还会保存在DPC分配的物理空间中,由于本地物理空间所存放的数据在支持完回读后便不再具有任何用途,所以在新数据处理完成后,LUN会对其所命中的本地物理空间做回收处理。在本发明可选的实施例中,LUN根据DPC返回的所述多个粒度的重删结果,将标记为重删成功的且存储于本地物理空间的粒度对应的物理空间进行回收。若有粒度发生哈希冲突,则该粒度所对应的本地物理空间不会被回收,用于存放发生冲突的新数据。另外,即便是在重删功能开启的状态下,某个粒度因为发生了哈希冲突而被保存在LUN本地的物理空间中,但是在新写入该粒度的数据重删成功时,也可以回收该粒度在LUN本地的物理空间,从而可以实现***的自动瘦身,提高存储介质的利用率,降低成本。
为使本发明的目的、技术方案及优点更加清楚明白,下面对本发明的方案作进一步地详细说明。
在存储***中,元数据包括两部分,即映射表和哈希索引表,其中,每个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及一个DPC,全局开关作用在DPC上,若开启,DPC对LUN提供正常的读、写功能,若关闭,DPC对外表现为只读,即便***异常导致有LUN向DPC下发写请求也会被屏蔽,使得LUN按重删冲突处理;局部开关作用在LUN上,在全局开关已开启的前提下才有效,若开启,则将新数据下发至DPC做重删处理,若关闭,则直接将新数据写入LUN本地的物理空间。
存储***中的全局开关和局部开关均支持配置,即有4种组合,无论哪种,都不会影响服务器下发的读数据。在读数据时,LUN可以从本地的映射表中读取LBA对应的映射,若为PBA,则在LUN本地的物理空间读取数据;若为Hash,则去DPC的物理空间读取数据。但是写数据会受开关设置的影响,LUN接收到服务器下发的数据写入指令时,可以按命中的粒度拆分数据,从映射表中读取对应的映射,不对齐的部分会根据映射进行回读(若为PBA,则去LUN本地的物理空间读,若为Hash,则去DPC的物理空间读),并凑成完整粒度,假设***采用的是无损重删,不同开关设置的处理逻辑如下:
当重删功能开启时,即全局开关开启且局部开关开启,重删处理流程如图5所示,其中包括:
步骤501、LUN将所有粒度下发给DPC,转步骤502;
步骤502、DPC计算出每个粒度的Hash,转步骤503;
步骤503、开始遍历哈希索引表,转步骤504;
步骤504、判断该Hash是否有记录,若是,则转步骤506;若否,则转步骤505;
步骤505、标记该hash,转步骤507;
步骤506、读取记录内容,转步骤507;
步骤507、结束遍历哈希索引表,转步骤508;
步骤508、判断是否所有hash均有记录,若是,则转步骤511;若否,则转步骤509;
步骤509、分配物理空间写入被标记hash的数据,转步骤510;
步骤510、根据返回的PBA逐个建立记录,转步骤511;
步骤511、仅将新记录的hash所对应的粒度标记为重删成功;
步骤512、开始遍历所读取的记录,转步骤513;
步骤513、根据记录中的PBA去物理空间读取数据,转步骤514;
步骤514、判断是否与新数据相同,若是,则转步骤516;若否,则转步骤515;
步骤515、将对应的粒度标记为重删冲突,转步骤517;
步骤516、强对应的粒度标记为重删成功,转步骤517;
步骤517、结束遍历所读取的记录,转步骤518;
步骤518、将所有hash及粒度处理结果返回给LUN,转步骤519;
步骤519、LUN逐个解析粒度的处理结果,转步骤520;
步骤520、判断是否无重删冲突,若是,则转步骤523;若否,则转步骤521;
步骤521、向LUN本地的物理空间写入数据,转步骤522;
写入数据时,若LUN本地没有对应的物理空间,则LUN可以为该数据分配可用的物理空间后再进行数据写入。
步骤522、合并返回的PBA及重删成功的Hash,转步骤523;
步骤523、更新映射表,并结束。
在本实施例中,LUN将数据划分的完整粒度下发给DPC,由DPC通过哈希算法计算出每个粒度对应的hash,然后通过遍历哈希索引表统计无记录的Hash,若有Hash无记录,则DPC本地统一分配物理空间将这些无记录Hash对应的数据写下去,并根据返回的PBA逐个在哈希索引表中记录hash与DPC本地物理空间地址PBA的对应关系,然后将新建记录的Hash所对应的粒度标记为重删成功;而对于已有记录的Hash,DPC可以遍历所读取的记录,根据记录中的PBA先去DPC的物理空间读取数据,并将读取的数据与新数据比较,若相同,则将新数据对应的粒度标记为重删成功,若不同,则将新数据对应的粒度标记为重删冲突。最终,DPC将所有Hash及粒度处理结果返回给LUN,LUN逐个解析粒度的处理结果,若处理结果中无重删冲突,则直接根据返回的hash更新映射表,若有重删冲突,则LUN统一分配本地的物理空间将这些粒度的数据写下去,然后根据合并返回的PBA及重删成功的Hash,更新本地的映射表。
当重删功能关闭时,即全局开关关闭或局部开关关闭,数据写入的处理流程如图6所示,其中包括:
步骤601、开始遍历每个粒度的映射表记录,转步骤602;
步骤602、判断原映射是否为PBA,若是,则转步骤604;若否,则转步骤603;
步骤603、分配LUN本地的物理空间并写入数据,返回PBA,转步骤605;
步骤604、向PBA的物理空间写数据,转步骤605;
步骤605、结束遍历每个粒度的映射表记录;
步骤606、更新映射表,并结束。
在本实施例中,LUN可以通过遍历映射表判断粒度的原映射是否为PBA,若是,则根据PBA将这些粒度的数据写入LUN本地的物理空间;若原映射为Hash,则LUN统一分配LUN本地的物理空间并将这些粒度的数据写下去。由于本发明是在LUN层对两个开关做判断,而不采取分开做判断(LUN层判断局部开关,DPC判断全局开关),因此可以减少DPC向下调度的开销,减少DPC的负担,提高数据写入效率。
综上,对于某个LUN,若它的重删功能处于关闭状态,则其所接收的数据均会保存在LUN本地分配的物理空间中,当重删功能再次开启时,新数据所命中的粒度可能需要从本地物理空间回读数据凑成完整粒度后,下发至DPC进行重复删除,因为哈希冲突的概率极低,所以通常这些粒度的数据最终会保存在DPC分配的物理空间中,即本地物理空间所存放的数据在支持完回读后便不再具有任何用途,所以在新数据处理完成后,会对其所命中的本地物理空间做回收处理,回收流程如图7所示,其中包括:
步骤701、开始遍历DPC返回的各粒度的处理结果,转步骤702;
步骤702、判断是否重删成功,若是,则转步骤703;若否,则转步骤705;
步骤703、判断原映射是否为PBA,若是,则转步骤704;若否,则转步骤705;
步骤704、将该PBA纳入回收集合,转步骤705;
步骤705、结束遍历DPC返回的各粒度处理结果,转步骤706;
步骤706、判断回收集合是否为空,若是,则结束流程;若否,则转步骤707;
步骤707、统一回收LUN本地的物理空间,并结束流程。
在本实施例中,若有粒度发生哈希冲突,则该粒度所对应的本地物理空间不会被回收,用于存放发生冲突的新数据。另外,即便是在重删功能开启的状态下,某个粒度因为发生了哈希冲突而被保存在LUN本地的物理空间中,但是新写入该粒度的数据重删成功,则可以回收该粒度在LUN本地的物理空间。上述的回收过程也可以称之为自动瘦身功能,可以使存储设备提高存储介质的利用率,为用户降低成本。
相比于现有技术,本发明的存储***能针对不同的应用场景进行配置并支持动态转换,因此使***的使用范围更加广泛,提高***的效率及灵活性;并且在保证数据安全及***性能的前提下,可以通过回收机制自动清除开关转换所产生的冗余数据,提高存储介质利用率。
基于相同的构思,本发明还提供一种数据重复删除的装置,该装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,本发明的数据重复删除的装置作为一个逻辑意义上的装置,是通过其所在存储设备的CPU将存储器中对应的计算机程序指令读取后运行而成。
请参考图8a是本发明一种示例性实施方式中的一种数据重复删除的装置800,所述装置应用于存储设备,该装置基本运行环境包括CPU,存储器以及其他硬件,从逻辑层面上来看,该数据重复删除的装置的组成如图8b所示,其中该装置800包括:
判断单元801,用于在LUN接收数据写入指令时,判断是否允许重复删除;
下发单元802,用于若允许重复删除,则将数据划分为多个粒度,并将所述多个粒度下发给DPC上的重删单元;
重删单元803,用于接收LUN下发的多个粒度,对所述多个粒度进行重复删除并记录所述多个粒度的重删结果返回LUN的更新单元;
更新单元804,用于根据重删单元返回的所述多个粒度的重删结果更新本地的映射表的第一对应关系和第二对应关系,所述映射表中包括LBA与LUN本地的PBA的第一对应关系和LBA与DPC上的Hash的第二对应关系;
写入单元805,用于若不允许重复删除,则根据LUN本地的映射表将所述数据写入LUN本地的物理空间。
可选的,所述装置还包括:
设置单元806,用于预先为DPC设置全局开关,为每个LUN设置局部开关;
所述判断单元801,具体用于判断全局开关是否开启;若全局开关开启,则判断所述LUN对应的局部开关是否开启;若局部开关开启,则允许重复删除;若全局开关未开启或局部开关未开启,则不允许重复删除。
可选的,所述重删单元803,具体用于分别计算所述多个粒度对应的hash;获取第一粒度对应的第一hash,在哈希索引表中查找是否存在与该第一hash相同的第二hash;若存在,则读取物理空间中所述第二hash对应的数据并与所述第一hash对应的数据进行比较,若相同,则将该第一hash对应的第一粒度的重删结果标记为重删成功;若不同,则将该第一hash对应的第一粒度的重删结果标记为重删冲突;若不存在,则将所述第一hash对应的第一粒度写入DPC,将所述第一粒度在DPC中的PBA以及所述第一hash的对应关系添加到所述哈希索引表中,并将所述第一粒度的重删结果标记为重删成功;对每个粒度完成重复删除后,记录每个粒度对应的重删结果,并发送到所述LUN的更新单元;
所述更新单元804,具体用于根据重删单元返回的重删结果,将标记为重删冲突的粒度写入本地的物理空间,根据写入的LBA和PBA更新本地映射表中的第一对应关系;根据标记为重删成功的粒度在本地的LBA和在DPC中的hash更新本地映射表中记录的第二对应关系。
可选的,所述写入单元805,具体用于根据LUN本地的映射表确定数据的LBA对应的映射地址;若映射地址是PBA,则根据该PBA将该数据就写入本地的物理空间;若映射地址是hash,或者没有映射地址,则为该LBA分配新的物理空间进行写入,并根据返回的PBA更新映射表。
可选的,所述装置还包括:
回收单元807,用于根据重删单元返回的所述多个粒度的重删结果,将标记为重删成功的且存储于LUN本地物理空间的粒度对应的物理空间进行回收。
由此可见,本发明在LUN接收数据写入指令时,通过判断是否允许重复删除,若是,则将数据划分为多个粒度,并通过DPC对多个粒度进行重复删除并将重删结果返回LUN,以使LUN根据重删结果更新本地的映射表;若否,则LUN根据本地的映射表将所述数据写入LUN本地的物理空间。因此,本发明能够在不同的应用场景进行配置并支持动态转换,从而使存储***的使用范围更加广泛,提高了存储***的存储效率及灵活性。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种数据重复删除的方法,其特征在于,所述方法应用于存储设备,所述方法包括:
LUN接收数据写入指令时,判断是否允许重复删除;
若是,则将数据划分为多个粒度,并将所述多个粒度下发给DPC;
DPC接收LUN下发的多个粒度,对所述多个粒度进行重复删除并记录所述多个粒度的重删结果返回LUN;
LUN根据DPC返回的所述多个粒度的重删结果更新本地的映射表的第一对应关系和第二对应关系,所述映射表中包括LBA与LUN本地的物理块地址PBA的第一对应关系和LBA与DPC上的Hash的第二对应关系;
若否,则LUN根据本地的映射表将所述数据写入LUN本地的物理空间。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
预先为DPC设置全局开关,为每个LUN设置局部开关;
判断是否允许重复删除的具体方法为:
判断全局开关是否开启;若全局开关开启,则判断所述LUN对应的局部开关是否开启;若局部开关开启,则允许重复删除;若全局开关未开启或局部开关未开启,则不允许重复删除。
3.根据权利要求1所述的方法,其特征在于,所述DPC接收LUN下发的多个粒度,对所述多个粒度进行重复删除并记录所述多个粒度的重删结果返回LUN,具体包括:
分别计算所述多个粒度对应的hash;
获取第一粒度对应的第一hash,在哈希索引表中查找是否存在与该第一hash相同的第二hash;若存在,则读取物理空间中所述第二hash对应的数据并与所述第一hash对应的数据进行比较,若相同,则将该第一hash对应的第一粒度的重删结果标记为重删成功;若不同,则将该第一hash对应的第一粒度的重删结果标记为重删冲突;若不存在,则将所述第一hash对应的第一粒度写入DPC,将所述第一粒度在DPC中的PBA以及所述第一hash的对应关系添加到所述哈希索引表中,并将所述第一粒度的重删结果标记为重删成功;对每个粒度完成重复删除后,记录每个粒度对应的重删结果,并发送到所述LUN;
所述LUN根据DPC返回的所述多个粒度的重删结果更新本地的映射表的第一对应关系和第二对应关系,包括:
LUN根据DPC返回的重删结果,将标记为重删冲突的粒度写入本地的物理空间,根据写入的LBA和PBA更新本地映射表中的第一对应关系;根据标记为重删成功的粒度在本地的LBA和在DPC中的hash更新本地映射表中记录的第二对应关系。
4.根据权利要求1所述的方法,其特征在于,所述LUN根据本地的映射表将所述数据写入LUN本地的物理空间,具体包括:
根据LUN本地的映射表确定数据的LBA对应的映射地址;
若映射地址是PBA,则根据该PBA将该数据就写入本地的物理空间;若映射地址是hash,或者没有映射地址,则为该LBA分配新的物理空间进行写入,并根据返回的PBA更新映射表。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
LUN根据DPC返回的所述多个粒度的重删结果,将标记为重删成功的且存储于本地物理空间的粒度对应的物理空间进行回收。
6.一种数据重复删除的装置,其特征在于,所述装置应用于存储设备,所述装置包括:
判断单元,用于在LUN接收数据写入指令时,判断是否允许重复删除;
下发单元,用于若允许重复删除,则将数据划分为多个粒度,并将所述多个粒度下发给DPC上的重删单元;
重删单元,用于接收LUN下发的多个粒度,对所述多个粒度进行重复删除并记录所述多个粒度的重删结果返回LUN的更新单元;
更新单元,用于根据重删单元返回的所述多个粒度的重删结果更新本地的映射表的第一对应关系和第二对应关系,所述映射表中包括LBA与LUN本地的PBA的第一对应关系和LBA与DPC上的Hash的第二对应关系;
写入单元,用于若不允许重复删除,则根据LUN本地的映射表将所述数据写入LUN本地的物理空间。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
设置单元,用于预先为DPC设置全局开关,为每个LUN设置局部开关;
所述判断单元,具体用于判断全局开关是否开启;若全局开关开启,则判断所述LUN对应的局部开关是否开启;若局部开关开启,则允许重复删除;若全局开关未开启或局部开关未开启,则不允许重复删除。
8.根据权利要求6所述的装置,其特征在于,
所述重删单元,具体用于分别计算所述多个粒度对应的hash;获取第一粒度对应的第一hash,在哈希索引表中查找是否存在与该第一hash相同的第二hash;若存在,则读取物理空间中所述第二hash对应的数据并与所述第一hash对应的数据进行比较,若相同,则将该第一hash对应的第一粒度的重删结果标记为重删成功;若不同,则将该第一hash对应的第一粒度的重删结果标记为重删冲突;若不存在,则将所述第一hash对应的第一粒度写入DPC,将所述第一粒度在DPC中的PBA以及所述第一hash的对应关系添加到所述哈希索引表中,并将所述第一粒度的重删结果标记为重删成功;对每个粒度完成重复删除后,记录每个粒度对应的重删结果,并发送到所述LUN的更新单元;
所述更新单元,具体用于根据重删单元返回的重删结果,将标记为重删冲突的粒度写入本地的物理空间,根据写入的LBA和PBA更新本地映射表中的第一对应关系;根据标记为重删成功的粒度在本地的LBA和在DPC中的hash更新本地映射表中记录的第二对应关系。
9.根据权利要求6所述的装置,其特征在于,
所述写入单元,具体用于根据LUN本地的映射表确定数据的LBA对应的映射地址;若映射地址是PBA,则根据该PBA将该数据就写入本地的物理空间;若映射地址是hash,或者没有映射地址,则为该LBA分配新的物理空间进行写入,并根据返回的PBA更新映射表。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:
回收单元,用于根据重删单元返回的所述多个粒度的重删结果,将标记为重删成功的且存储于LUN本地物理空间的粒度对应的物理空间进行回收。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610884178.6A CN106527973A (zh) | 2016-10-10 | 2016-10-10 | 一种数据重复删除的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610884178.6A CN106527973A (zh) | 2016-10-10 | 2016-10-10 | 一种数据重复删除的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106527973A true CN106527973A (zh) | 2017-03-22 |
Family
ID=58331824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610884178.6A Pending CN106527973A (zh) | 2016-10-10 | 2016-10-10 | 一种数据重复删除的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106527973A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107122130A (zh) * | 2017-04-13 | 2017-09-01 | 杭州宏杉科技股份有限公司 | 一种数据重删方法及装置 |
CN107193503A (zh) * | 2017-05-27 | 2017-09-22 | 杭州宏杉科技股份有限公司 | 一种数据重删方法及存储设备 |
CN107632786A (zh) * | 2017-09-20 | 2018-01-26 | 杭州宏杉科技股份有限公司 | 一种数据重删的管理方法及装置 |
CN108762680A (zh) * | 2018-05-30 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种控制ddp模块开关的方法及其相关装置 |
CN109725849A (zh) * | 2017-10-27 | 2019-05-07 | 株式会社日立制作所 | 存储***和存储***的控制方法 |
CN111352587A (zh) * | 2020-02-24 | 2020-06-30 | 苏州浪潮智能科技有限公司 | 一种数据打包方法、装置 |
CN111984203A (zh) * | 2020-09-27 | 2020-11-24 | 苏州浪潮智能科技有限公司 | 一种数据重删方法、装置及电子设备和存储介质 |
CN112558876A (zh) * | 2020-12-14 | 2021-03-26 | 杭州宏杉科技股份有限公司 | Lun销毁方法及存储设备 |
CN113419681A (zh) * | 2021-06-28 | 2021-09-21 | 苏州浪潮智能科技有限公司 | 存储***重删方法、***、装置及存储介质 |
CN113535708A (zh) * | 2021-09-17 | 2021-10-22 | 苏州浪潮智能科技有限公司 | 一种数据重删方法、***、存储介质及设备 |
CN114138198A (zh) * | 2021-11-29 | 2022-03-04 | 苏州浪潮智能科技有限公司 | 一种数据重删的方法、装置、设备及可读介质 |
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 | 华中科技大学 | 一种延长固态盘使用寿命的方法 |
CN104123347A (zh) * | 2014-07-04 | 2014-10-29 | 北京思特奇信息技术股份有限公司 | 一种应用于boss***的数据重删方法及*** |
US9448886B2 (en) * | 2007-04-27 | 2016-09-20 | Gary Stephen Shuster | Flexible data storage system |
-
2016
- 2016-10-10 CN CN201610884178.6A patent/CN106527973A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9448886B2 (en) * | 2007-04-27 | 2016-09-20 | Gary Stephen Shuster | Flexible data storage system |
CN101719099A (zh) * | 2009-11-26 | 2010-06-02 | 成都市华为赛门铁克科技有限公司 | 减小固态硬盘写入放大的方法及装置 |
CN102646069A (zh) * | 2012-02-23 | 2012-08-22 | 华中科技大学 | 一种延长固态盘使用寿命的方法 |
CN104123347A (zh) * | 2014-07-04 | 2014-10-29 | 北京思特奇信息技术股份有限公司 | 一种应用于boss***的数据重删方法及*** |
Non-Patent Citations (1)
Title |
---|
廖海生等: "基于MD5算法的重复数据删除技术的研究与改进", 《计算机测量与控制》 * |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107122130A (zh) * | 2017-04-13 | 2017-09-01 | 杭州宏杉科技股份有限公司 | 一种数据重删方法及装置 |
CN107122130B (zh) * | 2017-04-13 | 2020-04-21 | 杭州宏杉科技股份有限公司 | 一种数据重删方法及装置 |
CN107193503A (zh) * | 2017-05-27 | 2017-09-22 | 杭州宏杉科技股份有限公司 | 一种数据重删方法及存储设备 |
CN107632786A (zh) * | 2017-09-20 | 2018-01-26 | 杭州宏杉科技股份有限公司 | 一种数据重删的管理方法及装置 |
CN107632786B (zh) * | 2017-09-20 | 2020-04-07 | 杭州宏杉科技股份有限公司 | 一种数据重删的管理方法及装置 |
CN109725849A (zh) * | 2017-10-27 | 2019-05-07 | 株式会社日立制作所 | 存储***和存储***的控制方法 |
CN108762680A (zh) * | 2018-05-30 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种控制ddp模块开关的方法及其相关装置 |
CN111352587A (zh) * | 2020-02-24 | 2020-06-30 | 苏州浪潮智能科技有限公司 | 一种数据打包方法、装置 |
CN111984203A (zh) * | 2020-09-27 | 2020-11-24 | 苏州浪潮智能科技有限公司 | 一种数据重删方法、装置及电子设备和存储介质 |
CN111984203B (zh) * | 2020-09-27 | 2022-07-29 | 苏州浪潮智能科技有限公司 | 一种数据重删方法、装置及电子设备和存储介质 |
CN112558876A (zh) * | 2020-12-14 | 2021-03-26 | 杭州宏杉科技股份有限公司 | Lun销毁方法及存储设备 |
CN112558876B (zh) * | 2020-12-14 | 2022-03-18 | 杭州宏杉科技股份有限公司 | Lun销毁方法及存储设备 |
CN113419681A (zh) * | 2021-06-28 | 2021-09-21 | 苏州浪潮智能科技有限公司 | 存储***重删方法、***、装置及存储介质 |
CN113419681B (zh) * | 2021-06-28 | 2023-08-04 | 苏州浪潮智能科技有限公司 | 存储***重删方法、***、装置及存储介质 |
CN113535708A (zh) * | 2021-09-17 | 2021-10-22 | 苏州浪潮智能科技有限公司 | 一种数据重删方法、***、存储介质及设备 |
WO2023040200A1 (zh) * | 2021-09-17 | 2023-03-23 | 苏州浪潮智能科技有限公司 | 一种数据重删方法、***、存储介质及设备 |
CN114138198A (zh) * | 2021-11-29 | 2022-03-04 | 苏州浪潮智能科技有限公司 | 一种数据重删的方法、装置、设备及可读介质 |
CN114138198B (zh) * | 2021-11-29 | 2024-05-28 | 苏州浪潮智能科技有限公司 | 一种数据重删的方法、装置、设备及可读介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106527973A (zh) | 一种数据重复删除的方法及装置 | |
US8996797B1 (en) | Dense tree volume metadata update logging and checkpointing | |
CN107066393A (zh) | 提高地址映射表中映射信息密度的方法 | |
US9037544B1 (en) | Snapshots and clones of volumes in a storage system | |
CN104025010B (zh) | 存储***中的可变长度编码 | |
CN105787037B (zh) | 一种重复数据的删除方法及装置 | |
CN106708425A (zh) | 分布式多模存储管理 | |
CN101241472B (zh) | 映射管理方法及*** | |
CN103064797B (zh) | 数据处理方法和虚拟机管理平台 | |
US20150058568A1 (en) | HIERARCHICAL STORAGE FOR LSM-BASED NoSQL STORES | |
CN103514249B (zh) | 一种数据自精简方法和***及存储装置 | |
CN108647151A (zh) | 一种全闪***元数据落盘方法、装置、设备及存储介质 | |
JP2017521762A (ja) | ストレージ装置、プログラム、情報処理方法 | |
CN106708751A (zh) | 包括用于多模操作的多分区的存储装置及其操作方法 | |
CN108701002A (zh) | 虚拟存储*** | |
CN102449607A (zh) | 具有多个闪存封装的存储*** | |
CN104765661B (zh) | 一种云存储服务中元数据服务节点的多节点热备方法 | |
CN110109915A (zh) | 用于管理哈希表的方法、设备和计算机程序产品 | |
CN110321301A (zh) | 一种数据处理的方法及装置 | |
CN105045850B (zh) | 云存储日志文件***中垃圾数据回收方法 | |
CN108763473A (zh) | 一种分布式存储的本地对象存储方法及装置 | |
CN109344090A (zh) | 数据中心中kvm虚拟机的虚拟硬盘***及数据中心 | |
CN106951375A (zh) | 在存储***中删除快照卷的方法及装置 | |
CN108604165A (zh) | 存储装置 | |
CN110018966A (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 |