CN107818136B - 用于回收垃圾对象数据的方法和装置 - Google Patents

用于回收垃圾对象数据的方法和装置 Download PDF

Info

Publication number
CN107818136B
CN107818136B CN201710882560.8A CN201710882560A CN107818136B CN 107818136 B CN107818136 B CN 107818136B CN 201710882560 A CN201710882560 A CN 201710882560A CN 107818136 B CN107818136 B CN 107818136B
Authority
CN
China
Prior art keywords
data
object data
metadata
storage system
identification
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
CN201710882560.8A
Other languages
English (en)
Other versions
CN107818136A (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
Priority to CN201710882560.8A priority Critical patent/CN107818136B/zh
Publication of CN107818136A publication Critical patent/CN107818136A/zh
Application granted granted Critical
Publication of CN107818136B publication Critical patent/CN107818136B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations
    • 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/174Redundancy elimination performed by the file system

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

本申请提供了用于回收垃圾对象数据的方法和装置。该方法包括:获取对象数据;从对象数据的第一字段中获取对象数据的对象标识;根据对象数据的对象标识在元数据存储系统中查询对象数据对应的对象元数据;在元数据存储系统中未查询到对象元数据的情况下,确定对象数据为垃圾对象数据;在元数据存储系统中查询到对象元数据,且对象数据与对象元数据不匹配的情况下,确定对象数据为垃圾对象数据;在元数据存储系统中查询到对象元数据,且对象数据与对象数据的对象元数据匹配的情况下,确定对象数据为非垃圾对象数据。本申请能够提高用于回收垃圾对象数据时的准确性和可靠性。

Description

用于回收垃圾对象数据的方法和装置
技术领域
本申请涉及垃圾对象数据回收技术领域,并且更具体地,涉及一种用于回收垃圾对象数据的方法和装置。
背景技术
对象存储系统通常采用对象数据与对象元数据分离的方式来保存数据,也就是将对象数据保存到数据存储系统中,将对象元数据保存到元数据存储系统中。如果在保存对象元数据的过程中出现了异常,那么,在数据存储系统中就会形成垃圾对象数据。例如,第一对象数据已经保存到了数据存储系统中,但是在保存第一对象数据对应的第一对象元数据的过程中出现了异常,导致第一对象元数据没有保存到元数据存储系统中或者将第一对象元数据保存到元数据存储系统时出现错误,那么,就可以确定数据存储系统中的第一对象数据为垃圾对象数据。
为了确定数据存储系统保存数据时产生的垃圾对象数据,进而对垃圾对象数据进行回收,现有的方案是由对象语义接口和服务层感知对象元数据保存异常,并记录保存异常的对象元数据对应的对象数据的数据标识,将该对象数据确定为垃圾对象数据,接下来对该垃圾对象数据进行回收。
但是在现有的方案中,当存储系统出现故障时,对象语义接口和服务层无法感知对象元数据保存异常,或者,即使感知到了对象元数据保存异常,但是无法准确记录保存异常的对象元数据对应的对象数据的数据标识,导致对象语义接口和服务层无法准确确定数据存储系统中出现的垃圾对象数据。
发明内容
本申请提供一种用于回收垃圾对象数据的方法和装置,以提高确定垃圾对象数据的准确性和可靠性。
第一方面,提供了一种用于回收垃圾对象数据的方法,所述方法包括:获取对象数据;从所述对象数据的第一字段中获取所述对象数据的对象标识,所述对象数据为存储在数据存储系统中的数据;根据所述对象数据的对象标识在元数据存储系统中查询所述对象数据对应的对象元数据;在所述元数据存储系统中未查询到所述对象元数据的情况下,确定所述对象数据为垃圾对象数据;在所述元数据存储系统中查询到所述对象元数据,且所述对象数据与所述对象元数据不匹配的情况下,确定所述对象数据为垃圾对象数据;在所述元数据存储系统中查询到所述对象元数据,且所述对象数据与所述对象数据的对象元数据匹配的情况下,确定所述对象数据为非垃圾对象数据。
通过从对象数据中获取的对象标识,能够根据获取的对象标识在元数据存储系统中查询是否存在对象数据对应的对象元数据,并根据查询结果就可以确定对象数据是否为垃圾对象数据,与现有方案中根据写入元数据发生异常时记录的数据标识来确定垃圾对象数据的方式相比,提高了确定垃圾对象数据的准确性和可靠性。
结合第一方面,在第一方面的某些实现方式中,在获取所述对象数据之前,所述方法还包括:将所述对象数据的对象标识和所述对象数据的数据内容写入所述数据存储系统。
在写入数据内容时将对象数据的数据标识也写入到数据存储系统中,这样就能够直接从数据存储系统中得到对象数据的对象标识,并根据该对象标识在元数据存储系统中查询相应的对象元数据,进而确定对象数据的有效性(也就是确定对象数据是否为垃圾对象数据)。
结合第一方面,在第一方面的某些实现方式中,所述获取对象数据,包括:获取数据标识列表,所述数据标识列表包含所述数据存储系统中存储的对象数据的数据标识;从所述数据标识列表中获取所述对象数据的数据标识;根据所述对象数据的数据标识,从所述数据存储系统中获取所述对象数据。
通过数据标识列表,能够从数据存储系统中简单方便地获取要查询的对象数据。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:记录所述对象数据的数据标识。
通过记录对象数据的数据标识,能够对查询过程进行记录,防止出现反复查询,提高查询效率。
结合第一方面,在第一方面的某些实现方式中,所述对象数据为垃圾对象数据,所述方法还包括:对所述对象数据进行垃圾回收。
当对象数据为垃圾对象数据时,通过对对象数据进行垃圾回收,能够保证对象存储系统的正常运行。
结合第一方面,在第一方面的某些实现方式中,所述对象数据与所述对象元数据不匹配,包括:所述对象数据的数据标识与所述对象元数据中包含的数据标识不同。
结合第一方面,在第一方面的某些实现方式中,所述对象数据与所述对象元数据匹配,包括:
所述对象数据的数据标识与所述对象元数据中包含的数据标识相同。
结合第一方面,在第一方面的某些实现方式中,所述第一字段为所述对象数据的数据块的头字段。
当上述第一字段为对象数据的数据块的头字段时,能够从对象数据中快速解析出对象标识。
上述第一字段也可以为对象数据的数据块的尾字段。
另外,上述对象数据可以由一个或者多个数据块组成,当对象数据由一个数据块组成时,可以从该数据块的头字段或者尾字段中获取该对象数据对象标识;当对象数据由多个数据块组成时,可以从该多个数据块中的第一个数据块的头字段或者尾字段中获取该对象数据的对象标识。
第二方面,提供了一种用于回收垃圾对象数据的装置,所述装置包括用于执行所述第一方面或者第一方面的任一可能的实现方式中的方法的模块或者单元。
第三方面,提供一种用于回收垃圾对象数据的装置,包括存储器和处理器,所述存储器用于存储程序,所述处理器用于执行程序,当所述程序被执行时,所述处理器执行所述第一方面或者第一方面的任一可能的实现方式中的方法。
第四方面,提供一种用于回收垃圾对象数据的装置,所述装置包括存储介质和中央处理器,所述存储介质可以是非易失性存储介质,所述存储介质中存储有计算机可执行程序,所述中央处理器与所述非易失性存储介质连接,并执行所述计算机可执行程序以实现所述第一方面或者第一方面的任一可能的实现方式中的方法。
第五方面,提供一种对象存储系统,所述对象存储系统包括第一方面或者第一方面的任意一种实现方式中的用于回收垃圾对象数据的装置以及数据存储器和元数据存储器,所述用于回收垃圾对象数据的装置用于对数据存储器中的垃圾对象数据进行回收。
第六方面,提供一种芯片,所述芯片包括处理器与通信接口,所述通信接口用于与外部器件进行通信,所述处理器用于执行第一方面或第一方面的任一可能的实现方式中的方法。
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行第一方面或第一方面的任一可能的实现方式中的方法。
附图说明
图1是对象存储系统的读写流程的示意图。
图2是本申请实施例的用于回收垃圾对象数据的方法的示意性流程图。
图3是本申请实施例的对象数据的数据块的示意性结构图。
图4是本申请实施例的用于回收垃圾对象数据的方法的示意图。
图5是本申请实施例的对象存储系统的示意性框图。
图6是本申请实施例的用于回收垃圾对象数据的装置的示意性框图。
图7是本申请实施例的用于回收垃圾对象数据的装置的示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
在对象存储系统中,通常采用对象数据与对象元数据分离的方式来保存数据,也就是将对象数据保存到数据存储系统中,将对象元数据保存到元数据存储系统中。应理解,在对象存储系统中,对象(boject)可以具体包括对象数据和对象元数据。
为了便于理解本申请实施例的用于回收垃圾对象数据的方法,下面先结合图1对对象存储系统的架构以及对象存储系统的读写过程进行简单的介绍。
如图1所示,对象存储系统(Object-Based Storage System,OBS)由对象语义接口和服务层、数据存储系统(也可以称为数据存储服务器)以及元数据存储系统(也可以称为元数据存储服务器)组成,其中,对象语义接口和服务层连接了数据存储系统、元数据存储系统以及外部的客户端。对象语义接口和服务层用于处理来自客户端的读请求和写请求,当对象语义接口和服务层接收到客户端发来的写请求后,将数据写入到对象存储系统中(具体是将对象数据写入到数据存储系统中,将对象元数据写入到元数据存储系统中)。
下面结合图1对对象语义接口和服务层处理写请求的过程进行详细描述,对象语义接口和服务层处理客户端的写请求的具体步骤如下:
110、客户端向对象语义接口和服务层发送写请求,用于请求存储文件。
120、对象语义接口和服务层将文件分为对象数据(也可以称为用户数据、数据等)和对象元数据(也可以称为元数据)。
130、对象语义接口和服务层将对象数据和对象数据的数据标识存储到数据存储系统,如图1中的写1操作。
140、对象语义接口和服务层将对象元数据以及对象标识存储到元数据存储系统,如图1中的写2操作。
例如,对象语义接口和服务层接收到客户端的写请求之后,根据该写请求获取待写入的第一对象数据,然后将第一对象数据写入数据存储系统中,接下来,对象语义接口和服务层获取第一对象数据的数据标识以及其它属性信息,最后,对象语义接口和服务层将第一对象数据的数据标识以及其它属性信息合并得到第一对象元数据,并将第一对象元数据写入到元数据存储系统中。
对象语义接口和服务层处理自客户端的读请求的具体步骤程如下:
150、对象语义接口和服务层根据对象标识(该对象标识是从客户端的读请求获取的)在元数据存储系统中索引到该对象标识对应的对象元数据,并获取该对象元数据中的数据标识,如图1中的读1。
160、对象语义接口和服务层根据获得的数据标识在数据存储系统中索引到该数据标识对应的对象数据,如图1中的读2,并将该对象数据以及该对象数据的其它属性信息返给客户端。
例如,对象语义接口和服务层接收到客户端的读请求之后,根据该读请求获取第一对象标识,根据该第一对象标识在元数据存储系统中索引到与该第一对象标识对应的第一对象元数据,然后获取该第一对象元数据中的第一数据标识,接下来,对象语义接口和服务层根据第一数据标识在数据存储系统中索引到与该第一数据标识对应的第一对象数据,然后将该第一对象数据以及该第一对象数据的其它属性信息发送给客户端。
应理解,在图1中,如果在上述“写2”操作的过程中出现了异常导致第一对象元数据没有被写入到元数据存储系统中,那么,就会导致在“写1”操作过程中写入的第一对象数据(第一对象数据与第一对象元数据对应)成为垃圾对象数据。
在本申请主要是对现有方案中的步骤130进行了改进,使得存储在数据存储系统中的数据内容还包含对象数据的对象标识,这样就可以不通过元数据存储系统,就能获取对象数据的对象标识,并根据对象标识在元数据存储系统中查询是否存在与对象数据匹配的元数据,进而判断对象数据是否为垃圾对象数据。
下面结合图2至图4对本申请实施例的用于回收垃圾对象数据的方法进行详细的介绍。
图2是本申请实施例的用于回收垃圾对象数据的方法的示意性流程图。图2所示的方法可以应用在如图1所示的对象数据和对象元数据分离的对象存储系统中。并且图2所示的方法可以由图1中的对象语义接口和服务层来执行。对象语义接口和服务层具体可以由对象存储节点(Object-Based Storage,OBS)设备或者服务器实现。
图2所示的方法具体包括步骤210至步骤260,下面对步骤210至步骤260进行详细的描述。
210、获取对象数据。
获取对象数据具体可以是指从对象存储系统中的数据存储系统中获取对象数据。在获取对象数据时既可以是直接从数据存储系统中任意获取一个对象数据,也可以是根据数据标识从数据存储系统中获取相应的对象数据。
可选地,作为一种实现方式,获取对象数据具体包括:
获取数据标识列表;
从数据标识列表中获取对象数据的数据标识;
根据对象数据的数据标识,从所述数据存储系统中获取所述对象数据。
上述数据标识列表可以包含数据存储系统中存储的对象数据的数据标识。该数据标识列表可以是由存储系统中的全部对象数据的数据标识组成的列表,也可以是存储系统中的部分对象数据的数据标识组成的列表,在根据的数据标识列表确定对象数据时,可以从该数据标识列表的某个数据标识开始,对每个数据标识对应的对象数据进行查询,以确定相应的对象数据是否为垃圾对象数据。另外,该数据标识列表可以是数据存储系统通过某种列举方式获得的。
通过数据标识列表,能够从数据存储系统中简单方便地获取要查询的对象数据。
可选地,作为一个实施例,在步骤210获取对象数据之前,图2所示的方法还包括:将对象数据的对象标识和对象数据的数据内容写入所述数据存储系统。
在写入数据内容时将对象数据的数据标识也写入到数据存储系统中,这样就能够直接从数据存储系统中得到对象数据的对象标识,并根据该对象标识在元数据存储系统中查询相应的对象元数据,进而确定对象数据的有效性(也就是确定对象数据是否为垃圾对象数据)。
220、从对象数据的第一字段中获取对象数据的对象标识,该对象数据为存储在数据存储系统中的数据。
上述第一字段可以是在对象数据的数据块中增加的一个字段,该第一字段中包含的数据或者信息可以称为数据藏头。
上述对象数据可以是对象语义接口和服务层接收到客户端的写请求之后,写入到数据存储系统中的数据。
应理解,上述从对象数据的第一字段中获取对象数据的对象标识,具体可以是解析对象数据的数据块中的第一字段,获取该对象数据的对象标识。
上述第一字段可以是对象数据的数据块的头字段或者尾字段。当上述第一字段为对象数据的数据块的头字段时,能够从对象数据中快速解析出对象标识。
上述对象数据可以由一个或者多个数据块组成,当对象数据由一个数据块组成时,可以从该数据块的头字段或者尾字段中获取该对象数据对象标识;当对象数据由多个数据块组成时,可以从该多个数据块中的第一个数据块的头字段或者尾字段中获取该对象数据的对象标识。
下面结合图3,对对象标识位于对象数据块中的头字段中的情况进行详细的描述。
如图3所示,对象数据的数据块由头字段(Header)和数据组成,头字段包含魔术字,版本信息,数据块长度,对象标识信息1以及对象标识信息2。
其中,头字段中各种信息的具体含义如下:
魔术字用于防止在数据损坏场景下的对数据块的异常读取;
版本信息用于指示头字段的版本,便于解析程序根据头字段的版本结构对头字段进行解析;
对象标识信息1用于指示该数据块中是否存在对象标识;
对象标识信息2用于标识该数据块对应的对象数据的对象标识。
其中,对象标识信息1包含两个字段,第一个字段用于表示是否有对象标识,例如,00表示没有对象标识,01表示有对象标识。第二个字段为预留字段。
对象标识信息2也包含两个字段,第一个字段用于表示头字段的长度(具体表示形式可以为header_len(2B)),第二个字段就是对象标识(具体表示形式可以为object_key(v))。
应理解,当对象数据仅由一个数据块组成时,该数据块中的对象标识信息1指示该数据块中存在数据标识。而当对象数据由多个数据块组成时,例如,对象数据由三个数据块组成,那么,第一个数据块中的对象标识信息1指示的是数据块中存在对象标识,而在第二个和第三个数据块中,对象标识信息1指示的是数据块中不存在对象标识,也就是不存在对象标识信息2。
230、根据对象数据的对象标识在元数据存储系统中查询对象数据对应的对象元数据。
应理解,这里与对象数据对应的对象元数据可以是根据该对象数据的数据标识以及该对象数据的其它属性信息生成的元数据。
240、在元数据存储系统中未查询到对象元数据的情况下,确定对象数据为垃圾对象数据;
如果在元数据存储系统中没有查询到对象数据对应的对象元数据,那么,可能是对象语义接口和服务层在写入数据的过程中只将对象数据写入了数据存储系统,而未将该对象数据对应的元数据写入到元数据存储系统中。
例如,如图1所示,对象语义接口和服务层通过“写1”操作将第一对象数据写入了数据存储系统,而通过“写2”操作将第一对象数据对应的第一对象元数据写入元数据存储系统时出现了异常,导致第一对象元数据并未成功写入到元数据存储系统中,使得在对象语义接口和服务层在“写1”操作过程中写入到数据存储系统中的第一对象数据成为了垃圾对象数据。
250、在元数据存储系统中查询到对象元数据,且对象数据与对象元数据不匹配的情况下,确定对象数据为垃圾对象数据。
260、在元数据存储系统中查询到对象元数据,且对象数据与对象数据的对象元数据匹配的情况下,确定对象数据为非垃圾对象数据。
应理解,对于数据存储系统中的任意一个对象数据,如果在元数据存储系统中存在与该对象数据匹配的对象元数据,那么,该对象数据就是非垃圾对象数据;如果在元数据存储系统中不存在与该对象数据匹配的元数据,那么,该对象数据就是垃圾对象数据。
可选地,当在元数据存储系统中查询到对象数据对应的对象元数据时,可以再确定对象数据与对象数据对应的对象元数据是否匹配,如果对象数据与对象元数据不匹配的话,那么就确定对象数据为垃圾对象数据,如果对象数据与对象元数据匹配的话,那么就确定对象数据为非垃圾对象数据,
应理解,与现有方案相比,本申请中的对象数据中额外增加了对象数据的对象标识。
因此,在本申请中,通过从对象数据中获取的对象标识,能够根据获取的对象标识在元数据存储系统中查询是否存在对象数据对应的对象元数据,并根据查询结果就可以确定对象数据是否为垃圾对象数据,与现有方案中根据写入元数据发生异常时记录的数据标识来确定垃圾对象数据的方式相比,提高了确定垃圾对象数据的准确性和可靠性。
具体地,在现有方案中,当对象语义接口和服务层无法感知写入对象元数据时发生的异常时,或者对象语义接口和服务层虽然感知到了写入对象元数据时发生异常,但是却没有准确记录下来发生异常的对象元数据对应的对象数据的数据标识,那么对象语义接口和服务层就无法确定垃圾对象数据。而本申请的方案中,只要从对象数据中获取了该对象数据的对象标识之后,就可以根据该对象标识去元数据存储系统中查询是否存在与该对象数据对应的对象元数据进而确定对象数据是否为垃圾对象数据,在本申请中,即使由于系统故障导致某一时刻对象语义接口和服务层无法获取对象数据的对象标识,那么当系统恢复正常时还可以继续获取对象数据的对象标识(现有方案中如果出现了系统故障导致无法记录发生异常的元数据的数据标识,那么即便是系统恢复正常后也无法再记录发生异常的元数据的数据标识),然后根据对象标识在元数据存储系统中继续查询相应的对象元数据,进而确定对象数据是否为垃圾对象数据。因此,本申请的方案不受系统故障或者其它故障的影响,提高了确定垃圾对象数据的准确性和可靠性。
可选地,图2所示的方法还包括:记录对象数据的数据标识。
通过记录对象数据的数据标识,能够对查询过程进行记录,防止出现反复查询,提高查询效率。
应理解,这里记录对象数据的数据标识具体可以是指:在确定对象数据为垃圾对象数据或者非垃圾对象数据之后,将该对象数据的数据标识记录下来。
具体地,通过记录对象数据的数据标识,并结合数据标识列表,可以确定已经查询的对象数据和未经查询的对象数据,便于继续对数据存储系统中的其它对象数据进行查询,能够避免重复查询。
例如,上述数据标识列表包含100个数据标识,当前查询的对象数据对应的是数据标识列表中对应的第50个数据标识,那么,可以将第50个数据标识记录下来,表示已经查询到第50个数据标识对应的对象数据,那么接下来再进行查询的时候就可以从第51个数据标识对应的对象数据开始,避免了重复查询。
可选地,在查询过程中,可以在每次查询之后就将查询过的对象数据的对象标识记录下来。
另外,也可以在查询了多个对象数据之后,再记录当前查询的对象数据的数据标识,以节省保存对象数据的数据标识占用的存储空间。
可选地,在记录对象数据的数据标识时,既可以将对象数据的数据标识记录在数据存储系统中,也可以将对象数据的数据标识记录在元数据存储系统中。
可选地,作为一个实施例,在确定对象数据为垃圾对象数据之后,图2所示的方法还包括:对该对象数据进行垃圾回收。
具体地,对对象数据进行垃圾回收可以是在数据存储系统中将该对象数据删除。
当对象数据为垃圾对象数据时,通过对对象数据进行垃圾回收,能够保证对象存储系统的正常运行。
可选地,对象数据与对象元数据不匹配,具体包括:对象数据的数据标识与对象元数据中包含的数据标识不同。
例如,根据从第一对象数据获取的第一对象标识从元数据存储系统中查询到了第一对象数据对应的第一对象元数据,第一对象元数据中包含的数据标识与第一对象数据中的数据标识不同,那么,可以确定第一对象数据与第一对象元数据不匹配。也就是说,在元数据存储系统中不存在与第一对象数据匹配的对象元数据,因此,第一对象数据为垃圾对象数据。
可选地,对象数据与对象元数据匹配,具体包括:对象数据的数据标识与对象元数据中包含的数据标识相同。
例如,根据从第一对象数据获取的第一对象标识从元数据存储系统中查询到了第一对象数据对应的第一对象元数据,第一对象元数据中包含的数据标识与第一对象数据中的数据标识相同,那么,可以确定第一对象数据与第一对象元数据匹配。也就是说,在元数据存储系统中存在与第一对象数据匹配的对象元数据,因此,第一对象数据为非垃圾对象数据。
在本申请中,数据标识是用于在数据存储系统中区分不同的数据的标识。数据标识具体可以是键值(key),也可以是通用唯一识别码(Universally Unique Identifier,UUID)等等。
应理解,在对象存储系统中,为了实现对垃圾对象数据的回收,可以只采用本申请实施例的用于回收垃圾对象数据的方法先确定要回收的垃圾对象数据,进一步地再对垃圾对象数据进行回收。或者也可以将本申请实施例的用于回收垃圾对象数据的方法作为现有方案的补充,也就是说将本申请实施例的用于回收垃圾对象数据的方法与现有方案结合在一起使用,从而解决现有方案在异常情况下无法回收垃圾对象数据的问题。
下面结合图4对本申请实施例的用于回收垃圾对象数据的方法进行详细的介绍。应理解,图4所示的方法也可以由对象语义接口和服务层来执行,图4所示的方法具体包括:
401、获取对象数据。
在步骤401之前,可以先获取数据标识列表,在获取了数据标识列表之后,根据数据标识列表以及之前记录的数据标识确定当前要查询的对象数据的数据标识,然后再根据数据标识来获取对象数据。
402、解析对象数据的数据藏头。
具体地,该数据藏头可以位于对象数据的数据块的头字段。
403、获取对象数据的对象标识。
具体地,可以先解析数据藏头中的包含的版本号信息,解析出相应的版本,然后根据相应版本解析程序解析出对象数据的对象标识。
404、是否查询到对象元数据。
具体地,根据步骤403中获取的对象标识在元数据存储系统中查询对象元数据,确定是否查询到相应的对象元数据。
如果在元数据存储系统中查询到相应的对象元数据,那么执行步骤405,如果没有在元数据存储系统中查询到相应的对象元数据,那么就执行步骤407,确定对象数据为垃圾对象数据。
405、确定数据标识是否匹配。
在元数据存储系统中查询到对应的对象元数据之后,还需要进一步查询对象元数据中的数据标识与对象数据的数据标识是否相同。如果对象元数据中的数据标识与对象数据的数据标识不同,那么就执行步骤407,如果对象元数据中的数据标识与对象数据的数据标识相同,那么就执行步骤406。
406、确定对象数据为非垃圾对象数据。
对象数据为非垃圾对象数据(或者称为正常数据),也就是说在元数据存储系统中保存有与该对象数据相匹配的对象元数据。
407、确定对象数据为垃圾对象数据。
对象数据为垃圾对象数据,也就是说在元数据存储系统中不存在与该对象数据相匹配的对象元数据。
图5是本申请实施例的对象存储系统的示意性框图。
在图5中,对象存储系统由服务器或者对象存储节点设备、数据存储系统以及元数据存储系统组成。图5中的服务器或者对象存储节点设备可以执行本申请实施例的用于回收垃圾对象数据的方法,具体地,图5中的服务器或者对象存储节点设备可以执行上文中图2和图4所示的方法中的各个步骤,用于对数据存储系统中的垃圾对象数据进行回收。
上文结合图1至图4对本申请实施例的用于回收垃圾对象数据的方法进行了详细的介绍,下面结合图6和图7对本申请实施例的用于回收垃圾对象数据的装置进行介绍,应理解,图6和图7中所示的装置与本申请实施例的用于回收垃圾对象数据的方法是对应的,图6和图7中所示的装置能够执行本申请实施例的用于回收垃圾对象数据的方法,为了简洁,下面适当省略重复的描述。
图6是本申请实施例的用于回收垃圾对象数据的装置的示意性框图。图6所示的装置600包括:
获取单元610,用于获取对象数据;
所述获取单元610还用于从所述对象数据的第一字段中获取所述对象数据的对象标识,所述对象数据为存储在数据存储系统中的数据;
查询单元620,用于根据所述对象数据的对象标识在元数据存储系统中查询所述对象数据对应的对象元数据;
处理单元630,所述处理单元630具体用于:
在所述元数据存储系统中未查询到所述对象元数据的情况下,确定所述对象数据为垃圾对象数据;
在所述元数据存储系统中查询到所述对象元数据,且所述对象数据与所述对象元数据不匹配的情况下,确定所述对象数据为垃圾对象数据;
在所述元数据存储系统中查询到所述对象元数据,且所述对象数据与所述对象数据的对象元数据匹配的情况下,确定所述对象数据为非垃圾对象数据。
本申请中,通过从对象数据中获取的对象标识,接下来,能够根据该对象标识在元数据存储系统中查询是否存在对象数据对应的对象元数据,并根据查询结果就可以确定对象数据是否为垃圾对象数据,与现有方案中根据写入元数据发生异常时记录的数据标识来确定垃圾对象数据的方式相比,提高了确定垃圾对象数据的准确性和可靠性。
应理解,上述装置600相当于图5的对象存储系统中的服务器或者对象存储节点设备。
可选地,作为一个实施例,在所述获取单元610获取所述对象数据之前,所述处理单元630还用于:将所述对象数据的对象标识和所述对象数据的数据内容写入所述数据存储系统。
在写入数据内容时将对象数据的数据标识也写入到数据存储系统中,这样就能够直接从数据存储系统中得到对象数据的对象标识,并根据该对象标识在元数据存储系统中查询相应的对象元数据,进而确定对象数据的有效性。
可选地,作为一个实施例,所述获取单元610具体用于:获取数据标识列表,所述数据标识列表包含所述数据存储系统中存储的对象数据的数据标识;从所述数据标识列表中获取所述对象数据的数据标识;根据所述对象数据的数据标识,从所述数据存储系统中获取所述对象数据。
通过数据标识列表能够方便地获取要查询的对象数据。
可选地,作为一个实施例,所述处理单元630还用于:记录所述对象数据的数据标识。
通过记录对象数据的数据标识,能够对查询过程进行记录,防止出现反复查询,提高查询效率。
可选地,作为一个实施例,所述对象数据为垃圾对象数据,所述处理单元630还用于:对所述对象数据进行垃圾回收。
当对象数据为垃圾对象数据时,通过对对象数据进行垃圾回收,能够保证对象存储系统的正常运行。
可选地,作为一个实施例,所述对象数据与所述对象元数据不匹配,包括:所述对象数据的数据标识与所述对象元数据中包含的数据标识不同。
可选地,作为一个实施例,所述对象数据与所述对象元数据匹配,包括:所述对象数据的数据标识与所述对象元数据中包含的数据标识相同。
可选地,作为一个实施例,所述第一字段为所述对象数据的数据块的头字段。当上述第一字段为对象数据的数据块的头字段时,能够从对象数据中快速解析出对象标识。
图7是本申请实施例的用于回收垃圾对象数据的装置的示意性框图。图7所示的装置包括:
存储器710,用于存储程序。
处理器720,用于执行存储器710中存储的程序,当存储器710中存储的程序被执行时,所述处理器720具体用于:获取对象数据;从所述对象数据的第一字段中获取所述对象数据的对象标识,所述对象数据为存储在数据存储系统中的数据;根据所述对象数据的对象标识在元数据存储系统中查询所述对象数据对应的对象元数据;在所述元数据存储系统中未查询到所述对象元数据的情况下,确定所述对象数据为垃圾对象数据;在所述元数据存储系统中查询到所述对象元数据,且所述对象数据与所述对象元数据不匹配的情况下,确定所述对象数据为垃圾对象数据;在所述元数据存储系统中查询到所述对象元数据,且所述对象数据与所述对象数据的对象元数据匹配的情况下,确定所述对象数据为非垃圾对象数据。
本申请中,通过从对象数据中获取的对象标识,接下来,能够根据该对象标识在元数据存储系统中查询是否存在对象数据对应的对象元数据,并根据查询结果就可以确定对象数据是否为垃圾对象数据,与现有方案中根据写入元数据发生异常时记录的数据标识来确定垃圾对象数据的方式相比,提高了确定垃圾对象数据的准确性和可靠性。
应理解,上述装置700相当于图5的对象存储系统中的服务器或者对象存储节点设备。
可选地,作为一个实施例,在所述处理器720获取所述对象数据之前,所述处理器720还用于:将所述对象数据的对象标识和所述对象数据的数据内容写入所述数据存储系统。
在写入数据内容时将对象数据的数据标识也写入到数据存储系统中,这样就能够直接从数据存储系统中得到对象数据的对象标识,并根据该对象标识在元数据存储系统中查询相应的对象元数据,进而确定对象数据的有效性。
可选地,作为一个实施例,所述处理器720具体用于:获取数据标识列表,所述数据标识列表包含所述数据存储系统中存储的对象数据的数据标识;从所述数据标识列表中获取所述对象数据的数据标识;根据所述对象数据的数据标识,从所述数据存储系统中获取所述对象数据。
通过数据标识列表能够方便地获取要查询的对象数据。
可选地,作为一个实施例,所述处理器720还用于:记录所述对象数据的数据标识。
通过记录对象数据的数据标识,能够对查询过程进行记录,防止出现反复查询,提高查询效率。
可选地,作为一个实施例,所述对象数据为垃圾对象数据,所述处理器720还用于:对所述对象数据进行垃圾回收。
当对象数据为垃圾对象数据时,通过对对象数据进行垃圾回收,能够保证对象存储系统的正常运行。
可选地,作为一个实施例,所述对象数据与所述对象元数据不匹配,包括:所述对象数据的数据标识与所述对象元数据中包含的数据标识不同。
可选地,作为一个实施例,所述对象数据与所述对象元数据匹配,包括:所述对象数据的数据标识与所述对象元数据中包含的数据标识相同。
可选地,作为一个实施例,所述第一字段为所述对象数据的数据块的头字段。
当上述第一字段为对象数据的数据块的头字段时,能够从对象数据中快速解析出对象标识。
本申请还提供一种对象存储系统,所述对象存储系统包括上述用于回收垃圾对象数据的装置(装置600或者装置700)以及数据存储器(相当于上文中的数据存储系统)和元数据存储器(相当于上文中的元数据存储系统),其中,所述用于回收垃圾对象数据的装置用于对数据存储器中的垃圾对象数据进行回收。
本申请还提供一种芯片,所述芯片包括处理器与通信接口,所述通信接口用于与外部器件进行通信,所述处理器用于执行本申请实施例的用于回收垃圾对象数据的方法。
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行本申请实施例的用于回收垃圾对象数据的方法。
本申请还提供一种存储系统(该存储系统的结构可以如图1所示),所述存储系统包括对象语义接口和服务层,所述对象语义接口和服务层用于执行本申请实施例的用于回收垃圾对象数据的方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (16)

1.一种用于回收垃圾对象数据的方法,其特征在于,包括:
获取对象数据;
从所述对象数据的第一字段中获取所述对象数据的对象标识,所述对象数据为存储在数据存储系统中的数据;
根据所述对象数据的对象标识在元数据存储系统中查询所述对象数据对应的对象元数据;
在所述元数据存储系统中未查询到所述对象元数据的情况下,确定所述对象数据为垃圾对象数据;
在所述元数据存储系统中查询到所述对象元数据,且所述对象数据与所述对象元数据不匹配的情况下,确定所述对象数据为垃圾对象数据;
在所述元数据存储系统中查询到所述对象元数据,且所述对象数据与所述对象数据的对象元数据匹配的情况下,确定所述对象数据为非垃圾对象数据。
2.如权利要求1所述的方法,其特征在于,在获取所述对象数据之前,所述方法还包括:
将所述对象数据的对象标识和所述对象数据的数据内容写入所述数据存储系统。
3.如权利要求1或2所述的方法,其特征在于,所述获取对象数据,包括:
获取数据标识列表,所述数据标识列表包含所述数据存储系统中存储的对象数据的数据标识;
从所述数据标识列表中获取所述对象数据的数据标识;
根据所述对象数据的数据标识,从所述数据存储系统中获取所述对象数据。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
记录所述对象数据的数据标识。
5.如权利要求1、2、4中任一项所述的方法,其特征在于,所述对象数据为垃圾对象数据,所述方法还包括:
对所述对象数据进行垃圾回收。
6.如权利要求1、2、4中任一项所述的方法,其特征在于,所述对象数据与所述对象元数据不匹配,包括:
所述对象数据的数据标识与所述对象元数据中包含的数据标识不同。
7.如权利要求1、2、4中任一项所述的方法,其特征在于,所述对象数据与所述对象元数据匹配,包括:
所述对象数据的数据标识与所述对象元数据中包含的数据标识相同。
8.如权利要求1、2、4中任一项所述的方法,其特征在于,所述第一字段为所述对象数据的数据块的头字段。
9.一种用于回收垃圾对象数据的装置,其特征在于,包括:
获取单元,用于获取对象数据;
所述获取单元还用于从所述对象数据的第一字段中获取所述对象数据的对象标识,所述对象数据为存储在数据存储系统中的数据;
查询单元,用于根据所述对象数据的对象标识在元数据存储系统中查询所述对象数据对应的对象元数据;
处理单元,所述处理单元具体用于:
在所述元数据存储系统中未查询到所述对象元数据的情况下,确定所述对象数据为垃圾对象数据;
在所述元数据存储系统中查询到所述对象元数据,且所述对象数据与所述对象元数据不匹配的情况下,确定所述对象数据为垃圾对象数据;
在所述元数据存储系统中查询到所述对象元数据,且所述对象数据与所述对象数据的对象元数据匹配的情况下,确定所述对象数据为非垃圾对象数据。
10.如权利要求9所述的装置,其特征在于,在所述获取单元获取所述对象数据之前,所述处理单元还用于:
将所述对象数据的对象标识和所述对象数据的数据内容写入所述数据存储系统。
11.如权利要求9或10所述的装置,其特征在于,所述获取单元具体用于:
获取数据标识列表,所述数据标识列表包含所述数据存储系统中存储的对象数据的数据标识;
从所述数据标识列表中获取所述对象数据的数据标识;
根据所述对象数据的数据标识,从所述数据存储系统中获取所述对象数据。
12.如权利要求11所述的装置,其特征在于,所述处理单元还用于:
记录所述对象数据的数据标识。
13.如权利要求9、10、12中任一项所述的装置,其特征在于,所述对象数据为垃圾对象数据,所述处理单元还用于:
对所述对象数据进行垃圾回收。
14.如权利要求9、10、12中任一项所述的装置,其特征在于,所述对象数据与所述对象元数据不匹配,包括:
所述对象数据的数据标识与所述对象元数据中包含的数据标识不同。
15.如权利要求9、10、12中任一项所述的装置,其特征在于,所述对象数据与所述对象元数据匹配,包括:
所述对象数据的数据标识与所述对象元数据中包含的数据标识相同。
16.如权利要求9、10、12中任一项所述的装置,其特征在于,所述第一字段为所述对象数据的数据块的头字段。
CN201710882560.8A 2017-09-26 2017-09-26 用于回收垃圾对象数据的方法和装置 Active CN107818136B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710882560.8A CN107818136B (zh) 2017-09-26 2017-09-26 用于回收垃圾对象数据的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710882560.8A CN107818136B (zh) 2017-09-26 2017-09-26 用于回收垃圾对象数据的方法和装置

Publications (2)

Publication Number Publication Date
CN107818136A CN107818136A (zh) 2018-03-20
CN107818136B true CN107818136B (zh) 2021-12-14

Family

ID=61607345

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710882560.8A Active CN107818136B (zh) 2017-09-26 2017-09-26 用于回收垃圾对象数据的方法和装置

Country Status (1)

Country Link
CN (1) CN107818136B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111177075B (zh) 2019-12-26 2022-04-22 浪潮电子信息产业股份有限公司 一种垃圾数据的识别方法、系统、电子设备及存储介质
CN117971839A (zh) * 2024-03-29 2024-05-03 平凯星辰(北京)科技有限公司 数据处理方法、装置、电子设备、存储介质及程序产品

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5822452B2 (ja) * 2010-10-22 2015-11-24 株式会社インテック ストレージサービス提供装置、システム、サービス提供方法、及びサービス提供プログラム
US20120159098A1 (en) * 2010-12-17 2012-06-21 Microsoft Corporation Garbage collection and hotspots relief for a data deduplication chunk store
CN103678337B (zh) * 2012-09-06 2017-12-12 华为技术有限公司 数据清除方法、装置及系统
CN104462362B (zh) * 2014-12-08 2018-03-06 曙光信息产业(北京)有限公司 一种数据存储、查询、加载方法及装置

Also Published As

Publication number Publication date
CN107818136A (zh) 2018-03-20

Similar Documents

Publication Publication Date Title
KR101403305B1 (ko) 백업부트레코드 정보를 이용한 파티션 복구 장치 및 방법
KR101456757B1 (ko) SQLite 데이터베이스에서 삭제된 데이터의 복원 방법 및 장치
KR101078289B1 (ko) 파티션 복구 방법 및 장치
WO2020103493A1 (zh) 基于fat32文件系统的删除文件恢复方法及系统
EP3438845A1 (en) Data updating method and device for a distributed database system
US9465694B2 (en) Method and apparatus for recovering partition based on file system metadata
US9817605B2 (en) Systems and methods of storing data associated with content of a data storage device
CN111125298A (zh) 重建ntfs文件目录树的方法、设备及存储介质
CN107818136B (zh) 用于回收垃圾对象数据的方法和装置
CN114827178A (zh) 一种数据处理方法、装置、设备及可读存储介质
CN104681050A (zh) 一种提取磁盘视频数据的方法和装置
US9223739B2 (en) Detection method and apparatus for hot-swapping of SD card
CN112783711A (zh) NodeJS上程序内存分析的方法、存储介质
CN111835808A (zh) 数据存储方法及装置、数据读取方法及装置、存储介质
US10884873B2 (en) Method and apparatus for recovery of file system using metadata and data cluster
KR101670473B1 (ko) MySQL InnoDB 데이터베이스에서 삭제된 데이터를 복원하는 방법
CN111782605A (zh) 一种芯片卡文件管理方法、装置、终端及存储介质
CN114450686A (zh) 事务管理装置、事务管理程序和事务管理方法
CN107844485B (zh) 测试脚本文件的更新方法和装置
CN111399759B (zh) 读数据、写数据的方法、以及对象文件系统
CN105988917B (zh) 异常信息获取方法及装置
CN107229535B (zh) 数据块的多副本存储方法、存储设备、数据读取方法
KR100567813B1 (ko) 텐덤 시스템의 트랜잭션 분석 시스템
CN103312792A (zh) 从外接存储设备中读取文件的方法及系统
CN111026896A (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