CN103959259A - 数据存储方法、数据存储装置及数据存储系统 - Google Patents

数据存储方法、数据存储装置及数据存储系统 Download PDF

Info

Publication number
CN103959259A
CN103959259A CN201280005841.0A CN201280005841A CN103959259A CN 103959259 A CN103959259 A CN 103959259A CN 201280005841 A CN201280005841 A CN 201280005841A CN 103959259 A CN103959259 A CN 103959259A
Authority
CN
China
Prior art keywords
data block
fingerprint
data
piece
history
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
Application number
CN201280005841.0A
Other languages
English (en)
Other versions
CN103959259B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN103959259A publication Critical patent/CN103959259A/zh
Application granted granted Critical
Publication of CN103959259B publication Critical patent/CN103959259B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (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)

Abstract

一种数据存储方法、数据存储装置及数据存储系统,该数据存储方法包括:将待存储的数据划分成n个数据块;判断所划分出的各数据块是否为重复数据块;存储不是重复数据块的数据块。该判断步骤包括:基于第i-1数据块的后续历史判断第i数据块是否为重复数据块,其中i为大于1且小于等于n的整数,第i-1数据块的后续历史包括曾紧接在第i-1数据块的内容之后读取过或存储过的数据块的内容;以及若第i-1数据块的后续历史包括第i数据块的内容,则第i数据块为重复数据块,否则继续基于存储历史判断第i数据块是否为重复数据块,其中存储历史记录有所有已存储过的数据块的内容。本发明能优化重复数据删除的性能。

Description

数据存储方法、数据存储装置及数据存储系统
技术领域
本发明涉及数据存储领域,特别涉及能进行重复数据删除的数据存储方法、数据存储装置及数据存储系统。
背景技术
重复数据删除是存储领域的一种技术,重复数据删除的一种做法是存储系统将用户写入的数据按照一定算法划分成数据块,数据块大小可以是定长或者变长的。根据预定的算法(例如sha1或md5算法)对所划分出的所有数据块进行指纹计算,用计算获得的指纹来标记各个数据块,并建立一个所有已存储的数据块的指纹库。当存入新的数据块时,先根据新数据块的指纹查找指纹库。判断是否已经存储了与该指纹对应的数据块了。如果在指纹库中查找到该块指纹,则不用再为这个数据块分配空间并进行存储。这样,所有指纹相同的数据块,在存储系统中只存储一份,从而可以极大地节省存储空间。
图1示出了现有技术中的指纹表所记录的信息结构的示意图。如图1所示,现有技术中的指纹表记录有已存储的所有数据块的块指纹以及与各块指纹相关联的块存储地址、块引用计数和块长度等信息。
图2示出了现有技术中进行重复数据删除的数据存储方法的流程图。如图2所示,在接收到要存储的数据时,在步骤S101中,将所接收到的数据划分成n个数据块(n≥1)。随后,依次对各数据块进行存储,并以数据块i为例详细描述如下。在步骤S102中,进行指纹计算以获得数据块i的块指纹i。在步骤S103中,查找指纹表以判断块指纹i是否已存在于指纹表中。
若在指纹表中未找到数据块i的块指纹i,则判断为数据块i是未存储过的数据块,进入步骤S104。在步骤S104中,为数据块i分配存储空间,并将数据块i写入所分配的存储空间,随后进入步骤S105和S106。在步骤S105中,于指纹表中增加块指纹i的条目,并填充相应的块存储地址、块长度以及块引用计数等信息,其中该块引用计数被置为1。在步骤S106中,返回与块指纹i对应的块存储地址至上层。
另一方面,若在指纹表中查找到块指纹i,则判断为数据块i是重复数据块,并进入步骤S107和S106。在步骤S107中,更新指纹表中与块指纹i对应的块引用计数、具体为使对应的块引用计数加1。
上述具有重复数据删除功能的数据存储方法存在如下缺陷:随着块指纹数量的增加,查找块指纹所花费的时间增长,这成为影响块指纹查找性能的主要瓶颈。
发明内容
有鉴于此,本发明实施例提供一种数据存储方法、数据存储装置及数据存储系统,可以在具备重复数据删除的数据存储过程中减少查找指纹所花费的时间。
第一方面,本发明实施例提供了一种数据存储方法,包括:将待存储的数据划分成n个数据块,其中n为大于等于1的整数;判断所划分出的各数据块是否为重复数据块,其中所述重复数据块为内容已存储过的数据块;以及存储不是重复数据块的数据块,其中,所述判断所划分出的各数据块是否为重复数据块的步骤包括:基于第i-1数据块的后续历史判断第i数据块是否为重复数据块,其中i为大于1且小于等于n的整数,第i-1数据块是紧挨在第i数据块前采用所述数据存储方法处理过的数据块,第i-1数据块的后续历史包括曾紧接在第i-1数据块的内容之后读取过或存储过的数据块的内容;以及若第i-1数据块的后续历史包括第i数据块的内容,则第i数据块为重复数据块,否则继续基于存储历史判断第i数据块是否为重复数据块,其中所述存储历史记录有所有已存储过的数据块的内容。
结合第一方面,在第一种可能的实施方式中,所述数据存储方法还包括:在基于第i-1数据块的后续历史判断的结果是第i数据块不是重复数据块的情况下,更新第i-1数据块的后续历史。
结合第一方面或结合第一方面的第一种可能的实施方式,在第二种可能的实施方式中,所述数据存储方法还包括:在所述判断所划分出的各数据块是否为重复数据块的步骤之前,按照预定算法生成各数据块的指纹,以使用所述指纹来表示各数据块的内容,所述判断所划分出的各数据块是否为重复数据块的步骤具体包括:基于第i-1数据块的后续历史判断第i数据块是否为重复数据块,其中第i-1数据块的后续历史包括曾紧接在第i-1数据块的内容之后读取过或存储过的数据块的指纹;以及若第i-1数据块的后续历史包括第i数据块的指纹,则第i数据块为重复数据块,否则继续基于存储历史判断第i数据块是否为重复数据块,其中所述存储历史记录有所有已存储过的数据块的指纹。
结合第一方面的第二种可能的实施方式,在第三种可能的实施方式中,所述数据存储方法还进一步包括:利用指纹表来记录所述存储历史,所述指纹表包括指纹以及与该指纹相关联的块存储地址、块引用计数和块后续历史,其中:块存储地址表示与该指纹对应的数据块的存储地址;块引用计数表示与该指纹对应的数据块的出现次数;以及块后续历史表示与该指纹对应的数据块的后续历史。
结合第一方面的第三种可能的实施方式,在第四种可能的实施方式中,所述数据存储方法还一步包括:利用路径表来记录所述指纹表中与某个指纹相关联的块后续历史,所述路径表包括下一块指纹以及与该下一块指纹相关联的记录地址,其中:下一块指纹表示曾紧接在与该指纹对应的数据块之后读取过或存储过的数据块的指纹,以及记录地址表示该下一块指纹在所述指纹表中的记录地址。
结合第一方面的第四种可能的实施方式,在第五种可能的实施方式中,所述基于第i-1数据块的后续历史判断第i数据块是否为重复数据块的步骤包括:判断所述指纹表中与第i-1数据块的指纹相关联的路径表是否包含第i数据块的指纹,如果判断的结果是包含,则根据与第i-1数据块的指纹相关联的路径表确定第i数据块的指纹的记录地址,根据所确定的记录地址将所述指纹表中与第i数据块的指纹相关联的块引用计数加1,并返回与第i数据块的指纹相关联的块存储地址。
结合第一方面的第五种可能的实施方式,在第六种可能的实施方式中,所述基于存储历史判断第i数据块是否为重复数据块的步骤包括,判断所述指纹表中是否包含第i数据块的指纹,如果判断的结果是包含,则将所述指纹表中与第i数据块的指纹相关联的块引用计数加1,返回与第i数据块的指纹相关联的块存储地址,并更新与第i-1数据块的指纹相关联的路径表以包括指向第i数据块的指纹的记录地址。
第二方面,本发明实施例提供了一种数据存储装置,包括:分块单元,用于将待存储的数据划分成n个数据块,其中n为大于等于1的整数;重复判断单元,用于判断所划分出的各数据块是否为重复数据块,其中所述重复数据块为内容已存储过的数据块;以及数据块存储单元,用于存储不是重复数据块的数据块,其中,所述重复判断单元包括:预测模块,用于基于第i-1数据块的后续历史判断第i数据块是否为重复数据块,其中i为大于1且小于等于n的整数,第i-1数据块是紧挨在第i数据块前由所述数据存储装置处理过的数据块,第i-1数据块的后续历史包括曾紧接在第i-1数据块的内容之后读取过或存储过的数据块的内容;以及查找模块,用于在所述预测模块判断的结果是第i数据块不是重复数据块的情况下,基于存储历史判断第i数据块是否为重复数据块,其中所述存储历史记录有所有已存储过的数据块的内容。
结合第二方面,在第一种可能的实施方式中,所述数据存储装置还包括:历史更新单元,用于在所述预测模块判断的结果是第i数据块不是重复数据块的情况下,更新第i-1数据块的后续历史。
结合第二方面或结合第二方面的第一种可能的实施方式,在第二种可能的实施方式中,所述数据存储装置还包括:指纹计算单元,用于按照预定算法生成各数据块的指纹,以使用所述指纹来表示各数据块的内容,所述预测模块基于第i-1数据块的后续历史判断第i数据块是否为重复数据块,其中第i-1数据块的后续历史包括曾紧接在第i-1数据块的内容之后读取过或存储过的数据块的指纹,所述查找模块在所述预测模块判断的结果是第i数据块不是重复数据块的情况下,基于存储历史判断第i数据块是否为重复数据块,其中所述存储历史记录有所有已存储过的数据块的指纹。
结合第二方面的第二种可能的实施方式,在第三种可能的实施方式中,所述历史更新单元利用指纹表来记录存储历史,所述指纹表包括指纹以及与该指纹相关联的块存储地址、块引用计数和块后续历史,其中:块存储地址表示与该指纹对应的数据块的存储地址;块引用计数表示与该指纹对应的数据块的出现次数;以及块后续历史表示与该指纹对应的数据块的后续历史。
结合第二方面的第三种可能的实施方式,在第四种可能的实施方式中,所述历史更新单元利用路径表来记录所述指纹表中与某个指纹相关联的块后续历史,所述路径表包括下一块指纹以及与该下一块指纹相关联的记录地址,其中:下一块指纹表示曾紧接在与该指纹对应的数据块之后读取过或存储过的数据块的指纹,以及记录地址表示该下一块指纹在所述指纹表中的记录地址。
结合第二方面的第四种可能的实施方式,在第五种可能的实施方式中,所述预测模块判断所述指纹表中与第i-1数据块的指纹相关联的路径表是否包含第i数据块的指纹,如果判断的结果是包含,则所述历史更新单元根据与第i-1数据块的指纹相关联的路径表确定第i数据块的指纹的记录地址,根据所确定的记录地址将所述指纹表中与第i数据块的指纹相关联的块引用计数加1,并返回与第i数据块的指纹相关联的块存储地址。
结合第二方面的第五种可能的实施方式,在第六种可能的实施方式中,所述查找单元判断所述指纹表中是否包含第i数据块的指纹,如果判断的结果是包含,则所述历史更新单元将所述指纹表中与第i数据块的指纹相关联的块引用计数加1,返回与第i数据块的指纹相关联的块存储地址,并更新与第i-1数据块的指纹相关联的路径表以包括指向第i数据块的指纹的记录地址。
第三方面,本发明实施例提供一种数据存储系统,包括:存储器,用于提供存储数据块的存储空间;以及根据上述第二方面及上述第二方面的第一至六种可能的实施方式中任一者所述的数据存储装置。
第四方面,本发明实施例提供一种存储控制器,包括通信接口、处理器、计算机可读介质,其中所述通信接口、所述处理器与所述计算机可读介质通过总线连接:所述通信接口,用于与存储器进行通信;所述计算机可读介质,用于存储程序代码,当这些程序代码被所述处理器执行时,所述处理器用于执行上述第一方面及上述第一方面的第一至六种可能的实施方式中任一者所述的数据存储方法。
第五方面,本发明实施例提供一种数据存储系统,包括:存储器,用于提供存储数据块的存储空间;以及根据上述第四方面所述的存储控制器。
本发明实施例所提供的数据存储方法、数据存储装置及数据存储系统为各数据块增加了后续历史的记录,该后续历史包括了曾紧接在该数据块的内容之后读取过或存储过的数据块的内容,使得能够在具备重复数据删除功能的数据存储过程中,根据前一数据块的后续历史提前预测后续重复数据块,从而有效减少查找指纹所花费的时间,进而减少重复数据块判断所需的时间、缓解重复数据块查找的性能瓶颈、达到优化重复数据删除性能的目的。
附图说明
图1示出了现有技术中指纹表的记录信息结构的示意图。
图2示出了现有技术中具备重复数据删除功能的数据存储方法的流程图。
图3示出了根据本发明实施例的具备重复数据删除功能的数据存储方法的流程图。
图4示出了根据本发明另一实施例所构建的指纹表的记录信息结构的示意图。
图5示出了根据本发明另一实施例的具备重复数据删除功能的数据存储方法的流程图。
图6示出了根据本发明又一实施例的具备重复数据删除功能的数据存储装置的结构图。
图7示出了根据本发明再一实施例的具备重复数据删除功能的数据存储装置的结构图。
图8示出根据本发明实施例的具备重复数据删除功能的数据存储系统的结构图。
具体实施方式
以下将对本发明的实施例给出详细的参考。尽管本发明通过这些实施方式进行阐述和说明,但需要注意的是本发明并不仅仅只局限于这些实施方式。相反,本发明涵盖权利要求所定义的发明精神和发明范围内的所有替代物、变体和等同物。
另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员将理解,没有这些具体细节,本发明同样可以实施。在另外一些实例中,对于大家熟知的方法、手续、元件和电路未作详细描述,以便于凸显本发明的主旨。
如上所述,本发明能够优化数据存储过程中的重复数据删除性能,并且实施办法可以是:通过提前预测后续可能需要访问的数据块,来有效减少重复数据块判断所需的时间,并缓解重复数据块查找的性能瓶颈。
图3示出了根据本发明实施例的具备重复数据删除功能的数据存储方法的流程图。该数据存储方法适用于任何数据存储过程以及能够进行数据存储的装置或系统。如图3所示,在接收到要存储的数据并将数据划分成n块(n≥1)后,基于步骤S301至S306对各数据块进行存储,下面以数据块i为例详细描述。
在步骤S301中,判断数据块(i-1)、即数据块i的前一数据块的后续历史是否预测了数据块i的内容,其中,i为大于1且小于等于n的整数,数据块(i-1)的后续历史包括曾紧接在第i-1数据块的内容之后读取过或存储过的数据块的内容。可以通过判断数据块(i-1)的后续历史是否包括了数据块i的内容来判断数据块(i-1)的后续历史是否预测了数据块i的内容。若在步骤S301判断为数据块(i-1)的后续历史预测到数据块i的内容,则认为数据块i是重复数据块、即之前已存储过数据块i的内容,随后进入步骤S304及S306。在步骤S304中,更新已存储的数据块的存储历史。在步骤S306中,返回存储了数据块i的内容的存储地址。
另一方面,若在步骤S301判断为数据块(i-1)的后续历史未预测到数据块i的内容,则进入步骤S302。在步骤S302中,基于存储历史判断是否已存储过数据块i的内容,其中存储历史记录有所有已存储过的数据块的内容。若判断为已存储过数据块i的内容,则认为数据块i是重复数据块,随后进入步骤S304、S305、S306。在步骤S304中,更新已存储的数据块的存储历史。在步骤S305中,更新数据块(i-1)的后续历史。在步骤S306中,返回存储了数据块i的内容的存储地址。
若在步骤S302判断为未存储过数据块i的内容,则判断为数据块i是新数据块,随后进入步骤S303。在步骤S303中,为数据块i分配存储空间,并将数据块i写入所分配的存储空间,随后步骤进入S304、S305、S306。在步骤S304中,更新已存储的数据块的存储历史。在步骤S305中,更新数据块(i-1)的后续历史。在步骤S306中,返回存储了数据块i的内容的存储地址。
综上,在基于数据块(i-1)的后续历史确定数据块i为重复数据块的情况下,不针对数据块i进行数据块存储操作,而更新存储历史;在基于所有数据块的存储历史确定数据块i为重复数据块的情况下,也不针对数据块i进行数据块存储操作,而更新存储历史和数据块(i-1)的后续历史;以及在确定数据块i不是重复数据块的情况下,针对数据块i进行数据块存储操作,并更新存储历史和数据块(i-1)的后续历史。
通过上述介绍可知,根据本发明实施例的数据存储方法是在现有的重复数据块删除方案的基础上,根据数据块的出现顺序记录数据块的后续历史,并在进行重复数据块判断时提前进行预测。换言之,在基于完整的存储历史判断重复数据块之前,先基于存储历史中命中概率较高的部分、即前一数据块的后续历史进行小范围的重复数据块判断。这显然可以有效减少重复数据块的判断时间,提升重复数据块删除的存储效率。
根据本发明的另一实施例,对于基于按照预定算法所生成的各数据块的指纹来进行重复数据块判断(指纹相同意味着数据块的内容相同)的数据存储,可以在指纹表中增加块指纹的历史路径信息。
在本发明实施例中,数据块的后续历史是指,按照存储、读取的先后顺序,曾经紧挨着这个数据块之后读取或者存储的数据块的内容。
以按照存储的先后顺序,曾经紧挨着这个数据块之后存储的数据块的内容作为后续历史为例。例如:在当前存储之前有过两次存储,在第一次存储中,依次存入A、B、C三个数据块;在第二次存储中,依次存入A、B、D三个数据块,也就是说B数据块曾经在A数据块之后存储过,C、D数据块曾经在B数据块之后存储过。那么,在当前存储中,数据块A的后续历史就是数据块B的内容,数据块B的后续历史包括两项,分别是数据块C的内容、数据块D的内容。
在本发明另一实施例中,除了以紧挨着这个数据块之后存储的数据块的内容作为后续历史,紧挨着这个数据块之后读取的数据块的内容也可以作为后续历史。例如,假设在当前存储之前有过两次存储、一次读取。其中,在第一次存储中,依次存入A、B、C三个数据块;在第二次存储中,依次存入A、B、D三个数据块;在一次读取中,依次读取A、E、F三个数据块,那么在当前存储中,数据块A的后续历史包括数据块B的内容以及数据块E的内容,数据块B的后续历史包括数据块C、数据块D的内容,数据块E的后续历史包括数据块F的内容。
本发明实施例中的存储历史是指,在存储系统中已存储的数据块的内容。本发明实施例中,数据被分割成数据块以后再存储到存储系统中,数据块是存储系统中的数据存储单位。数据块的大小可以是固定的也可以是可变的,可以根据读取、写入(存储)效率,存储空间大小等条件进行设定。将数据分割成数据块的操作可以由存储系统执行也可以由与存储系统通信的应用服务器执行。当用户需要读取已存储的数据时,查找组成数据的数据块,然后将这些数据块还原成数据并返回给用户。随着被存储数据的增加,存储历史中的数据块数量也随之增加。为了减少存储空间的占用,可以对存储历史中的数据块进行重复数据删除——内容相同的数据块只存储一份,不再重复存储。
本发明实施例中的指纹用于标记数据块,当两个数据块的内容相同时,其指纹也相同。指纹可以是通过对数据块的内容进行哈希(hash)运算获得。除了哈希算法,也可以采用其他能够标记数据块内容的算法。可以是长度固定的标记,也可以是长度不固定的标记,只要能起到标记数据块内容的作用即可。
由于指纹具有标记数据块的功能,因此上述对后续历史、存储历史的判断,可以基于数据块内容本身进行,也可以基于数据块的指纹进行。
图4示出了根据本发明另一实施例所构建的指纹表400的记录信息结构的示意图。图4所示的指纹表400可用来记录数据块的存储历史。在如图4所示的指纹表400中,与指纹410相关联的信息,除了包括块存储地址420、块长度430、块引用计数440等信息,还包括块后续历史450。其中,块存储地址420表示与该指纹410对应的数据块的存储地址;块长度430表示与指纹410对应的数据块的长度;块引用计数440表示与该指纹410对应的数据块的出现次数;以及块后续历史450表示与该指纹410对应的数据块的后续历史,用于记录曾紧接在第i-1数据块的内容之后读取过或存储过的数据块、即下一数据块的指纹和指纹所在位置。
对于指纹表400,可以利用路径表来记录与指纹410相关联的块后续历史450,该路径表可包括n条路径,每条路径对应的信息可包括下一块指纹451和指纹所在地址452。其中,下一块指纹451表示曾紧接在该数据块之后所读取过或存储过的数据块的指纹;以及指纹所在地址452表示下一块指纹451的记录地址。由此可见,根据块后续历史450可预测下一数据块的指纹的记录地址,进而可更快地查找到下一数据块的块存储地址。
图5示出了根据本发明的该另一实施例的具备重复数据删除功能的数据存储方法的流程图。该实施例基于下面的步骤S501至S508依次对各数据块进行存储。
在步骤S501中,对数据块i进行指纹计算,以生成数据块i的块指纹i。在步骤S502中,判断与数据块(i-1)的指纹410相关联的路径表450是否包含指向块指纹i的路径451。若在步骤S502判断为包含指向块指纹i的路径,则认为数据块i是重复数据块,随后根据该路径确定该指纹的记录地址452,并进入步骤S507和S508。在步骤S507中,根据该记录地址返回指纹表中与该指纹相关联的块存储地址420。在步骤S508中,根据该记录地址452将指纹表中与该指纹相关联的块引用计数440加1。
另一方面,若在步骤S502判断为不包含指向块指纹i的路径,则进入步骤S503。在步骤S503中,判断指纹表400中是否已存有块指纹i。若在步骤S503判断为指纹表400中已存有块指纹i,则认为数据块i是重复数据块,随后进入步骤S506~S508。在步骤S506中,更新与数据块(i-1)的指纹相关联的路径表、即块后续历史450,以在该路径表中增加指向数据块i的块指纹i的路径。在步骤S507中,返回指纹表中与该指纹相关联的块存储地址420。在步骤S508中,将指纹表中与该指纹相关联的块引用计数440加1。
若在步骤S503判断为指纹表400中未存有块指纹i,则认为数据块i是未存储过的新数据块,随后进入步骤S504。在步骤S504中,为数据块i分配存储空间,并将数据块i写入该存储空间,随后进入步骤S505~S507。在步骤S505中,在指纹表400中增加块指纹i的记录,即增加块指纹i410以及与块指纹i相关联的数据块i的块存储地址420、块长度430、块引用计数440(在这种情况下,可以置为1)和块后续历史450(在这种情况下,可以置为空)等。在步骤S506中,更新与数据块(i-1)的指纹相关联的路径表、即块后续历史450,以在该路径表中增加指向数据块i的块指纹i的路径。在步骤S507中,返回存储有数据块i的内容的块存储地址。
综上,由于在指纹表400中增加了指示下一数据块的指纹和指纹所在地址的路径信息450,根据本发明实施例的上述数据存储方法能够根据数据块历史路径关系进行预测并提前预取命中概率大的数据块指纹信息。相应地,在图5中,除了包括分别与图2中的步骤S102~S107相对应的步骤S501、S503、S504、S505、S507、S508之外,还包括步骤S502和S506。其中,通过在步骤S502中提前预测命中概率大的重复数据块指纹,能够有效减少指纹查找所需的时间。此外,步骤S506用以维护数据块历史路径关系、即路径表。
此外,在一个实施例中,在指纹表400存储于诸如硬盘等的读写速度较慢的存储器中的情况下,可将与数据块(i-1)的指纹相关联的路径表预取至读写速度较快的缓冲存储器,从而进一步提高步骤S502的处理速度。
图6示出了根据本发明又一实施例的具备重复数据删除功能的数据存储装置600的结构图。本发明任一实施例中的数据存储装置例如是存储控制器,也可以是具有相同功能的个人电脑(PC)。
数据存储装置600包括分块单元610、重复判断单元630、数据块存储单元640以及历史更新单元650,其中:分块单元610用于将待存储的数据划分成n个数据块,其中n为大于等于1的整数;重复判断单元630用于判断所划分出的各数据块是否为已存储过的重复数据块;数据块存储单元640用于存储不是重复数据块的数据块;历史更新单元650用于更新数据块的存储历史。
如图6所示,重复判断单元630可包括预测模块631和查找模块632。其中,预测模块631用于在判断第i数据块是否为重复数据块时,基于第i-1数据块、即前一数据块的后续历史预测第i数据块的内容,其中第i-1数据块的后续历史包括曾紧接在第i-1数据块的内容之后读取过或存储过的数据块的内容;以及查找模块632,用于在预测模块631未预测到第i数据块的内容的情况下,通过查找存储历史来判断是否已存储了第i数据块的内容,其中存储历史记录有所有已存储过的数据块的内容。
在判断第i数据块是否为重复数据块时(i为大于1且小于等于n的整数),预测模块631判断第i-1数据块的后续历史是否预测了第i数据块的内容。在预测模块631判断为第i-1数据块的后续历史预测到第i数据块的内容的情况下,数据块存储单元640不针对第i数据块进行数据块存储操作,历史更新单元650更新存储历史。在预测模块631判断为第i-1数据块的后续历史未预测到第i数据块的内容的情况下,查找模块632基于存储历史来判断是否已存储了第i数据块的内容。
在查找模块632判断为存储历史已存储了第i数据块的内容的情况下,数据块存储单元640不针对第i数据块进行数据块存储操作,历史更新单元650更新存储历史和第i-1数据块的后续历史。在查找模块632判断为存储历史未存储第i数据块的内容的情况下,数据块存储单元640针对第i数据块进行数据块存储操作,并且历史更新单元650返回存储空间的地址作为数据块i的存储地址、并更新存储历史和第i-1数据块的后续历史。
图7示出了根据本发明再一实施例的具备重复数据删除功能的数据存储装置700的结构图。图7中与图6标号相同的部件具有相同的功能。图7所示的数据存储装置700还可以包括指纹计算单元620。其中,指纹计算单元620用于按照预定算法生成各数据块的指纹。
相应地,历史更新单元650可利用图4所示的指纹表400来记录数据块的存储历史,并利用指纹表400中与指纹相关联的路径表来记录与该指纹相对应的数据块的后续历史。重复判断单元630可基于指纹计算单元620所生成的指纹来进行重复数据块判断,即指纹相同意味着数据块的内容相同。
在一个实施例中,预测模块631基于指纹表400中与第i-1数据块的指纹相关联的路径表450来判断第i数据块是否为重复数据块,查找模块632基于整个指纹表400来判断第i数据块是否为重复数据块。
并且,在经由预测模块631确认第i数据块为重复数据块的情况下,数据块存储单元640不针对第i数据块进行数据块存储操作,历史更新单元650将指纹表400中与第i数据块的指纹相关联的块引用计数加1,并返回与该指纹相关联的块存储地址。在经由查找模块632确认第i数据块为重复数据块的情况下,数据块存储单元640也不针对第i数据块进行数据块存储操作,历史更新单元650将指纹表400中与第i数据块的指纹相关联的块引用计数加1,返回与该指纹相关联的块存储地址,并在与第i-1数据块的指纹相关联的路径表中增加指向第i数据块的路径。在查找模块632确认第i数据块不是重复数据块的情况下,数据块存储单元640针对第i数据块进行数据块存储操作,历史更新单元650在指纹表400中增加第i数据块的指纹的记录并在与第i-1数据块的指纹相关联的路径表中增加指向第i数据块的路径。
图8示出根据本发明实施例的具备重复数据删除功能的数据存储系统800的结构图。如图8所示,数据存储系统800包括存储器801和存储控制器802。其中,存储器801用于提供存储数据所需要的存储空间,其可以是任何形式存储介质,例如可以是由硬盘、磁带以及固态硬盘等存储介质组成,这些存储介质可以通过廉价磁碟冗余阵列(RAID,Redundant Array of Inexpensive Disks)等方式提高数据的可靠性。存储控制器802与存储器801连接,用于通过执行如图3或图5所示出的数据存储方法来控制存储器801的存储操作。存储控制器包括处理器、计算机可读介质以及通信接口,其中通信接口、处理器与计算机可读介质通过总线连接。通信接口与存储器801通信,当有数据块需要存储时,存储控制器802通过通信接口把数据块发往存储器801并发出存储指令,并由存储器801对数据块的内容进行物理上的记录;计算机可读介质用于存储程序代码,当这些程序代码被存储控制器802中的处理器执行时,处理器会执行本发明上述实施例中的数据存储方法。
此外,根据本发明的另一实施例,数据存储系统也可以包括存储器以及本发明上述实施例中的数据存储装置。
也可以采用其他能够表示或代替数据块的内容的标记来替换本发明中的指纹。总之,根据本发明实施例所提供的数据存储方法及装置能够在具备重复数据删除功能的数据存储过程中,根据数据块的历史顺序预测后续可能的重复数据块,从而能够有效减少重复数据块判断所需的时间、缓解重复数据块确认的性能瓶颈、达到优化重复数据删除性能的目的。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
上文具体实施方式和附图仅为本发明的常用实施例。显然,在不脱离权利要求书所界定的本发明精神和发明范围的前提下可以有各种增补、修改和替换。本领域技术人员应该理解,本发明在实际应用中可根据具体的环境和工作要求在不背离发明准则的前提下在形式、结构、布局、比例、材料、元素、组件及其它方面有所变化。因此,在此披露的实施例仅用于说明而非限制,本发明的范围由所附权利要求及其合法等同物界定,而不限于此前的描述。

Claims (17)

1.一种数据存储方法,其特征在于,包括:
将待存储的数据划分成n个数据块,其中n为大于等于1的整数;
判断所划分出的各数据块是否为重复数据块,其中所述重复数据块为内容已存储过的数据块;以及
存储不是重复数据块的数据块,
其中,所述判断所划分出的各数据块是否为重复数据块的步骤包括:
基于第i-1数据块的后续历史判断第i数据块是否为重复数据块,其中i为大于1且小于等于n的整数,第i-1数据块是紧挨在第i数据块前采用所述数据存储方法处理过的数据块,第i-1数据块的后续历史包括曾紧接在第i-1数据块的内容之后读取过或存储过的数据块的内容;以及
若第i-1数据块的后续历史包括第i数据块的内容,则第i数据块为重复数据块,否则继续基于存储历史判断第i数据块是否为重复数据块,其中所述存储历史记录有所有已存储过的数据块的内容。
2.根据权利要求1所述的数据存储方法,其特征在于,还包括:在基于第i-1数据块的后续历史判断的结果是第i数据块不是重复数据块的情况下,更新第i-1数据块的后续历史。
3.根据权利要求1或2所述的数据存储方法,其特征在于,还包括:在所述判断所划分出的各数据块是否为重复数据块的步骤之前,按照预定算法生成各数据块的指纹,以使用所述指纹来表示各数据块的内容,
所述判断所划分出的各数据块是否为重复数据块的步骤具体包括:
基于第i-1数据块的后续历史判断第i数据块是否为重复数据块,其中第i-1数据块的后续历史包括曾紧接在第i-1数据块的内容之后读取过或存储过的数据块的指纹;以及
若第i-1数据块的后续历史包括第i数据块的指纹,则第i数据块为重复数据块,否则继续基于存储历史判断第i数据块是否为重复数据块,其中所述存储历史记录有所有已存储过的数据块的指纹。
4.根据权利要求3所述的数据存储方法,其特征在于,该方法还进一步包括:利用指纹表来记录所述存储历史,所述指纹表包括指纹以及与该指纹相关联的块存储地址、块引用计数和块后续历史,其中:
块存储地址表示与该指纹对应的数据块的存储地址;
块引用计数表示与该指纹对应的数据块的出现次数;以及
块后续历史表示与该指纹对应的数据块的后续历史。
5.根据权利要求4所述的数据存储方法,其特征在于,该方法还一步包括:利用路径表来记录所述指纹表中与某个指纹相关联的块后续历史,所述路径表包括下一块指纹以及与该下一块指纹相关联的记录地址,其中:
下一块指纹表示曾紧接在与该指纹对应的数据块之后读取过或存储过的数据块的指纹,以及
记录地址表示该下一块指纹在所述指纹表中的记录地址。
6.根据权利要求5所述的数据存储方法,其特征在于,所述基于第i-1数据块的后续历史判断第i数据块是否为重复数据块的步骤包括:
判断所述指纹表中与第i-1数据块的指纹相关联的路径表是否包含第i数据块的指纹,
如果判断的结果是包含,则根据与第i-1数据块的指纹相关联的路径表确定第i数据块的指纹的记录地址,根据所确定的记录地址将所述指纹表中与第i数据块的指纹相关联的块引用计数加1,并返回与第i数据块的指纹相关联的块存储地址。
7.根据权利要求6所述的数据存储方法,其特征在于,所述基于存储历史判断第i数据块是否为重复数据块的步骤包括,判断所述指纹表中是否包含第i数据块的指纹,
如果判断的结果是包含,则将所述指纹表中与第i数据块的指纹相关联的块引用计数加1,返回与第i数据块的指纹相关联的块存储地址,并更新与第i-1数据块的指纹相关联的路径表以包括指向第i数据块的指纹的记录地址。
8.一种数据存储装置,其特征在于,包括:
分块单元,用于将待存储的数据划分成n个数据块,其中n为大于等于1的整数;
重复判断单元,用于判断所划分出的各数据块是否为重复数据块,其中所述重复数据块为内容已存储过的数据块;以及
数据块存储单元,用于存储不是重复数据块的数据块,
其中,所述重复判断单元包括:
预测模块,用于基于第i-1数据块的后续历史判断第i数据块是否为重复数据块,其中i为大于1且小于等于n的整数,第i-1数据块是紧挨在第i数据块前由所述数据存储装置处理过的数据块,第i-1数据块的后续历史包括曾紧接在第i-1数据块的内容之后读取过或存储过的数据块的内容;以及
查找模块,用于在所述预测模块判断的结果是第i数据块不是重复数据块的情况下,基于存储历史判断第i数据块是否为重复数据块,其中所述存储历史记录有所有已存储过的数据块的内容。
9.根据权利要求8所述的数据存储装置,其特征在于,还包括:历史更新单元,用于在所述预测模块判断的结果是第i数据块不是重复数据块的情况下,更新第i-1数据块的后续历史。
10.根据权利要求8或9所述的数据存储装置,其特征在于,还包括:指纹计算单元,用于按照预定算法生成各数据块的指纹,以使用所述指纹来表示各数据块的内容,
所述预测模块基于第i-1数据块的后续历史判断第i数据块是否为重复数据块,其中第i-1数据块的后续历史包括曾紧接在第i-1数据块的内容之后读取过或存储过的数据块的指纹,
所述查找模块在所述预测模块判断的结果是第i数据块不是重复数据块的情况下,基于存储历史判断第i数据块是否为重复数据块,其中所述存储历史记录有所有已存储过的数据块的指纹。
11.根据权利要求10所述的数据存储装置,其特征在于,
所述历史更新单元利用指纹表来记录存储历史,所述指纹表包括指纹以及与该指纹相关联的块存储地址、块引用计数和块后续历史,其中:
块存储地址表示与该指纹对应的数据块的存储地址;
块引用计数表示与该指纹对应的数据块的出现次数;以及
块后续历史表示与该指纹对应的数据块的后续历史。
12.根据权利要求11所述的数据存储装置,其特征在于,所述历史更新单元利用路径表来记录所述指纹表中与某个指纹相关联的块后续历史,所述路径表包括下一块指纹以及与该下一块指纹相关联的记录地址,其中:
下一块指纹表示曾紧接在与该指纹对应的数据块之后读取过或存储过的数据块的指纹,以及
记录地址表示该下一块指纹在所述指纹表中的记录地址。
13.根据权利要求12所述的数据存储装置,其特征在于,所述预测模块判断所述指纹表中与第i-1数据块的指纹相关联的路径表是否包含第i数据块的指纹,
如果判断的结果是包含,则所述历史更新单元根据与第i-1数据块的指纹相关联的路径表确定第i数据块的指纹的记录地址,根据所确定的记录地址将所述指纹表中与第i数据块的指纹相关联的块引用计数加1,并返回与第i数据块的指纹相关联的块存储地址。
14.根据权利要求13所述的数据存储装置,其特征在于,所述查找单元判断所述指纹表中是否包含第i数据块的指纹,
如果判断的结果是包含,则所述历史更新单元将所述指纹表中与第i数据块的指纹相关联的块引用计数加1,返回与第i数据块的指纹相关联的块存储地址,并更新与第i-1数据块的指纹相关联的路径表以包括指向第i数据块的指纹的记录地址。
15.一种数据存储系统,其特征在于,包括:
存储器,用于提供存储数据块的存储空间;以及
根据权利要求8至14所述的数据存储装置。
16.一种存储控制器,其特征在于,包括通信接口、处理器、计算机可读介质,其中所述通信接口、所述处理器与所述计算机可读介质通过总线连接:
所述通信接口,用于与存储器进行通信;
所述计算机可读介质,用于存储程序代码,当这些程序代码被所述处理器执行时,所述处理器用于执行权利要求1至7中任一项所述的数据存储方法。
17.一种数据存储系统,其特征在于,包括:
存储器,用于提供存储数据块的存储空间;以及
根据权利要求16所述的存储控制器。
CN201280005841.0A 2012-11-20 数据存储方法、数据存储装置及数据存储系统 Active CN103959259B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2012/084901 WO2014078990A1 (zh) 2012-11-20 2012-11-20 数据存储方法、数据存储装置及数据存储系统

Publications (2)

Publication Number Publication Date
CN103959259A true CN103959259A (zh) 2014-07-30
CN103959259B CN103959259B (zh) 2016-11-30

Family

ID=

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104216666A (zh) * 2014-09-03 2014-12-17 浪潮(北京)电子信息产业有限公司 一种管理磁盘数据写入的方法及装置
CN104537110A (zh) * 2015-01-19 2015-04-22 上海拍拍贷金融信息服务有限公司 一种数据写入方法和装置
CN104635575A (zh) * 2015-01-06 2015-05-20 钟鉴宏 一种肝癌检查控制系统
WO2017020735A1 (zh) * 2015-07-31 2017-02-09 华为技术有限公司 一种数据处理方法、备份服务器及存储系统
CN106406757A (zh) * 2016-09-05 2017-02-15 中国联合网络通信集团有限公司 数据存储方法及装置
CN106406757B (zh) * 2016-09-05 2019-07-16 中国联合网络通信集团有限公司 数据存储方法及装置
CN110325958A (zh) * 2017-10-13 2019-10-11 华为技术有限公司 分布式块存储系统中数据存储方法、装置及计算机可读存储介质
WO2020037511A1 (zh) * 2018-08-21 2020-02-27 华为技术有限公司 数据存储及获取方法和装置
CN111124939A (zh) * 2018-10-31 2020-05-08 深信服科技股份有限公司 一种基于全闪存阵列的数据压缩方法及系统
CN111291026A (zh) * 2018-12-07 2020-06-16 北京京东尚科信息技术有限公司 数据接入方法、系统、装置以及计算机可读介质
CN111597180A (zh) * 2020-05-19 2020-08-28 山东汇贸电子口岸有限公司 一种基于存储过程的otrs系统的数据清洗方法
WO2021073635A1 (zh) * 2019-10-17 2021-04-22 华为技术有限公司 一种数据存储方法及装置
WO2021121042A1 (zh) * 2019-12-18 2021-06-24 华为技术有限公司 存储系统中的数据存储方法及相关设备
CN113721836A (zh) * 2021-06-15 2021-11-30 荣耀终端有限公司 一种数据去重方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1672137A (zh) * 2002-07-25 2005-09-21 三洋电机株式会社 能够不重叠地存储多个历史信息项的数据存储设备
CN1708763A (zh) * 2002-11-08 2005-12-14 皇家飞利浦电子股份有限公司 提供先前的选择信息的方法和系统
US7487162B2 (en) * 2003-04-11 2009-02-03 Hitachi, Ltd. Method and data processing system with data replication
CN102222085A (zh) * 2011-05-17 2011-10-19 华中科技大学 一种基于相似性与局部性结合的重复数据删除方法
CN102624908A (zh) * 2012-03-12 2012-08-01 浙江大学 一种基于混合P2P网络结构的语义Web服务发现方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1672137A (zh) * 2002-07-25 2005-09-21 三洋电机株式会社 能够不重叠地存储多个历史信息项的数据存储设备
CN1708763A (zh) * 2002-11-08 2005-12-14 皇家飞利浦电子股份有限公司 提供先前的选择信息的方法和系统
US7487162B2 (en) * 2003-04-11 2009-02-03 Hitachi, Ltd. Method and data processing system with data replication
CN102222085A (zh) * 2011-05-17 2011-10-19 华中科技大学 一种基于相似性与局部性结合的重复数据删除方法
CN102624908A (zh) * 2012-03-12 2012-08-01 浙江大学 一种基于混合P2P网络结构的语义Web服务发现方法

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104216666A (zh) * 2014-09-03 2014-12-17 浪潮(北京)电子信息产业有限公司 一种管理磁盘数据写入的方法及装置
CN104635575A (zh) * 2015-01-06 2015-05-20 钟鉴宏 一种肝癌检查控制系统
CN104537110A (zh) * 2015-01-19 2015-04-22 上海拍拍贷金融信息服务有限公司 一种数据写入方法和装置
CN104537110B (zh) * 2015-01-19 2018-01-12 上海拍拍贷金融信息服务有限公司 一种数据写入方法和装置
WO2017020735A1 (zh) * 2015-07-31 2017-02-09 华为技术有限公司 一种数据处理方法、备份服务器及存储系统
CN106406757A (zh) * 2016-09-05 2017-02-15 中国联合网络通信集团有限公司 数据存储方法及装置
CN106406757B (zh) * 2016-09-05 2019-07-16 中国联合网络通信集团有限公司 数据存储方法及装置
CN110325958A (zh) * 2017-10-13 2019-10-11 华为技术有限公司 分布式块存储系统中数据存储方法、装置及计算机可读存储介质
JP2021534505A (ja) * 2018-08-21 2021-12-09 華為技術有限公司Huawei Technologies Co., Ltd. データ記憶方法、データ取得方法、及び機器
WO2020037511A1 (zh) * 2018-08-21 2020-02-27 华为技术有限公司 数据存储及获取方法和装置
JP7108784B2 (ja) 2018-08-21 2022-07-28 華為技術有限公司 データ記憶方法、データ取得方法、及び機器
US11960467B2 (en) 2018-08-21 2024-04-16 Huawei Technologies Co., Ltd. Data storage method, data obtaining method, and apparatus
CN111124939A (zh) * 2018-10-31 2020-05-08 深信服科技股份有限公司 一种基于全闪存阵列的数据压缩方法及系统
CN111291026A (zh) * 2018-12-07 2020-06-16 北京京东尚科信息技术有限公司 数据接入方法、系统、装置以及计算机可读介质
WO2021073635A1 (zh) * 2019-10-17 2021-04-22 华为技术有限公司 一种数据存储方法及装置
US11886729B2 (en) 2019-10-17 2024-01-30 Huawei Technologies Co., Ltd. Data storage method and apparatus
WO2021121042A1 (zh) * 2019-12-18 2021-06-24 华为技术有限公司 存储系统中的数据存储方法及相关设备
US11755207B2 (en) 2019-12-18 2023-09-12 Huawei Technologies Co., Ltd. Data storage method in storage system and related device
CN111597180A (zh) * 2020-05-19 2020-08-28 山东汇贸电子口岸有限公司 一种基于存储过程的otrs系统的数据清洗方法
CN113721836A (zh) * 2021-06-15 2021-11-30 荣耀终端有限公司 一种数据去重方法及装置

Also Published As

Publication number Publication date
WO2014078990A1 (zh) 2014-05-30

Similar Documents

Publication Publication Date Title
US10776396B2 (en) Computer implemented method for dynamic sharding
JP6373328B2 (ja) メモリ管理での重複排除のための参照ブロックの参照セットへの集約
EP2989556B1 (en) Object storage using multiple dimensions of object information
CN102707990A (zh) 基于容器的处理方法、装置和系统
KR20200067962A (ko) Ssd에 데이터를 기록하는 방법 및 장치
US8880840B2 (en) Writing adjacent tracks to a stride, based on a comparison of a destaging of tracks to a defragmentation of the stride
CN110058958B (zh) 用于管理数据备份的方法、设备和计算机程序产品
CN1299097A (zh) 对数据存储库中的具有冗余拷贝的数据卷的平衡存取
CN102498466A (zh) 数据存储实体之间的数据迁移
US10394819B2 (en) Controlling mirroring of tables based on access prediction
CN102221981A (zh) 管理层信息的方法和装置
US20170322747A1 (en) Information processing apparatus and method for deduplication
CN103473298A (zh) 数据归档方法和装置以及存储系统
US20170123677A1 (en) Integration of Reference Sets with Segment Flash Management
US11163464B1 (en) Method, electronic device and computer program product for storage management
JP2016066220A (ja) ストレージ装置、ストレージ装置制御方法及びストレージ装置制御プログラム
CN104750432A (zh) 一种数据存储方法及装置
US20100125697A1 (en) Computing device having storage, apparatus and method of managing storage, and file system recorded recording medium
US9785374B2 (en) Storage device management in computing systems
US6757804B2 (en) Method and system for reducing fragmentation
JP2007334752A (ja) Raid装置、raid制御プログラムおよびキャッシュ管理方法
US9128823B1 (en) Synthetic data generation for backups of block-based storage
CN103959259A (zh) 数据存储方法、数据存储装置及数据存储系统
EP2642379A2 (en) Information processing apparatus, program, and data allocation method
JP4778538B2 (ja) ストレージデータ管理システム及びストレージデータ管理プログラム

Legal Events

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