CN110389706A - 一种指纹回收方法以及存储系统 - Google Patents
一种指纹回收方法以及存储系统 Download PDFInfo
- Publication number
- CN110389706A CN110389706A CN201810339812.7A CN201810339812A CN110389706A CN 110389706 A CN110389706 A CN 110389706A CN 201810339812 A CN201810339812 A CN 201810339812A CN 110389706 A CN110389706 A CN 110389706A
- Authority
- CN
- China
- Prior art keywords
- data block
- fingerprint
- logical address
- data
- reference count
- 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.)
- Granted
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/0608—Saving storage space on storage systems
-
- 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/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
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
在一种指纹回收方法中,系统控制器根据数据块的指纹在引用计数查询表中获取所述数据块的指纹的引用计数,所述引用计数查询表包括所述数据块的指纹与所述引用计数之间的对应关系。当所述引用计数小于预设阈值时,所述系统控制器根据所述数据块的初始逻辑地址在逻辑地址查询表中获取所述初始逻辑地址对应的指纹,所述逻辑地址查询表包括数据块的初始逻辑地址与指纹之间的映射关系,当所述初始逻辑地址对应的指纹与所述数据块的指纹一致时,所述系统控制器在所述引用计数查询表中删除所述数据块的指纹的记录,可以减少对重删率没有贡献的数据块的指纹所占用的存储资源。
Description
技术领域
本发明实施例涉及存储技术领域,特别是一种指纹回收方法及存储系统。
背景技术
重复数据删除(简称:重删)是一种节约数据存储空间的技术。在计算机中存储了很多重复数据,这些重复数据占用了大量硬盘空间,利用重复数据删除技术,可以只存储一份数据。重复数据删除是在指纹库中预先保存各个数据块的指纹信息,其中每个数据块的指纹信息是根据预设的哈希函数对每个数据块进行计算获得的。然后,根据所述哈希函数对待存储的数据块进行计算,获得该待存储的数据块的指纹信息;将所述指纹信息与预先保存的各个数据块的指纹信息进行匹配,如果有相同的指纹信息则说明存储系统中已经保存有相同的数据块,不需要对这个数据块再次保存,否则说明没有保存所述待存储的数据块。
可见,指纹库中保存了大量不同数据块的指纹信息。然而在实际应用中并非所有的数据块都对重删率有贡献,据统计,指纹库中仅有20%的数据贡献了80%的重删效果,而剩下的80%的数据占用了指纹库的空间却不贡献重删率。
发明内容
本申请提供了一种指纹回收方法及装置,可以识别出指纹库中对重删率没有贡献或者贡献度较低的指纹,并进行回收,从而避免浪费指纹库的存储空间。
本申请第一方面提供了一种指纹回收方法,系统控制器获取数据块的指纹以及所述数据块的初始逻辑地址,所述初始逻辑地址是指所述系统控制器第一次接收所述数据块时所述数据块的逻辑地址。所述系统控制器根据所述数据块的指纹在引用计数查询表中获取所述数据块的指纹的引用计数,所述引用计数查询表包括所述数据块的指纹与所述引用计数之间的对应关系。当所述引用计数小于预设阈值时,所述系统控制器根据所述数据块的初始逻辑地址在逻辑地址查询表中获取所述初始逻辑地址对应的指纹,所述逻辑地址查询表包括数据块的初始逻辑地址与指纹之间的映射关系。当所述初始逻辑地址对应的指纹与所述数据块的指纹一致时,在所述引用计数查询表中删除所述数据块的指纹的记录。
按照第一方面,系统控制器可以首先识别出引用计数较低的指纹,然而并非所有引用计数较低的指纹对重删率都没有贡献,因此系统控制器进一步根据该指纹所对应的数据块的初始逻辑地址,在逻辑地址查询表中对应的指纹,若所述初始逻辑地址对应的指纹与所述数据块的指纹一致,那么说明该数据块的指纹自从进入该存储系统就没有发生过重删,因此系统控制器在所述引用计数查询表中删除所述数据块的指纹的记录,达到回收的目的。需要说明的是,这里所称的指纹库可以就是所述引用计数查询表。因此,按照第一方面可以节省指纹库所占用的存储资源。
在第一方面的第一种实现中,当所述初始逻辑地址对应的指纹与所述数据块的指纹一致时,所述系统控制器将所述逻辑地址查询表中记录的所述数据块的指纹修改为所述数据块。由于数据块的指纹已经被回收,那么逻辑地址查询表中的该数据块的指纹也没有存在的必要了,可以将其替换为数据块本身。
在第一方面的第二种实现中,在获取数据的指纹以及所述数据块的初始逻辑地址之前,所述系统控制器将所述数据块的指纹、所述数据块的逻辑地址以及所述数据块原子性地写入硬盘。也就是说,所述数据块的指纹、所述数据块的逻辑地址以及所述数据块要么全部写入硬盘,要么全部不写入,由此来保证数据块和其相应的指纹以及逻辑地址都可以保存在硬盘中,并且一起写入这些信息,避免分成多个请求向硬盘发送,可以提高写数据的效率。
在第一方面的第三种实现中,上面描述的硬盘是固态硬盘。那么第一方面所描述的指纹回收方法可以结合在所述系统控制器对所述固态硬盘进行系统垃圾回收的操作中,例如所述系统控制器获取数据块的指纹以及所述数据块的初始逻辑地址具体可以是在系统垃圾回收时,所述系统控制器接收所述固态硬盘发送的所述数据块的指纹以及所述数据块的初始逻辑地址。按照这种方式,固态硬盘不用单独向系统控制器发送数据块的指纹以及初始逻辑地址,提高了处理效率。
本申请第二方面提供了一种指纹回收装置,用于执行第一方面任意一种实现方式所描述的方法。
本申请第三方面提供了一种控制器,该控制器包括处理器和存储器,存储器中保存有程序指令,所述处理器调用所述程序指令以执行第一方面任意一种实现方式所描述的方法。
本申请第四方面提供了一种指纹回收的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行第一方面任意一种实现方式所描述的方法。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对现有技术或实施例中所需要使用的附图作简单地介绍。
图1是本发明实施例提供的存储系统的组成图;
图2是本发明实施例提供的系统控制器的结构示意图;
图3是本发明实施例提供的写数据的流程示意图;
图4是本发明实施例提供的指纹回收方法的流程示意图;
图5是本发明实施例提供的指纹回收装置的结构示意图。
具体实施方式
本发明实施例提出了一种指纹回收方法以及存储系统,可以减少对重删率没有贡献的数据块的指纹所占用的存储资源。
图1描绘了本发明实施例提供的存储系统的组成图,图1所示的存储系统包括控制器11和多个固态硬盘44。固态硬盘仅是为了举例,本发明实施例可以应用于其他类型的存储器,只要支持用指纹进行重删的即可。例如:硬盘驱动器(Hard Disk Drive,HDD),叠瓦式磁记录(Shingled magnetic recording,SMR)。
控制器11可以是一种计算设备,如服务器、台式计算机等等。在控制器11上安装有操作系统以及应用程序。控制器11可以接收来自主机的输入输出(I/O)请求。控制器11还可以存储I/O请求中携带的数据(如果有的话),并且将该数据写入固态硬盘44中。
固态硬盘(英文:Solid State Disk,SSD)是以闪存(英文:flash memory)芯片为存储介质的存储器,又名固态驱动器(Solid State Drive,SSD)。
图1仅是示例性说明,在实际应用中存储系统可包含多个控制器,每个控制器的物理结构和功能与控制器11类似,并且本实施例并不限定各个控制器之间,以及任意一个控制器与固态硬盘44之间的连接方式。只要各个控制器之间,以及各个控制器和固态硬盘44之间能够相互通信即可。
图2是控制器11的结构示例图,如图2所示,控制器11包括接口卡110、处理器112和接口卡113。
接口卡110用于和主机通信,控制器11可以通过接口卡110接收主机的操作指令。处理器112可能是一个中央处理器(英文:central processing unit,CPU)。在本发明实施例中,处理器112可以用于接收来自主机的I/O请求、处理所述I/O请求。所述I/O请求可以是写数据请求或者读数据请求,处理器112还可以将写数据请求中的数据发送给固态硬盘44。
可选地,控制器11还可以包括存储器111。存储器111用于临时存储从主机接收的数据或从固态硬盘44读取的数据。控制器11接收主机发送的多个写数据请求时,可以将所述多个写数据请求中的数据暂时保存在存储器111中。当存储器111的容量达到一个阈值时,将存储器111存储的数据以及为数据分配的逻辑地址发送给固态硬盘44。固态硬盘44存储所述数据。存储器111包括易失性存储器,非易失性存储器或二者的组合。易失性存储器例如为随机访问存储器(英文:random-access memory,RAM)。非易失性存储器例如软盘、硬盘、固态硬盘(solid state disk,SSD)、光盘等各种可以存储程序代码的机器可读介质。存储器111具有保电功能,保电功能是指系统发生掉电又重新上电时,存储器111中存储的数据也不会丢失。
接口卡113,用于和固态硬盘44通信,控制器11可以通过接口卡113将写数据请求(包括数据以及控制器11为所述数据分配的逻辑地址)发送给固态硬盘44存储。
需要说明的是,控制器11属于系统控制器,系统控制器是独立的设备,不同于固态硬盘中的控制芯片。本实施例将固态硬盘的控制芯片称为固态硬盘控制器。如无特别指明,本实施例中的控制器都是指系统控制器。
固态硬盘44包括固态硬盘控制器和存储介质。其中,固态硬盘控制器用于执行控制器11发送的写数据请求或者读数据请求等操作。
固态硬盘控制器中包含闪存翻译层(英文:flash translation layer,FTL)。闪存翻译层用于保存数据的逻辑地址与实际地址之间的对应关系。因此,闪存翻译层用于将控制器发送的写数据请求或者读数据请求中的逻辑地址转化为固态硬盘中数据的实际地址。数据的逻辑地址包括起始逻辑地址和长度,起始逻辑地址指示所述数据位于的所述段的位置,长度代表所述数据的大小。数据的实际地址可以是固态硬盘中该数据的物理地址,也可以是在所述物理地址的基础上经过虚拟化的、只对固态硬盘控制器可见的地址。该经过虚拟化的实际地址对系统控制器不可见。
存储介质通常包括一个或多个闪存芯片。每个闪存芯片包括若干个块。闪存芯片在读取或写入时是以一个页(英文:page)为基础单位的,但擦除操作只能以一个块为基础单位。在擦除一个块之前,固态硬盘控制器需要先将这个块中的有效数据复制到另一个块的空白页中去。块中的有效数据是指该块中保存的没有被修改过的数据,这部分数据可能会被读取。块中的无效数据是指该块中保存的已经被修改过的数据,这部分数据不可能会被读取。
当数据写入闪存芯片之后,需要记录该数据的有效性。数据的有效性是以所述数据是否被修改来确定的。如果所述数据是第一次写入,可以将所述数据记录为有效(称为有效数据)。如果所述数据被修改,那么闪存芯片中会存在2个数据,一个是修改前的数据,另一个是修改后的数据。将所述修改前的数据记录为无效(称为无效数据),修改后的数据记录为有效。具体的,可以用位图记录数据的有效性。例如,位图的每个“位”对应大小为1KB的数据的逻辑地址,当“位”为1时,代表所述逻辑地址中存储的数据有效,当“位”为0时,代表所述逻辑地址中存储的数据无效。
固态硬盘中的块、页以及实际地址对系统控制器来说是不可见的,因此系统控制器不能直接访问固态硬盘中的块和页。为了进行系统垃圾回收,系统控制器将固态硬盘的存储空间按照设定大小划分为若干个段,段是系统垃圾回收的基本单位,每个段均是多个逻辑地址的集合,并且这些逻辑地址是连续的。例如,所述设定大小是4MB。在本实施例中,控制器11可以以4MB为单位进行系统垃圾回收。具体的,控制器11根据位图获取一个段中有效数据的逻辑地址,将所述有效数据的逻辑地址发送给固态硬盘。固态硬盘根据所述逻辑地址读取有效数据并发送给控制器11。然后,控制器11为所述有效数据分配新的逻辑地址,并把所述有效数据和所述新的逻辑地址发送给所述固态硬盘。所述固态硬盘将所述有效数据写入所述新的逻辑地址中。然后,控制器再给所述固态硬盘发送去映射(英文:unmap)命令,所述去映射命令包括所述待回收的段的逻辑地址区间,固态硬盘接收所述去映射命令之后,删除闪存翻译层中保存的所述逻辑地址区间的逻辑地址与实际地址之间的对应关系。固态硬盘还可以将所述实际地址对应的块标记为不包含有效数据的块。系统垃圾回收有别于固态硬盘内部的垃圾回收。固态硬盘内部的垃圾回收是由固态硬盘自己完成的,不需要控制器11配合。
本实施例所提供的指纹回收的流程可以结合在上面描述的系统垃圾回收的过程中完成。例如,当固态硬盘所述有效数据发送给控制器11时,也会将数据块的指纹以及所述数据块的初始逻辑地址发送给控制器11。所述数据块是所述有效数据的子集,控制器11以段为单位进行系统垃圾回收,段的尺寸是4MB,数据块的尺寸(例如32KB)小于段的尺寸。
另外,控制器11具有重复数据删除的功能,下面介绍在控制器11执行重复数据删除的功能时的写数据流程。请参见图3,图3是本发明实施例提供的写数据的流程示意图。
在步骤301中,处理器112接收写数据请求时,判断所述写数据请求中携带的数据是否已经保存在固态硬盘中。具体的,处理器112接收所述数据之后,将其暂时保存在存储器111中。为了判断所述数据是否需要进行持久化存储,处理器112将所述数据划分成多个数据块,分别判断每个数据块是否已经保存在固态硬盘中。可以理解的是,每个数据块均有一个逻辑地址(Logical Block Address,LBA)。例如,对于所述多个数据块中的第一数据块,处理器112按照预设的算法计算所述第一数据块的指纹(fingerprint,FP)。然后,在预先保存的指纹库中查询,以获知所述指纹库中是否已经保存与所述第一数据块的指纹相同的指纹。如果没有查询到,则不发生重删,说明所述第一数据块是第一次写入所述存储系统,需要对所述第一数据块进行持久化存储。另外,需要将所述第一数据块的逻辑地址以及第一数据块的指纹记录在逻辑地址查询表中。本实施例中的逻辑地址查询表用于保存每个数据块的逻辑地址与所述数据块的指纹之间的映射关系。
在步骤302中,若步骤301中对第一数据块的判断结果为否,则处理器112将所述第一数据块的引用计数记录为“1”,并且将所述第一数据块的引用计数的相关信息记录在引用计数查询表中。数据块的引用计数可以表示控制器11从主机接收所述数据块的次数。本实施例中的引用计数查询表用于保存数据块的指纹与该数据块的引用计数之间的映射关系。另外,步骤301中提到的指纹库可以是这里描述的引用计数查询表。逻辑地址查询表和引用计数查询表可以保存在存储器111中,也可以保存在固态硬盘44中,也可以既保存在存储器111中也保存在固态硬盘44中。对于所述多个数据块中的其他几个数据块也可以按照与所述第一数据块同样的方式判断是否需要写入。
例如,表1a所示的是所述多个数据块中的第一数据块和第二数据块都没有发生重删的情况下,逻辑地址查询表中的记录。其中LBA1是第一数据块的逻辑地址,FP1是所述第一数据块的指纹;LBA2是第二数据块的逻辑地址,FP2是所述第二数据块的指纹。表1b所示的是所述第一数据块和所述第二数据块都没有发生过重删的情况下,引用计数查询表中的记录,其中LBA1是第一数据块的逻辑地址,FP1是所述第一数据块的指纹;LBA2是第二数据块的逻辑地址,FP2是所述第二数据块的指纹。
逻辑地址 | 指纹 |
LBA1 | FP1 |
LBA2 | FP2 |
表1a
指纹 | 引用计数 |
FP1 | 1 |
FP2 | 1 |
表1b
对于指纹的引用计数为1的数据块,处理器112会将其从存储器111复制到固态硬盘44中。在本实施例中,数据块被写入固态硬盘44时,会将所述数据块的指纹以及控制器11第一次接收所述数据块时所述数据块的逻辑地址一并写入固态硬盘44。例如,上面描述的第一数据块和第二数据块都是控制器11第一次接收的数据块,因此,所述第一数据块的指纹FP1、所述第一数据块的逻辑地址LBA1和所述第一数据块一并写入固态硬盘44,所述第二数据块的指纹FP2、所述第二数据块的逻辑地址LBA2和所述第二数据块一并写入固态硬盘44。这里的“一并写入”是指原子性写入,即数据块、数据块的逻辑地址以及数据块的指纹要么全部保存在固态硬盘44,要么全部不保存。其具体的写入措施可以是在保证数据块的逻辑地址以及数据块的指纹有效写入的基础上再写入所述数据块,这里不展开描述。为了方便描述,将控制器11第一次接收一个数据块时所述数据块的逻辑地址称为初始逻辑地址,所述初始逻辑地址会和所述数据块一并写入固态硬盘44进行持久化存储。
在步骤302之后,如果在后续中发生了重删,例如,控制器11接收到另一个写数据请求,所述写数据请求携带的数据包括第三数据块(这里省略了将数据划分为若干数据块的步骤),所述第三数据块的逻辑地址为LBA3。处理器112将所述第三数据块的指纹与所述指纹库中的指纹进行匹配,若找到了相同的指纹(例如与FP2相同),则发生重删,所述第三数据块不需要再次写入固态硬盘44。此时,第三数据块的相关信息也需要记录在所述逻辑地址查询表和所述引用计数查询表中。更新后的逻辑地址查询表如表2a所示,更新后的引用计数查询表如表2b所示。
逻辑地址 | 指纹 |
LBA1 | FP1 |
LBA2 | FP2 |
LBA3 | FP2 |
表2a
指纹 | 引用计数 |
FP1 | 1 |
FP2 | 2 |
表2b
如表2a和表2b所示,FP2发生过重删,其引用计数为2。需要注意的是,指纹为FP2的数据块在写入固态硬盘44时,和所述数据块一起写入的逻辑地址为LBA2,因为LBA2是所述数据块第一次写入时的逻辑地址。
控制器11除了可以执行写数据请求,还可以执行修改数据请求。修改数据请求是指:在原来的某个已经存储有数据的逻辑地址中写入新的数据的请求。例如,控制器11接收一个修改数据请求,所述修改数据请求携带的数据包括第四数据块,所述第四数据块的逻辑地址为LBA2。也就是说,逻辑地址为LBA2的存储空间中存储的数据块(该数据块的指纹为FP2)将会被替换为新的数据块(假设所述新的数据块的指纹为FP4)。此时,仍然需要对所述逻辑地址查询表和所述引用计数查询表进行更新,更新后的逻辑地址查询表如表3a所示,更新后的引用计数查询表如表3b所示。
逻辑地址 | 指纹 |
LBA1 | FP1 |
LBA2 | FP4 |
LBA3 | FP2 |
表3a
表3b
可见,更新后的逻辑地址查询表中,LBA2所对应的指纹由FP2修改为FP4。在更新后的引用计数查询表中,由于LBA2所对应的指纹不再是FP2,因此FP2仅被引用了一次(仍然被LBA3引用),因此将FP2的引用计数修改为1。另外,在计数查询表中增加FP4的引用计数1。
控制器11除了执行写数据请求之外,还可以执行删除数据请求。删除数据请求是指把原来的某个已经存储有数据逻辑地址中保存的数据删掉。例如,控制器11接收一个删除数据请求,所述删除数据请求包括的逻辑地址为LBA2。也就是说,逻辑地址为LBA2中存储的指纹为FP2的数据块,将会在执行这个删除数据请求时被删除。此时,仍然需要对所述逻辑地址查询表和所述引用计数查询表进行更新,更新后的逻辑地址查询表如表4a所示,更新后的引用计数查询表如表4b所示。需要说明的是,执行删除数据请求的示例是与执行修改数据请求的示例是并列的,表4a、表4b和表3a、表3b均是在表2a、表2b的基础上修改的。
逻辑地址 | 指纹 |
LBA1 | FP1 |
LBA3 | FP2 |
表4a
指纹 | 引用计数 |
FP1 | 1 |
FP2 | 1 |
表4b
可见,更新后的逻辑地址查询表中,不再有LBA2的信息,另外由于FP2与LBA2的映射关系已经删除了,因此在更新后的引用计数查询表中也会将FP2的引用计数修改为1。
在实际应用中,已经发生过重删的数据块再次发生重删的概率远远大于从未发生过重删的数据块。所以,为了节省指纹库所占用的存储资源,我们在指纹库中删除那些从未发生过重删的数据块的指纹。本实施例中,从未发生过重删的数据块具有以下特征(1)该数据块的指纹的引用计数等于1,(2)所述数据块的初始逻辑地址与该数据块的指纹在逻辑地址查询表中所对应的逻辑地址相同。
需要说明的是,选择哪些指纹进行上述“是否重删过”的判断可以有多种方式。一种可选的方式是,对于指纹库中的某个不特定的指纹而言,只有当被指纹库保存一定时间(例如超过24小时)之后,才进行是否重删过的判断。如果在指纹库中保存的时间不超过24小时,则不进行是否重删过的判断,继续保存在指纹库中,这样可以避免指纹刚刚被存储就立刻被删除。另外一种可选的方式是:删除操作定期执行,不区分指纹在指纹库中的保存时间,例如:每48小时对指纹库中所有指纹进行一次“是否重删过”的判断,这样的话,判断操作更加简单高效。
接下来介绍本实施例的另一部分,如何对指纹库中没有发生过重删的数据块的指纹进行回收。请参见图4,图4是本实施例提供的一种指纹回收方法的流程示意图。如图4所示,该方法包括以下步骤:
步骤401:控制器11获取数据块的指纹以及所述数据块的初始逻辑地址。若控制器11连接的硬盘是机械硬盘,控制器11可以从硬盘中读取所述数据块的指纹以及所述数据块的初始逻辑地址。若控制器11连接的硬盘是固态硬盘,那么该步骤可以是控制器11向固态硬盘44发送指令要求读取所述数据块,固态硬盘44的控制器接收该指令后,将所述数据块发送给控制器11。由于所述数据块的指纹以及所述数据块的初始逻辑地址是和所述数据块一并写入固态硬盘的,所以固态硬盘44的控制器可以直接获得指纹和初始逻辑地址,并发送给控制器11。需要说明的是,所述数据块的初始逻辑地址并不是控制器11直接从主机接收的,而是控制器11根据接收的数据的逻辑地址为数据块分配的。事实上,主机发送给控制器11的写数据请求包括数据以及所述数据的逻辑地址。为了执行重删,控制器11将所述数据划分为多个数据块,并且给每个数据块分配一个逻辑地址,所述分配的逻辑地址是接收的所述数据的逻辑地址的子集。
另外,在图4所示的各个步骤中,控制器11执行的操作可以理解为具体由处理器112完成。
可选的,步骤401可以发生在系统垃圾回收的过程中。例如,当固态硬盘44的控制器将有效数据发送给控制器11时,可以获取所述有效数据所包含的数据块的指纹以及初始逻辑地址并发送给控制器11。这样可以避免单独发送数据块的指纹以及初始逻辑地址给控制器11,提高了数据发送效率。
步骤402:控制器11接收所述数据块的指纹以及所述数据块的初始逻辑地址。
步骤403:控制器11在所述引用计数查询表中查询所述数据块的指纹所对应的引用计数。若所述查询到的引用计数大于预设阈值,则说明所述数据块发生过重删,并非回收的对象,对这样的数据块,不再执行后续步骤。这里的预设阈值可以等于2或者其他预设的正整数。以预设阈值等于2为例,若所述查询到的引用计数小于2,则继续执行步骤404。
步骤404:控制器11在所述逻辑地址查询表中进行查询,以确定所述数据块的初始逻辑地址所对应的指纹是否与所述数据块的指纹一致。若所述查询到的指纹与所述数据块的指纹不一致,那么说明所述查询到的指纹发生过重删,并非回收的对象,对这样的数据块,不再执行后续步骤。另外,若控制器11没有在所述逻辑地址查询表中查询到与所述初始逻辑地址所匹配的指纹,那么也说明所述查询到的指纹发生过重删,并非回收的对象,对这样的数据块,不再执行后续步骤。然而,当所述查询到的指纹与所述数据块的指纹一致时,说明所述数据块从未发生过重删,应当进行回收,继续执行步骤405。
步骤405:控制器11回收所述数据块的指纹。具体的操作方式是,清除所述数据块的指纹在所述逻辑地址查询表以及所述引用计数查询表中的记录。例如,将所述逻辑地址查询表中的所述指纹(如果有的话)替换所述数据块本身,在所述引用计数查询表中删除所述指纹与其对应的引用计数之间的映射关系。
本实施例还提供了一种指纹回收装置,该装置位于控制器11中,请参考图5,图5是本实施例提供的指纹回收装置的结构示意图,该装置包括获取模块502和回收模块503。
获取模块502,用于获取数据块的指纹以及所述数据块的初始逻辑地址,所述初始逻辑地址是指系统控制器第一次接收所述数据块时所述数据块的逻辑地址;根据所述数据块的指纹在引用计数查询表中获取所述数据块的指纹的引用计数,所述引用计数查询表包括所述数据块的指纹与所述引用计数之间的对应关系。当所述引用计数小于预设阈值时,所述获取模块502还用于根据所述数据块的初始逻辑地址在逻辑地址查询表中获取所述初始逻辑地址对应的指纹,所述逻辑地址查询表包括数据块的初始逻辑地址与指纹之间的映射关系。回收模块503,用于当所述初始逻辑地址对应的指纹与所述数据块的指纹一致时,在所述引用计数查询表中删除所述数据块的指纹的记录。
可选的,回收模块503还用于当所述初始逻辑地址对应的指纹与所述数据块的指纹一致时,将所述逻辑地址查询表中记录的所述数据块的指纹修改为所述数据块。
可选的,所述装置还包括写入模块501,用于在所述获取数据的指纹以及所述数据块的初始逻辑地址之前,将所述数据块的指纹、所述数据块的逻辑地址以及所述数据块原子性地写入硬盘。
可选的,获取模块502具体用于当所述系统控制器对所述数据块所在的段进行系统垃圾回收的操作时,所述接收固态硬盘发送的所述数据块的指纹以及所述数据块的初始逻辑地址。
其中,获取模块502的功能可参见图4所示的步骤402、步骤403、步骤404的描述,获取模块502可由处理器112执行或者处理器112调用存储器111中的程序指令执行。回收模块503的功能可参见图4所示的步骤405的描述,回收模块503可由处理器112执行或者处理器112调用存储器111中的程序指令执行。写入模块501的功能可由处理器112执行或者处理器112调用存储器111中的程序指令执行。
本发明实施例还提供一种指纹回收的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。
本领域普通技术人员可以理解,前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory,RAM)、固态硬盘(Solid State Disk,SSD)或者非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制。
Claims (9)
1.一种指纹回收方法,其特征在于,包括:
系统控制器获取数据块的指纹以及所述数据块的初始逻辑地址,所述初始逻辑地址是指所述系统控制器第一次接收所述数据块时所述数据块的逻辑地址;
所述系统控制器根据所述数据块的指纹在引用计数查询表中获取所述数据块的指纹的引用计数,所述引用计数查询表包括所述数据块的指纹与所述引用计数之间的对应关系;
当所述引用计数小于预设阈值时,所述系统控制器根据所述数据块的初始逻辑地址在逻辑地址查询表中获取所述初始逻辑地址对应的指纹,所述逻辑地址查询表包括数据块的初始逻辑地址与指纹之间的映射关系;
当所述初始逻辑地址对应的指纹与所述数据块的指纹一致时,所述系统控制器在所述引用计数查询表中删除所述数据块的指纹的记录。
2.根据权利要求1所述的方法,其特征在于,还包括:当所述初始逻辑地址对应的指纹与所述数据块的指纹一致时,所述系统控制器将所述逻辑地址查询表中记录的所述数据块的指纹修改为所述数据块。
3.根据权利要求1所述的方法,其特征在于,在所述系统控制器获取数据的指纹以及所述数据块的初始逻辑地址之前,还包括:
所述系统控制器将所述数据块的指纹、所述数据块的逻辑地址以及所述数据块原子性地写入硬盘。
4.根据权利要求1所述的方法,其特征在于,所述系统控制器获取数据块的指纹以及所述数据块的初始逻辑地址包括:当所述系统控制器对所述数据块所在的段进行系统垃圾回收的操作时,所述系统控制器接收固态硬盘发送的所述数据块的指纹以及所述数据块的初始逻辑地址。
5.一种指纹回收装置,其特征在于,所述装置位于系统控制器中,所述装置包括:
获取模块,用于获取数据块的指纹以及所述数据块的初始逻辑地址,所述初始逻辑地址是指系统控制器第一次接收所述数据块时所述数据块的逻辑地址;根据所述数据块的指纹在引用计数查询表中获取所述数据块的指纹的引用计数,所述引用计数查询表包括所述数据块的指纹与所述引用计数之间的对应关系;
当所述引用计数小于预设阈值时,所述获取模块还用于根据所述数据块的初始逻辑地址在逻辑地址查询表中获取所述初始逻辑地址对应的指纹,所述逻辑地址查询表包括数据块的初始逻辑地址与指纹之间的映射关系;
所述回收模块,用于当所述初始逻辑地址对应的指纹与所述数据块的指纹一致时,在所述引用计数查询表中删除所述数据块的指纹的记录。
6.根据权利要求5所述的装置,其特征在于,
所述回收模块,还用于当所述初始逻辑地址对应的指纹与所述数据块的指纹一致时,将所述逻辑地址查询表中记录的所述数据块的指纹修改为所述数据块。
7.根据权利要求5所述的装置,其特征在于,还包括写入模块;
所述写入模块,用于在所述获取数据的指纹以及所述数据块的初始逻辑地址之前,将所述数据块的指纹、所述数据块的逻辑地址以及所述数据块原子性地写入硬盘。
8.根据权利要求5所述的装置,其特征在于,
所述获取模块,具体用于当所述系统控制器对所述数据块所在的段进行系统垃圾回收的操作时,所述接收固态硬盘发送的所述数据块的指纹以及所述数据块的初始逻辑地址。
9.一种控制器,其特征在于,包括处理器和存储器,所述存储器包括程序指令,所述处理器用于调用所述程序指令执行如权利要求1-4任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810339812.7A CN110389706B (zh) | 2018-04-16 | 2018-04-16 | 一种指纹回收方法以及存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810339812.7A CN110389706B (zh) | 2018-04-16 | 2018-04-16 | 一种指纹回收方法以及存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110389706A true CN110389706A (zh) | 2019-10-29 |
CN110389706B CN110389706B (zh) | 2021-05-11 |
Family
ID=68283063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810339812.7A Active CN110389706B (zh) | 2018-04-16 | 2018-04-16 | 一种指纹回收方法以及存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110389706B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117472918A (zh) * | 2023-12-28 | 2024-01-30 | 苏州元脑智能科技有限公司 | 数据处理方法、系统、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110107052A1 (en) * | 2009-10-30 | 2011-05-05 | Senthilkumar Narayanasamy | Virtual Disk Mapping |
CN103019887A (zh) * | 2012-12-12 | 2013-04-03 | 华为技术有限公司 | 数据备份方法及装置 |
CN103377137A (zh) * | 2012-04-30 | 2013-10-30 | 国际商业机器公司 | 使用增强的频繁块检测进行存储去重的方法和系统 |
CN105701024A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 一种存储设备及其垃圾数据回收的方法 |
WO2018058382A1 (zh) * | 2016-09-28 | 2018-04-05 | 华为技术有限公司 | 一种存储系统中重复数据删除方法、存储系统及控制器 |
-
2018
- 2018-04-16 CN CN201810339812.7A patent/CN110389706B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110107052A1 (en) * | 2009-10-30 | 2011-05-05 | Senthilkumar Narayanasamy | Virtual Disk Mapping |
CN103377137A (zh) * | 2012-04-30 | 2013-10-30 | 国际商业机器公司 | 使用增强的频繁块检测进行存储去重的方法和系统 |
CN103019887A (zh) * | 2012-12-12 | 2013-04-03 | 华为技术有限公司 | 数据备份方法及装置 |
CN105701024A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 一种存储设备及其垃圾数据回收的方法 |
WO2018058382A1 (zh) * | 2016-09-28 | 2018-04-05 | 华为技术有限公司 | 一种存储系统中重复数据删除方法、存储系统及控制器 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117472918A (zh) * | 2023-12-28 | 2024-01-30 | 苏州元脑智能科技有限公司 | 数据处理方法、系统、电子设备及存储介质 |
CN117472918B (zh) * | 2023-12-28 | 2024-03-22 | 苏州元脑智能科技有限公司 | 数据处理方法、系统、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110389706B (zh) | 2021-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102511044B (zh) | 一种数据删除方法及装置 | |
CN102646069B (zh) | 一种延长固态盘使用寿命的方法 | |
US20200183831A1 (en) | Storage system and system garbage collection method | |
DK3059679T3 (en) | CONTROL UNIT, FLASH MEMORY UNIT, PROCEDURE FOR IDENTIFICATION OF DATA BLOCK STABILITY, AND PROCEDURE FOR STORING DATA ON THE FLASH MEMORY UNIT | |
US10203899B2 (en) | Method for writing data into flash memory apparatus, flash memory apparatus, and storage system | |
US11321229B2 (en) | System controller and system garbage collection method | |
CN108604165A (zh) | 存储装置 | |
CN110674056B (zh) | 一种垃圾回收方法及装置 | |
CN110895513A (zh) | 一种系统垃圾回收方法和固态硬盘中的垃圾回收方法 | |
KR101017067B1 (ko) | 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법 | |
JP2019169101A (ja) | 電子機器、コンピュータシステム、および制御方法 | |
CN108073359B (zh) | 数据储存装置的操作方法 | |
CN109783019B (zh) | 一种数据智能存储管理方法与装置 | |
EP3798852B1 (en) | System controller and system garbage recovery method | |
KR101077901B1 (ko) | 로그 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법 | |
CN110389706A (zh) | 一种指纹回收方法以及存储系统 | |
US10915441B2 (en) | Storage system having non-volatile memory device | |
EP3538984B1 (en) | Method in data wiping of a mass storage | |
KR101153688B1 (ko) | 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템 | |
KR100994052B1 (ko) | 플래시 변환 계층에서 수행되는 데이터 관리 방법 및 이를 수행하는 플래시 메모리 장치 | |
CN109725853A (zh) | 一种数据回收方法及装置 | |
CN110580228A (zh) | 去分配命令处理方法及其存储设备 | |
CN116010113B (zh) | 用于管理智能卡内存的方法及智能卡 | |
CN117193660A (zh) | 一种数据处理方法、装置、系统、电子设备及存储介质 | |
Lo et al. | ICAP, a new flash wear-leveling algorithm inspired by locality |
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 |