CN107329692B - 一种数据重删的方法及存储设备 - Google Patents

一种数据重删的方法及存储设备 Download PDF

Info

Publication number
CN107329692B
CN107329692B CN201710422658.5A CN201710422658A CN107329692B CN 107329692 B CN107329692 B CN 107329692B CN 201710422658 A CN201710422658 A CN 201710422658A CN 107329692 B CN107329692 B CN 107329692B
Authority
CN
China
Prior art keywords
fingerprint
mapping
fingerprint mapping
partition
storage device
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
CN201710422658.5A
Other languages
English (en)
Other versions
CN107329692A (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.)
Hangzhou Sequoia Polytron Technologies Inc
Original Assignee
Hangzhou Sequoia Polytron Technologies Inc
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 Hangzhou Sequoia Polytron Technologies Inc filed Critical Hangzhou Sequoia Polytron Technologies Inc
Priority to CN201710422658.5A priority Critical patent/CN107329692B/zh
Publication of CN107329692A publication Critical patent/CN107329692A/zh
Application granted granted Critical
Publication of CN107329692B publication Critical patent/CN107329692B/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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Collating Specific Patterns (AREA)

Abstract

本申请提供一种数据重删的方法及存储设备,该方法应用于存储设备,该方法包括:根据存储设备的条件建立多个指纹映射分区;为每个指纹映射分区建立分区索引;基于分区索引在每个所述指纹映射分区建立多个指纹映射表,每个指纹映射表包括若干条指纹映射记录,多个指纹映射表按照指纹映射记录建立的时间段先后顺序排列;将每个指纹映射分区中的多个指纹映射表中时间段位于前面的若干个指纹映射表缓存在存储设备的内存中,其他的指纹映射表持久的保存在存储设备中。该方法可以降低重删元数据的内存消耗,提高重删处理速度。

Description

一种数据重删的方法及存储设备
技术领域
本申请涉及存储领域,尤其涉及一种数据重删技术。
背景技术
重删(全称为重复数据删除)技术,是一种自动搜索重复数据,并将相同数据保留唯一副本的存储技术。通过重删处理,可消除存储系统的冗余数据,降低对存储容量的需求。
实现重删技术的方法有很多种,但目前比较流行在线重删技术是基于Hash(译为散列或哈希)算法实现重删,该种重删方法主要包括:将写入的数据划分成定长或者不定长的数据块,计算每个数据块的散列值(也可称为指纹),通过散列值匹配,保留新增数据,删除重复数据。
在重删技术中,需要重删元数据,重删元数据包括逻辑地址映射表和指纹映射表,根据逻辑地址映射表和指纹映射表对写入数据进行重删处理,建立重删副本。
逻辑地址映射表包括多条逻辑地址映射记录,每条记录包括LUN的逻辑地址与重删副本的物理地址之间的映射关系,LUN(Logical Unit Number,逻辑单元号)是存储系统中,为用户提供的数据访问的存储单元,LUN包括多个逻辑地址块,每个逻辑地址块具有编号,该编号可称为逻辑地址,其中,逻辑地址可称为LBA(Logical Block Address,逻辑区块地址)。存储系统中还包括用于保存重删副本的存储介质,例如,磁盘、SSD和NVRAM等,存储介质可被划分成多个物理区块,每个区块均具有物理地址,也可称为PBA(Physics BlockAddress,物理区块地址)。
指纹映射表包括多条指纹映射记录,每条指纹映射记录包括数据的指纹与数据的重删副本的物理地址PBA之间的映射关系,指纹指可采用Hash算法得到,也可以称为Hash到PBA的映射关系。指纹映射表的作用是,当有待写入数据进行重删处理时,通过到指纹映射表中查询是否存在有相同指纹,来初步判断是否存在与待写入数据相同的重删副本,避免重复写入数据。
目前的重删技术中,重删元数据中指纹映射表通常缓存在存储系统的内存中,有多少指纹映射记录,就为其分配多少内存,指纹映射记录的增加也对应造成内存消耗增加,而每次对IO数据进行重删处理时,都需要查询指纹映射表来判断是否存在重删副本,内存消耗的增加会影响查询速度,因此会影响IO的处理速度和整个重删处理的性能。并且,指纹映射记录的数据量与重删副本的容量成正比,当重删副本的容量较小时,指纹映射记录可以全部缓存在内存,但随着重删副本的容量的增加,指纹映射记录需要占用更大的内存,当存储系统无法提供更大的内存时,为了保证重删的性能,一般采用限制重删副本的容量方式,这样重删副本的容量受到限制,目前的重删技术,一般用于存储容量较小的存储系统中。
发明内容
有鉴于此,本申请提供一种数据重删的方法及存储设备,用以降低重删元数据的内存消耗,提高重删处理速度。
具体地,本申请是通过如下技术方案实现的:
根据本申请的第一方面,提供一种数据重删的方法,所述方法应用于存储设备,该方法包括:
根据存储设备的条件建立多个指纹映射分区;
为所述每个指纹映射分区建立分区索引;
基于所述分区索引在每个所述指纹映射分区建立多个指纹映射表,每个所述指纹映射表包括若干条指纹映射记录,多个所述指纹映射表按照所述指纹映射记录建立的时间段先后顺序排列;
将每个所述指纹映射分区中的多个所述指纹映射表中时间段位于前面的若干个所述指纹映射表缓存在存储设备的内存中,其他的所述指纹映射表持久的保存在存储设备中。
可选的,在所述为所述每个指纹映射分区建立分区索引之后,还包括:
基于所述分区索引在每个所述指纹映射分区建立当前映射日志,所述当前映射日志包括位于前面的时间段的若干条指纹映射记录;
将所述当前映射日志持久保存在存储设备中,且缓存在所述存储设备的内存中。
可选的,所述当前映射日志中的若干条指纹映射记录按照所述指纹映射分区接收到待写入数据的指纹的时间先后顺序排列。
可选的,每个所述指纹映射表还包括:所述指纹映射表所在时间段的截止时间点、所述指纹映射记录中的起始指纹、所述指纹映射记录中的结束指纹和/或所述指纹映射记录的数量。
可选的,若干条所述指纹映射记录按照所述指纹映射记录中的指纹的数值的大小顺序排列。
可选的,在所述根据存储设备的条件建立多个指纹映射分区之后,还包括:
根据所述指纹映射分区的数量,提取写入数据的指纹长度中的若干位;
所述为所述每个指纹映射分区建立分区索引,具体包括:
根据所述若干位为指纹映射分区建立分区索引,其中,每个分区索引的索引值为所述若干位,不同分区索引的索引值不相同。
可选的,所述指纹映射记录包括写入数据的指纹的部分长度与重删副本的物理地址之间的映射关系,所述部分长度为所述写入数据的指纹长度除了提取的若干位以外的指纹长度;
每个所述指纹映射分区中写入数据的指纹长度被提取相同的若干位。
可选的,所述基于所述分区索引在每个所述指纹映射分区建立多个指纹映射表之后,还包括:
当所述指纹映射分区中位于最前面的时间段之后的时间新增加的指纹映射记录的数量达到预设数量时,生成最新时间段的指纹映射表,并将缓存在存储设备内存中的多个所述指纹映射表中位于最后面的时间段的所述指纹映射表从缓存中释放,且将其持久的保存在存储设备中;
将所述新增加的指纹映射记录添加到所述指纹映射分区的当前映射日志中,并将缓存在存储设备内存中的当前映射日志中的位于最后面的时间段的指纹映射记录从缓存中释放且将其从存储设备中删除。
可选的,所述将基于所述分区索引在每个所述指纹映射分区建立多个指纹映射表之后,还包括:
当所述指纹映射分区中的指纹映射表的数量超过预设数量时,将相邻时间段的指纹映射表合并成一个指纹映射表。
可选的,所述基于所述分区索引在每个所述指纹映射分区建立多个指纹映射表之后,还包括:
获取存储设备中没有引用的重删副本对应的指纹映射记录;
删除所述没有引用的重删副本对应的指纹映射记录;
当没有引用的重删副本的指纹映射记录所在的指纹映射表中剩余的指纹映射记录的数量小于预设数量时,将删除的指纹映射记录所在的指纹映射表中剩余的指纹映射记录合并至与其相邻的时间段的指纹映射表中,并删除所述没有引用的重删副本对应的指纹映射记录所在的指纹映射表。
可选的,在所述将所述当前映射日志持久保存在存储设备中,且缓存在所述存储设备的内存中之后,还包括:
当存储设备重启时,根据所述当前映射日志构建所述当前映射日志所在时间段的指纹映射表。
根据本申请的第二方面,提供一种数据重删的方法,所述方法应用于存储设备,该方法包括:
根据IO请求获取目标指纹;
查找所述目标指纹所在的指纹映射分区;
从所述所在的指纹映射分区中的按照时间段先后顺序排列的指纹映射表中依次查找是否存在所述目标指纹,并返回查找消息。
可选的,所述从所述所在的指纹映射分区中的按照时间段先后顺序排列的指纹映射表中依次查找是否存在所述目标指纹,并返回查找消息,具体包括:
步骤S1、从所述所在的指纹映射分区中的,位于最前面的时间段指纹映射表中查找所述目标指纹;
步骤S2、判断是否存在所述目标指纹,若是则返回查找成功的查找消息,若否则执行下述步骤S3;
步骤S3、按照时间段的先后顺序依次获取下一个指纹映射表,并判断是否能获取到下一个指纹映射表,若是,则执行下述步骤S4,若否,则返回查找失败的查找消息;
步骤S4、判断所述下一个指纹映射表是否缓存在存储设备的内存中,若是,则执行下述步骤S5,若否,则执行下述步骤S6;
步骤S5、在所述下一个指纹映射表中查找所述目标指纹,接着执行上述所述步骤S2;
步骤S6、将所述下一个指纹映射表加载到存储设备的内存中,然后接着执行上述所述步骤S5,再接着执行上述所述步骤S2。
根据本申请的第三方面,提供一种数据重删的方法,所述方法应用于存储设备,该方法包括:
获取IO请求中的待写入数据,且计算所述待写入数据的指纹;
在按照时间段先后顺序排列的指纹映射表中依次查找是否存在所述待写入数据的指纹;
当不存在时,根据所述待写入数据的指纹找到对应的指纹映射分区;
建立所述待写入数据的指纹与新分配的重删副本的物理地址之间的映射关系,并将所述映射关系添加到所述对应的指纹映射分区的当前映射日志中;
将所述映射关系添加到对应的指纹映射分区中位于最前面的时间段的指纹映射表中。
可选的,所述当不存在时,根据所述待写入数据的指纹找到对应的指纹映射分区,具体包括:
当不存在时,提取待写入数据的指纹长度中的若干位;
查找与所述若干位相同的分区索引值,根据所述分区索引值查找对应的指纹映射分区。
根据本申请的第四方面,提供一种存储设备,所述存储设备包括存储器和处理器,其特征在于,所述存储器中存储有多条指令,所述指令适于由处理器加载并执行上述所述的方法。
根据上述技术方案,本发明提供的数据重删的方法,对于重删元数据中的指纹映射记录进行了分区保存,通过建立多个指纹映射分区,可将体量庞大的指纹映射记录划分成体量适中的多个片段,每个片段保存在对应的指纹映射分区中,这样对于每个分区中的指纹映射记录可独立组织,提高对指纹映射记录的查询效率。并且根据时间的先后顺序,将每个指纹映射分区中的指纹映射记录分段组织,建立多个指纹映射表,时间最靠前的指纹映射记录保存在内存中,而之前的一些指纹映射记录持久的保存,这样可以降低内存的消耗,进而提高数据的重删处理的速度,并且,根据读写IO的时间局部性特点,用户在最新时间写入或者读取的数据,在将来一段时间内可能会再次读取对应的数据或者写入相同的数据,因此,按照时间的先后顺序组织指纹映射记录,还可以提高对指纹映射记录内存中查询的命中率,且指纹映射记录不需要占用大量的内存容量,不受存储设备的容量限制,可应用在大容量的存储设备中。
附图说明
图1是本申请提供的一种实施方式中的数据重删的方法的流程图;
图2是本申请提供的一种实施方式中的指纹映射分区的结构示意图;
图3是本申请提供的另一种实施方式中的指纹映射分区的结构示意图;
图4是本申请提供的又一种实施方式中的数据重删的方法的流程图;
图5是本申请提供的一种实施方式中的当前映射日志的数据结构示意图;
图6是本申请提供的一种实施方式中的指纹映射表的数据结构示意图;
图7是本申请提供的另一种实施方式中的数据重删的方法的流程图;
图8是本申请提供的又一种实施方式的数据重删的方法的流程图;
图9是本申请提供的又一种实施方式的数据重删的方法的流程图;
图10是本申请提供的又一种实施方式的数据重删的方法的流程图;
图11是本申请提供的又一种实施方式的数据重删的方法的流程图;
图12是本申请一种实施方式提供的存储设备的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
目前的重删技术中,当存储设备的LUN接收写IO请求中的待写入数据时,计算待写入数据的指纹,然后通过到指纹映射表中查询是否存在有相同指纹,来初步判断是否存在与待写入数据相同的重删副本,避免重复写入数据。
本发明中指纹,指在重删技术中,通过重删算法(例如,Hash算法或其他算法),对数据进行计算生成的结果,是用来标识数据的唯一标识。
指纹具有散列特性,没有规则可寻,数据的指纹与数据写入的位置和写入的时间均无关,只与数据内容相关,相同内容的数据具有唯一的指纹,但是,数据内容只要相差一点点,数据的指纹可能千差万别。因此,不能根据本次查询的指纹预期即将查询的指纹,不能通过存储系统的空间局部性来组织缓存的指纹映射表中的指纹映射记录。
但是,指纹查询来自用户发送的读写IO请求,根据时间局部性特点,用户现在读取的数据,在将来一段时间内可能会再次读取对应的数据或者写入相同的数据,例如,基于VDI(英文全称Virtual Desktop Infrastructure,即虚拟桌面基础架构)的IO请求具备上述特点。
基于上述的分析,本发明实施例提供一种数据重删的方法,如图1所示,该方法包括:
步骤10、根据存储设备的条件建立多个指纹映射分区。
如图2所示,根据存储设备的实际条件,例如,内存大小和CPU处理能力等确定建立合适的指纹映射分区数量,包括分区1-分区n多个指纹映射分区,例如,对于内存小于1G、双核CPU的存储设备,可建立256个指纹映射分区,对于具有更大内存容量和更强CPU的存储设备可以建立更多的指纹映射分区,具体指纹映射分区数量本实施例并不限定。
步骤20、为每个指纹映射分区建立分区索引。
建立多个指纹映射分区以后,为每个指纹映射分区建立分区索引,分区索引为指向指纹映射分区的中数据(例如,下述的指纹映射表中的数据)的指针,每个分区索引具有索引值,可根据该索引值快速定位到对应的指纹映射分区。
步骤30、基于分区索引在每个指纹映射分区建立多个指纹映射表,每个指纹映射表包括若干条指纹映射记录,多个指纹映射表按照指纹映射记录建立的时间段先后顺序排列。
如图2所示,每个指纹映射分区建立多个指纹映射表,例如,指纹映射表Tn、指纹映射表Tn-1,……,指纹映射表T1等,指纹映射表中包括指纹映射记录,指纹映射记录为数据的指纹与对数据进行重删处理的重删副本的物理地址之间的映射关系。
时间段是根据指纹映射记录的建立时间先后顺序划分的,具体划分方法可根据实际需要划分,例如,每个时间段包括若干个小时,则每隔若干个小时为一个时间段,按照时间的先后将对应时间段建立的指纹映射记录保存在对应的时间段中,该时间段中的多个指纹映射记录构成了指纹映射表。
这些指纹映射表按照建立时间的先后顺序排列,位于最前面的时间段(最近时间段)的指纹映射表Tn排在最前面,以此类推,位于最后面的时间段(最早时间段)的指纹映射表T1排在最后面,例如,时间段的时间间隔为一个小时,当前时间为中午12点,则12点至之前的11点的时间段为位于最前面的时间段,如果指纹映射分区中当前时间之前最早的指纹映射记录的建立时间是8点,则8点至9点这个时间段为最后面的时间段。
步骤40、将每个指纹映射分区中的多个指纹映射表中时间段位于前面的若干个指纹映射表缓存在存储设备的内存中,其他的指纹映射表持久的保存在存储设备中。
每个指纹映射分区的指纹映射表中时间段位于前面的,也就是近期时间段的指纹映射表缓存在内存中,其他的指纹映射表并不在内存中,而是持久的保存在存储设备中,持久的保存指保存在存储设备的持久化存储介质上,例如,磁盘、SSD(Solid State Drives,固态硬盘)和NVRAM(Non-Volatile Random Access Memory,非易失性随机访问存储器)等。
可根据存储设备内存容量大小确定缓存在内存中的指纹映射表,可只将位于最前面的时间段的指纹映射表缓存在内存中,或者,当内存较为充足时,可将时间段靠前的几个指纹映射表缓存在内容中。
本实施例中,对于重删元数据中的指纹映射记录进行了分区保存,通过建立多个指纹映射分区,可将体量庞大的指纹映射记录划分成体量适中的多个片段,每个片段保存在对应的指纹映射分区中,这样对于每个分区中的指纹映射记录可独立组织,提高对指纹映射记录的查询效率。
并且根据时间的先后顺序,将每个指纹映射分区中的指纹映射记录分段组织,建立多个指纹映射表,时间最靠前的指纹映射记录保存在内存中,而之前的一些指纹映射记录持久的保存,这样可以降低内存的消耗,进而提高数据的重删处理的速度,并且,根据读写IO的时间局部性特点,用户在最新时间写入或者读取的数据,在将来一段时间内可能会再次读取对应的数据或者写入相同的数据,因此,按照时间的先后顺序组织指纹映射记录,还可以提高对指纹映射记录内存中查询的命中率,且本实施例中的指纹映射记录不需要占用大量的内存容量,不受存储设备的容量限制,可应用在大容量的存储设备中。
在一个可选的实施例方式中,如图3和图4所示,在上述的步骤20之后,还可以包括以下步骤:
步骤21、基于分区索引在每个指纹映射分区建立当前映射日志,当前映射日志包括位于前面的时间段的若干条指纹映射记录;
步骤22、将当前映射日志持久保存在存储设备中,且缓存在存储设备的内存中。
当前映射日志用来持久化位于前面的时间段的指纹映射记录,其他时间段的指纹映射记录不需要保存在当前映射日志中,这样当有新增加的指纹映射记录时,可首先将指纹映射记录添加到当前映射日志中,然后在添加到对应的指纹映射表中,这样可减少持久化指纹映射记录的数量。
在一个可选的实施方式中,上述步骤21中的当前映射日志中的若干条指纹映射记录按照指纹映射分区接收到待写入数据的指纹的时间先后顺序排列。
本实施例中,当前映射日志中的指纹映射记录为数据(即将待写入数据写入存储设备后的数据)的指纹与重删副本的物理地址之间的映射关系,当有待写入数据需要写入存储设备中并需要为该待写入数据建立一条新的指纹映射记录时,首先根据待写入数据的指纹查找所在的指纹映射分区,然后在该指纹映射分区建立指纹映射记录,以将指纹映射记录保存该指纹映射分区的当前映射日志。
按照指纹映射分区接收到待写入数据的指纹的时间先后顺序组织当前映射日志,也就是按照待写入数据的指纹到达对应指纹映射分区的时间先后顺序组织当前映射日志,这样最早被接收到的待写入数据的指纹最先建立对应的指纹映射记录并添加到当前映射日志中,之后接收到的待写入数据的指纹并建立的指纹映射记录依次追加添加到之前的指纹映射记录后面并保存,如图5所示,当前映射日志包括多条指纹映射记录,例如,指纹1(待写入数据1的指纹)与物理地址1之间的映射关系、指纹2(待写入数据2的指纹)与物理地址2之间的映射关系、指纹3(待写入数据3的指纹)与物理地址3之间的映射关系等,待写入数据1的指纹最先到达指纹映射分区,将指纹映射记录1(即指纹1与物理地址1之间的映射关系)最先添加到当前映射日志中,然后待写入数据2的指纹到达指纹映射分区,将指纹映射记录2(即指纹2与物理地址2之间的映射关系)追加到指纹映射记录1的后面,之后到达的待写入数据3的指纹的指纹映射记录3(即指纹3与物理地址3之间的映射关系),追加到指纹映射记录2的后面,依次类推,这样,每添加一条指纹映射记录,只需要持久化新增的指纹映射记录,不需要改动之前的指纹映射记录,因此持久化的数据量最小,最大程度减少持久化的数据量。
在一个可选的实施方式中,如图6所示,每个指纹映射表还包括:指纹映射表所在时间段的截止时间点、指纹映射记录中的起始指纹、指纹映射记录中的结束指纹和/或指纹映射记录的数量。
本实施中,指纹映射表还可以包括指纹映射表所在时间段的截止时间点,该截止时间点是该时间段中最后一条指纹映射记录的建立时间,该截止时间也是位于该时间段前面的时间段的起始时间,这样保持指纹映射表中的指纹映射记录的基于时间段的连续性。多条指纹映射记录可以按照多种顺序排列,例如,可以按照指纹映射记录到达指纹映射分区的时间先后顺序排列,或者可以按照指纹映射记录中指纹的大小顺序排列,或者按照任意顺序排列,起始指纹可以是排在最前面的指纹映射记录中的指纹,结束指纹可以是排在最后面的指纹映射记录中的指纹。指纹映射记录的数量每个指映射记录表包含的指纹映射记录的条数,通过该数量可以初步判断指纹映射记录的大小。
在一个可选的实施例方式中,如图6所示,多条指纹映射记录按照指纹映射记录中的指纹的数值的大小顺序排列。
指纹是对写入数据根据算法进行运算得到的,指纹可以用二进制表示的数值,多条指纹映射记录可以按照指纹的数值从大到小或者从小到大的顺序进行排序,这样顺序排列后,在指纹映射记录中通过指纹进行查找时,可以利用快速查找算法(例如,折半查找法,也叫二分查找法),据此,可以提高查找效率,降低内存消耗,提高重删处理速度。
在一个可选的实施例方式中,如图4所示,上述的步骤10之后还可以包括以下步骤:
步骤11、根据指纹映射分区的数量,提取写入数据的指纹长度中的若干位;
上述的步骤20具体可以包括:
步骤20′、根据若干位为指纹映射分区建立分区索引,其中,每个分区索引的索引值为若干位,不同分区索引的索引值不相同。
本实施例中,在确定指纹映射分区的数量后,可以从写入数据的指纹长度中提取若干位,指纹长度指用二进制表示的包含多个字节的数值,该若干位可以是指纹长度中的连续的一个或者多个字节,也可以是从指纹长度中提取的不连续的若干位,进一步的根据提取的若干位建立分区索引,提取的若干位代表一个数值,分区索引的索引值为上述若干位代表的数值,不同分区索引的索引值不同,这样根据提取的若干位建立多个指纹映射分区。例如,如果有256个指纹映射分区,可以从指纹长度中截取1个字节(8个bit),1个字节可以得到256个不同数值的整数,每个整数可代表一个分区索引值,据此,通过不同的分区索引值可为组成256个指纹映射分区的分区索引。
在一个可选的实施例方式中,上述的指纹映射记录包括写入数据的部分指纹长度与重删副本的物理地址之间的映射关系,部分指纹长度为写入数据的指纹长度除了提取的若干位以外的指纹长度;每个指纹映射分区中写入数据的指纹长度被提取相同的若干位。
本实施例中,对于写入数据的指纹,可从指纹长度中提取若干位,根据剩下的指纹长度建立指纹映射记录,由于每个指纹分区的指纹被提取了相同的若干位,具有相同若干位的指纹在同一个指纹映射分区中,这些相同的若干位不需要保存在指纹映射记录中或者当前映射日志中,只需要根据剩下的指纹长度建立指纹映射记录,进而保存在指纹映射表中,可减少指纹映射记录中数据的容量。当然,提取的若干位进一步的可作为公共字段位,作为每个指纹映射分区中的分区索引值。
在一个可选的实施方式中,如图7所示,上述步骤30之后,还可以包括:
步骤50、当指纹映射分区中位于最前面的时间段之后的时间新增加的指纹映射记录的数量达到预设数量时,生成最新时间段的指纹映射表,并将缓存在存储设备内存中的多个指纹映射表中位于最后面的时间段的指纹映射表从缓存中释放,持久的保存在存储设备中;
步骤60、将新增加的指纹映射记录添加到指纹映射分区的当前映射日志中,并将缓存在存储设备内存中的当前映射日志中的位于最后面的时间段的指纹映射记录从缓存中释放且将其从存储设备中删除。
本实施例中,当新增的指纹映射记录达到预设数量时,就生成一个新的时间段,将该时间段的指纹映射记录保存在新的时间段中,作为一个新的指纹映射表,而之前缓存在内存中的指纹映射表中位于最后面的时间段(缓存的指纹映射表中最早的时间段)的指纹映射表从内存中释放并持久化。
并且,将新增加的指纹映射记录添加到当前映射日志,对于当前映射日志中的位于最后面时间段的指纹映射记录从内存中释放,并从存储设备的持久化存储介质中删除。
本实施例,可以使存储在内存中的指纹映射表始终保持一个合理的大小,避免导致内存中缓存数据量超过内存的容量;同时,使内存中的当前映射日志保持在一个合理的大小,当在存储重启后加载基于当前映射日志重构指纹映射表时,可以在一个可以预期的短时间内加载完成。
在一个可选的实施方式中,如图8所示,上述步骤30之后还可以包括:
步骤70、当指纹映射分区中的指纹映射表的数量超过预设数量时,将相邻时间段的指纹映射表合并成一个指纹映射表。
相邻时间段指时间段最接近的两个或多个时间段,可将两个或多个时间段对应的指纹映射表合并成一个指纹映射表。
本实施例中,对于每一个指纹映射分区,为了使指纹映射表的数量保持在一个合理数目,可将相邻时间段的指纹映射表进行合并,即,将相邻时间段的时间点进行合并,并将合并时间段中的指纹映射记录合并成一个指纹映射表,这样避免指纹映射表数量太多而影响查找效率。
在一个可选的实施方式中,如图8所示,上述步骤30之后还可以包括:
步骤80、获取存储设备中没有引用的重删副本对应的指纹映射记录;
步骤90、删除没有引用的重删副本对应的指纹映射记录;
步骤100、当没有引用的重删副本的指纹映射记录所在的指纹映射表中剩余的指纹映射记录的数量小于预设数量时,将删除的指纹映射记录所在的指纹映射表中剩余的指纹映射记录合并至与其相邻的时间段的指纹映射表中,并删除没有引用的重删副本对应的指纹映射记录所在的指纹映射表。
本实施例中,当用户对存储设备中的数据进行删除和改写时,时间一长,会产生很多没有引用的重删副本,这时需要回收这些没用引用的重删副本,此时,重删副本对应的指纹映射记录也需要从指纹映射表中删除,在删除指纹映射记录的同时,可以进行指纹映射表也进行合并,这样可减少指纹映射记录和指纹映射记录表的数据,进一步的提高内存利用率,减小内存消耗,提高查询效率。
在进行上述对指纹映射记录删除、合并和对指纹映射表进行合并等操作步骤时,可将需要操作的指纹映射表加载到内存中,然后进行上述各步骤的操作。
需要说明的是,上述用户对存储设备中数据进行删除和改写指的是,用于对存储设备中为用户提供的数据访问的存储单元中的数据进行的删除和改写。
在一个可选的实施方式中,上述步骤22之后还可以包括:
步骤110、当存储设备重启时,根据当前映射日志构建当前映射日志所在时间段的指纹映射表。
当前映射日志所在时间段指由当前映射日志中的多条指纹映射记录的建立时间点组成的时间段,当前映射日志中保存的是指纹映射表中位于前面的时间段的指纹映射记录,因此,该时间段与缓存在存储设备内存中的位于前面的时间段的指纹映射表的时间段通常是相同。
本实施例中,当存储设备由于掉电、存储设备故障、或者用户主观重启等原因对存储设备进行重启时,缓存在存储设备内存中的指纹映射记录表和当前指纹映射日志会丢失,由于当前映射日志持久保存在存储设备的存储介质中,因此,可通过回放调用持久存储介质中的当前映射日志,重新构建对应时间段的指纹映射表,不会造成因存储设备存储无法加载指纹映射表的情况。
本发明实施例还提供了一种数据重删的方法,该方法应用于存储设备,如图9所示,包括以下步骤:
步骤200、根据IO请求获取目标指纹。
IO请求可以包括读IO请求或者写IO请求,在读IO请求会直接携带指纹,写IO请求中会携带待写入数据,进而可根据重删算法计算数据的指纹,本实施例中将读IO请求中携带的指纹或者写IO请求中根据待写入数据计算的指纹称为目标指纹。
步骤210、查找目标指纹所在的指纹映射分区。
首先根据目标指纹查找所在的指纹映射分区,可根据指纹分区索引查找对应的指纹映射分区,例如,可提取指纹中的相关字节,根据该相关字节判断所在的分区索引,进而查找对应的指纹映射分区。或者根据上述实施例中描述的,当从指纹长度中提取若干位作为分区索引值时,在计算出目标指纹后,可从指纹长度中提取该若干位,比较那个分区索引的索引值与该若干位代表的数值相同,与提取的若干位代表的数值相同的分区索引值所在的指纹映射分区即为目标指纹所在的指纹映射分区。
步骤220、从所述所在的指纹映射分区中的按照时间段先后顺序排列的指纹映射表中依次查找是否存在目标指纹,并返回查找消息。
查找到指纹所在的指纹映射分区后,按照其中指纹映射表的顺序,按照时间由近及远,依次从指纹映射表中进行查找是否存在与目标指纹相同的指纹,如果存在可返回查找成功的查找消息,如果不存在可返回查找失败的查找消息。
下面举例具体说明,如果IO请求为读IO请求,若查找到与目标指纹相同的指纹,说明查找成功,则存储设备可根据目标指纹可以获得对应的指纹映射记录,根据指纹映射记录可以获取目标指纹对应的重删副本的物理地址,根据物理地址将获取的重删副本返回,即返回目标指纹对应的数据,此时返回的查找消息可为该数据;若没有查到到与目标指纹相同的指纹,说明查找失败,存储设备中不存在与目标指纹对应的重删副本,此时返回查找失败的查找消息。
如果IO请求为写IO请求,若查找到与目标指纹相同的指纹,说明查找成功,存储设备可根据该目标指纹获取对应的指纹映射记录,进一步的进行重删处理,该重删处理例如可以为,根据指纹映射记录获取对应的重删副本的物理地址,根据物理地址将获取的重删副本与待写入数据进行内容比较,如果内容不一致,说明出现的指纹冲突,此时还需要为待写入数据分配存储空间并保存待写入数据,此时返回的查找消息可为存在指纹冲突的查找消息,如果重删副本和待写入数据的内容一致,说明不存在指纹冲突,待写入数据已经存在重删副本,不需要进行保存,此时返回的查找消息可为重删副本存在的查找消息;若没有查找到与目标指纹相同的指纹,说明查找失败,该指纹映射表中不存在与目标指纹对应的指纹映射记录,即不存在待写入数据的重删副本,进行重删处理,该重删处理例如可以为,建立待写入数据的重删副本,在指纹映射表中增加指纹映射记录等,此时返回的查找消息为该目标指纹。
本实施例中,重点不在于如何进行重删处理,而在于如何进指纹查找获取目标指纹后,首先查找目标指纹所在的指纹映射分区,进而在对应的指纹映射分区的指纹映射表中查找目标指纹,而不需要在所有指纹映射表的指纹映射记录中进行查找,可以减小指纹查找的数据量,降低内存消耗,提高查询效率。
在一个可选的实施方式中,如图10所示,上述步骤220具体可以包括:
步骤S1、从所述所在的指纹映射分区中的,位于最前面的时间段指纹映射表中查找所述目标指纹;
步骤S2、判断是否存在目标指纹,若是则返回查找成功的查找消息,若否则执行下述步骤S3;
步骤S3、按照时间段的先后顺序依次获取下一个指纹映射表,并判断是否能获取到下一个指纹映射表,若是,则执行下述步骤S4,若否,则返回查找失败的查找消息;
步骤S4、判断所述下一个指纹映射表是否缓存在存储设备的内存中,若是,则执行下述步骤S5,若否,则执行下述步骤S6;
步骤S5、在所述下一个指纹映射表中查找目标指纹,接着执行上述所述步骤S2;
步骤S6、将所述下一个指纹映射表加载到存储设备的内存中,然后接着执行上述所述步骤S5,再接着执行上述所述步骤S2。
本实施例中,在对指纹进行查找时,首先从位于最前面的时间段指纹映射表中查找是否存与目标指纹相同的指纹映射记录,当没有查找到时,判断是否存在下一个时间段的指纹映射表,如果存在,进一步的判断该下一个时间段的指纹映射表是否在内存中,若不在内存中,说明该指纹映射表保存在存储设备的持久存储介质中,此时,将该指纹映射表加载在内存中,然后在该指纹映射表中再次查找是否存与目标指纹相同的指纹映射记录,直到遍历所在指纹映射分区中的所有指纹映射表。
本实施例中,根据IO请求访问的时间局部性,目标指纹很大概率上会在最近时间段的指纹映射表中,而最近时间段的指纹映射表缓存在内存中,同时指纹映射表有排序,所以查找速度快。
本发明实施例还提供了一种重删数据的方法,该方法应用于存储设备,如图11所示,该方法包括以下步骤:
步骤300、获取IO请求中的待写入数据,且计算待写入数据的指纹;
步骤310、在按照时间段先后顺序排列的指纹映射表中依次查找是否存在待写入数据的指纹;
步骤320、当不存在时,根据所述待写入数据的指纹找到对应的指纹映射分区;
步骤330、建立待写入数据的指纹与新分配的重删副本的物理地址之间的映射关系,即建立新的指纹映射记录,并将映射关系添加到对应的指纹映射分区的当前映射日志中;
步骤340、将映射关系添加到对应的指纹映射分区中位于最前面的时间段的指纹映射表中。
本实施例中,可按照上述实施例中的对指纹进行查找的查找方法在存储设备的所有指纹映射表中查找是否存在待写入数据的指纹,如果不存在,也就是查找失败,需要新增加指纹映射记录,此时,首先根据指纹查找对应的指纹映射分区,在对应的指纹映射分区中将新建立的指纹映射记录添加到当前映射日志中,并且,将指纹映射记录添加到缓存在内存中的位于最前面的时间段的指纹映射表中。
在一个可选的实施方式中,上述步骤320具体可以包括以下步骤:
步骤3201、当不存在时,提取待写入数据的指纹长度中的若干位;
步骤3202、查找与若干位相同的分区索引值,根据分区索引值查找对应的指纹映射分区。
本实施方式中,参照上述实施例中的描述,指纹映射分区中的分区索引值是从之前已经完成重删处理的数据的指纹中提取的若干位,根据该若干位建立的分区索引值,因此,当需要建立新的指纹映射记录时,根据从待写入数据的指纹长度中提取的相同位置的若干位判断在哪个指纹映射分区建立指纹映射记录,当查找到与待写入数据的指纹相同的分区索引值,将新的指纹映射记录保存在查找到的分区索引值对应指纹映射分区的指纹映射表中,这样,在后续进行数据重删时,有利于降低内存消耗,提高查询效率。
本发明实施例还提供一种存储设备,包括存储器和处理器,存储器中存储有多条指令,该指令适于由处理器加载并执行上述实施例中的方法。
如图12所示,上述的存储设备可以是个人计算机,服务器,或者网络设备等,存储设备可以包括处理器和存储器,存储器可以为非易失性存储器(比如硬盘或者磁盘),还可以包括内存和内部总线等,存储器中存储多条指令,处理器可以将相应指令存储器读入内存中然后运行以执行上述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。以上所述仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (16)

1.一种数据重删的方法,其特征在于,所述方法应用于存储设备,所述方法包括:
根据存储设备的条件建立多个指纹映射分区;
为每个所述指纹映射分区建立分区索引;
基于所述分区索引在每个所述指纹映射分区建立多个指纹映射表,每个所述指纹映射表包括若干条指纹映射记录,多个所述指纹映射表按照所述指纹映射记录建立的时间段先后顺序排列;
将每个所述指纹映射分区中的多个所述指纹映射表中时间段位于前面的若干个所述指纹映射表缓存在存储设备的内存中,其他的所述指纹映射表持久的保存在存储设备中。
2.根据权利要求1所述的方法,其特征在于,
在所述为每个所述指纹映射分区建立分区索引之后,还包括:
基于所述分区索引在每个所述指纹映射分区建立当前映射日志,所述当前映射日志包括位于前面的时间段的若干条指纹映射记录;
将所述当前映射日志持久保存在存储设备中,且缓存在所述存储设备的内存中。
3.根据权利要求2所述的方法,其特征在于,
所述当前映射日志中的若干条所述指纹映射记录按照所述指纹映射分区接收到待写入数据的指纹的时间先后顺序排列。
4.根据权利要求1所述的方法,其特征在于,每个所述指纹映射表还包括:所述指纹映射表所在时间段的截止时间点、所述指纹映射记录中的起始指纹、所述指纹映射记录中的结束指纹和/或所述指纹映射记录的数量。
5.根据权利要求4所述的方法,其特征在于,若干条所述指纹映射记录按照所述指纹映射记录中的指纹的数值的大小顺序排列。
6.根据权利要求1-5任一项所述的方法,其特征在于,
在所述根据存储设备的条件建立多个指纹映射分区之后,还包括:
根据所述指纹映射分区的数量,提取写入数据的指纹长度中的若干位;
所述为每个所述指纹映射分区建立分区索引,具体包括:
根据所述若干位为指纹映射分区建立分区索引,其中,每个分区索引的索引值为所述若干位,不同分区索引的索引值不相同。
7.根据权利要求1-5任一项所述的方法,其特征在于,
所述指纹映射记录包括写入数据的指纹的部分长度与重删副本的物理地址之间的映射关系,所述部分长度为所述写入数据的指纹长度除了提取的若干位以外的指纹长度;
每个所述指纹映射分区中写入数据的指纹长度被提取相同的若干位。
8.根据权利要求2-5任一项所述的方法,其特征在于,
所述基于所述分区索引在每个所述指纹映射分区建立多个指纹映射表之后,还包括:
当所述指纹映射分区中位于最前面的时间段之后的时间新增加的指纹映射记录的数量达到预设数量时,生成最新时间段的指纹映射表,并将缓存在存储设备内存中的多个所述指纹映射表中位于最后面的时间段的所述指纹映射表从缓存中释放,且将其持久的保存在存储设备中;
将所述新增加的指纹映射记录添加到所述指纹映射分区的当前映射日志中,并将缓存在存储设备内存中的当前映射日志中的位于最后面的时间段的指纹映射记录从缓存中释放且将其从存储设备中删除。
9.根据权利要求1-5任一项所述的方法,其特征在于,所述基于所述分区索引在每个所述指纹映射分区建立多个指纹映射表之后,还包括:
当所述指纹映射分区中的指纹映射表的数量超过预设数量时,将相邻时间段的指纹映射表合并成一个指纹映射表。
10.根据权利要求1-5任一项所述的方法,其特征在于,所述基于所述分区索引在每个所述指纹映射分区建立多个指纹映射表之后,还包括:
获取存储设备中没有引用的重删副本对应的指纹映射记录;
删除所述没有引用的重删副本对应的指纹映射记录;
当没有引用的重删副本的指纹映射记录所在的指纹映射表中剩余的指纹映射记录的数量小于预设数量时,将删除的指纹映射记录所在的指纹映射表中剩余的指纹映射记录合并至与其相邻的时间段的指纹映射表中,并删除所述没有引用的重删副本对应的指纹映射记录所在的指纹映射表。
11.根据权利要求2或3所述的方法,其特征在于,在所述将所述当前映射日志持久保存在存储设备中,且缓存在所述存储设备的内存中之后,还包括:
当存储设备重启时,根据所述当前映射日志构建所述当前映射日志所在时间段的指纹映射表。
12.一种数据重删的方法,所述方法应用于存储设备,其特征在于,所述存储设备包括根据存储设备的条件建立多个指纹映射分区;为每个所述指纹映射分区建立分区索引;基于所述分区索引在每个所述指纹映射分区建立多个指纹映射表,每个所述指纹映射表包括若干条指纹映射记录,多个所述指纹映射表按照所述指纹映射记录建立的时间段先后顺序排列;将每个所述指纹映射分区中的多个所述指纹映射表中时间段位于前面的若干个所述指纹映射表缓存在存储设备的内存中,其他的所述指纹映射表持久的保存在存储设备中;包括:
根据IO请求获取目标指纹;
查找所述目标指纹所在的指纹映射分区;
从所述所在的指纹映射分区中的按照时间段先后顺序排列的多个指纹映射表中依次查找是否存在所述目标指纹,并返回查找消息;其中,每个所述指纹映射表包括若干条指纹映射记录,所述指纹映射分区中的所有指纹映射表中时间段位于前面的若干个的指纹映射表缓存在存储设备的内存中,其他的指纹映射表持久的保存在存储设备中。
13.根据权利要求12所述的方法,其特征在于,所述从所述所在的指纹映射分区中的按照时间段先后顺序排列的多个指纹映射表中依次查找是否存在所述目标指纹,并返回查找消息,具体包括:
步骤S1、从所述所在的指纹映射分区中的,位于最前面的时间段指纹映射表中查找所述目标指纹;
步骤S2、判断是否存在所述目标指纹,若是则返回查找成功的查找消息,若否则执行下述步骤S3;
步骤S3、按照时间段的先后顺序依次获取下一个指纹映射表,并判断是否能获取到下一个指纹映射表,若是,则执行下述步骤S4,若否,则返回查找失败的查找消息;
步骤S4、判断所述下一个指纹映射表是否缓存在存储设备的内存中,若是,则执行下述步骤S5,若否,则执行下述步骤S6;
步骤S5、在所述下一个指纹映射表中查找所述目标指纹,接着执行上述所述步骤S2;
步骤S6、将所述下一个指纹映射表加载到存储设备的内存中,然后接着执行上述所述步骤S5,再接着执行上述所述步骤S2。
14.一种数据重删的方法,所述方法应用于存储设备,其特征在于,所述存储设备包括根据存储设备的条件建立多个指纹映射分区;为每个所述指纹映射分区建立分区索引;基于所述分区索引在每个所述指纹映射分区建立多个指纹映射表,每个所述指纹映射表包括若干条指纹映射记录,多个所述指纹映射表按照所述指纹映射记录建立的时间段先后顺序排列;将每个所述指纹映射分区中的多个所述指纹映射表中时间段位于前面的若干个所述指纹映射表缓存在存储设备的内存中,其他的所述指纹映射表持久的保存在存储设备中;包括:
获取IO请求中的待写入数据,且计算所述待写入数据的指纹;
在按照时间段先后顺序排列的多个指纹映射表中依次查找是否存在所述待写入数据的指纹;其中,每个所述指纹映射表包括若干条指纹映射记录;
当不存在时,根据所述待写入数据的指纹找到对应的指纹映射分区;其中,所述指纹映射分区中的所有指纹映射表中时间段位于前面的若干个的指纹映射表缓存在存储设备的内存中,其他的指纹映射表持久的保存在存储设备中;
建立所述待写入数据的指纹与新分配的重删副本的物理地址之间的映射关系,并将所述映射关系添加到所述对应的指纹映射分区的当前映射日志中;
将所述映射关系添加到对应的指纹映射分区中位于最前面的时间段的指纹映射表中。
15.根据权利要求14所述的方法,其特征在于,所述当不存在时,根据所述待写入数据的指纹找到对应的指纹映射分区,具体包括:
当不存在时,提取待写入数据的指纹长度中的若干位;
查找与所述若干位相同的分区索引值,根据所述分区索引值查找对应的指纹映射分区。
16.一种存储设备,所述存储设备包括存储器和处理器,其特征在于,所述存储器中存储有多条指令,所述指令适于由处理器加载并执行权利要求1-15任一项所述的方法。
CN201710422658.5A 2017-06-07 2017-06-07 一种数据重删的方法及存储设备 Active CN107329692B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710422658.5A CN107329692B (zh) 2017-06-07 2017-06-07 一种数据重删的方法及存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710422658.5A CN107329692B (zh) 2017-06-07 2017-06-07 一种数据重删的方法及存储设备

Publications (2)

Publication Number Publication Date
CN107329692A CN107329692A (zh) 2017-11-07
CN107329692B true CN107329692B (zh) 2020-02-28

Family

ID=60194165

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710422658.5A Active CN107329692B (zh) 2017-06-07 2017-06-07 一种数据重删的方法及存储设备

Country Status (1)

Country Link
CN (1) CN107329692B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109144894B (zh) * 2018-08-01 2023-04-07 浙江大学 基于数据冗余的内存访问模式保护方法
CN109284237B (zh) * 2018-09-26 2021-10-29 郑州云海信息技术有限公司 一种全闪存储阵列中的垃圾回收方法及系统
WO2021016728A1 (zh) * 2019-07-26 2021-02-04 华为技术有限公司 存储系统中数据处理方法、装置及计算机存储可读存储介质
CN110618790B (zh) * 2019-09-06 2023-04-28 上海电力大学 基于重复数据删除的雾存储数据去冗余方法
CN111736774B (zh) * 2020-06-17 2024-02-23 北京三快在线科技有限公司 冗余数据的处理方法、装置、服务器及存储介质
CN113810477A (zh) * 2021-08-30 2021-12-17 深圳壹账通智能科技有限公司 一种文件上传方法、装置、设备及存储介质
CN117331487A (zh) * 2022-06-24 2024-01-02 华为技术有限公司 一种数据重删方法及相关系统
CN115988002B (zh) * 2023-02-16 2023-08-15 荣耀终端有限公司 一种数据传输方法和电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104407879A (zh) * 2014-10-22 2015-03-11 江苏瑞中数据股份有限公司 一种电网时序大数据并行加载方法
EP2921964A4 (en) * 2012-12-27 2015-12-09 Huawei Tech Co Ltd WALL EXPANSION PROCESS AND METHOD
CN106569745A (zh) * 2016-10-25 2017-04-19 暨南大学 一种内存过载下面向重复数据删除的内存优化系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9996572B2 (en) * 2008-10-24 2018-06-12 Microsoft Technology Licensing, Llc Partition management in a partitioned, scalable, and available structured storage
US20170139594A1 (en) * 2015-11-17 2017-05-18 Samsung Electronics Co., Ltd. Key-value integrated translation layer

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2921964A4 (en) * 2012-12-27 2015-12-09 Huawei Tech Co Ltd WALL EXPANSION PROCESS AND METHOD
CN104407879A (zh) * 2014-10-22 2015-03-11 江苏瑞中数据股份有限公司 一种电网时序大数据并行加载方法
CN106569745A (zh) * 2016-10-25 2017-04-19 暨南大学 一种内存过载下面向重复数据删除的内存优化系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A Parallel Architecture for In-line Data De-duplication;Seetendra Singh Sengar等;《2012 Second International Conference on Advanced Computing & Communication Technologies》;20121231;第399-403页 *
用户感知的重复数据删除算法;张沪寅等;《软件学报》;20151031;第26卷(第10期);第2581-2595页 *

Also Published As

Publication number Publication date
CN107329692A (zh) 2017-11-07

Similar Documents

Publication Publication Date Title
CN107329692B (zh) 一种数据重删的方法及存储设备
CN108459826B (zh) 一种处理io请求的方法及装置
US10331561B1 (en) Systems and methods for rebuilding a cache index
CN107066393B (zh) 提高地址映射表中映射信息密度的方法
US9043334B2 (en) Method and system for accessing files on a storage system
CN103080910B (zh) 存储系统
CN105843551B (zh) 高性能和大容量储存重复删除中的数据完整性和损耗电阻
CN102779180B (zh) 数据存储系统的操作处理方法,数据存储系统
US9146877B2 (en) Storage system capable of managing a plurality of snapshot families and method of snapshot family based read
US8627026B2 (en) Storage apparatus and additional data writing method
JP6345698B2 (ja) 格納されたデータにおける冗長削減
US10248556B2 (en) Forward-only paged data storage management where virtual cursor moves in only one direction from header of a session to data field of the session
US20190026042A1 (en) Deduplication-Aware Load Balancing in Distributed Storage Systems
CN106527958B (zh) 用于分布式存储系统的写入数据、获取数据的方法和设备
CN108733306B (zh) 一种文件合并方法及装置
CN112114753B (zh) 一种数据写入方法、装置及设备
CN111381779A (zh) 数据处理方法、装置、设备及存储介质
WO2014157244A1 (ja) ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
CN111522502A (zh) 数据去重方法、装置、电子设备及计算机可读存储介质
US11860840B2 (en) Update of deduplication fingerprint index in a cache memory
CN108334457B (zh) 一种io处理方法及装置
CN108021562B (zh) 应用于分布式文件系统的存盘方法、装置及分布式文件系统
CN108984432B (zh) 一种处理io请求的方法及装置
CN112597074B (zh) 数据处理方法及装置
CN113050891B (zh) 重删数据保护方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant