CN112286448A - 对象访问方法、装置、电子设备及机器可读存储介质 - Google Patents

对象访问方法、装置、电子设备及机器可读存储介质 Download PDF

Info

Publication number
CN112286448A
CN112286448A CN202011111230.7A CN202011111230A CN112286448A CN 112286448 A CN112286448 A CN 112286448A CN 202011111230 A CN202011111230 A CN 202011111230A CN 112286448 A CN112286448 A CN 112286448A
Authority
CN
China
Prior art keywords
source
data
target
storage system
copy
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
CN202011111230.7A
Other languages
English (en)
Other versions
CN112286448B (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.)
Macrosan Technologies Co Ltd
Original Assignee
Macrosan 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 Macrosan Technologies Co Ltd filed Critical Macrosan Technologies Co Ltd
Priority to CN202011111230.7A priority Critical patent/CN112286448B/zh
Publication of CN112286448A publication Critical patent/CN112286448A/zh
Application granted granted Critical
Publication of CN112286448B publication Critical patent/CN112286448B/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/0608Saving storage space on storage systems
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Abstract

本申请提供一种对象访问方法、装置、电子设备及机器可读存储介质。在本申请中,基于接收对象客户端发送的对象拷贝请求及响应于对象拷贝请求生成与目标对象对应的第一对象元数据;以及,响应于对象客户端对目标对象的对象获取请求,获取第一对象元数据指示的源对象的对象数据,并将获取的源对象的对象数据作为目标对象的对象数据返回至对象客户端。在对象拷贝过程中,由于减少了对象存储系统从保存对象数据的存储空间中先读取源对象再将源对象写回至存储空间中的读写操作,因此,一方面节约了对象存储系统的存储空间,另一方面降低了对象存储系统的系统负载及网络负载,提高了对象存储系统性能。

Description

对象访问方法、装置、电子设备及机器可读存储介质
技术领域
本申请涉及存储技术领域,尤其涉及对象访问方法、装置、电子设备及机器可读存储介质。
背景技术
随着互联网应用的迅猛发展,PB级甚至EB级的海量数据存储变得尤为重要。对象存储系统作为一种新型的分布式存储系统,对象是对象存储系统中的基本实体,通过提供基于对象的访问接口,可存储任意类型的数据,比如:图片、视频、音频、文本等。对象存储系统有效解决了传统存储共享能力有限、扩展性差等问题。
发明内容
本申请提供一种对象访问方法,所述方法应用于对象存储系统;所述方法包括:
接收对象客户端发送的对象拷贝请求;其中,所述对象拷贝请求指示将所述对象存储系统中已保存的源对象执行对象拷贝为目标对象;
响应于所述对象拷贝请求,生成与所述目标对象对应的第一对象元数据;其中,所述第一对象元数据中保存了所述源对象的对象数据在所述对象存储系统中的存储位置;
响应于对象客户端对所述目标对象的对象获取请求,获取所述第一对象元数据指示的所述源对象的对象数据,并将获取的所述源对象的对象数据作为所述目标对象的对象数据返回至对象客户端。
可选的,所述源对象的对象数据中至少记录了对象引用次数;其中,所述对象引用次数指示对象数据自身被对象存储系统中对象引用的引用次数;
在生成与所述目标对象对应的第一对象元数据之后,还包括:
将所述对象引用次数执行增加更新。
可选的,还包括:
响应于对象客户端将所述目标对象或所述源对象进行删除的对象删除请求,对应将所述目标对象或所述源对象删除;以及,
将所述对象引用次数执行减少更新。
可选的,在所述对象引用次数为零时,还包括:
删除对象引用次数为零的对象数据。
可选的,所述响应于所述对象拷贝请求,生成与所述目标对象对应的第一对象元数据,包括:
检测所述对象拷贝请求中是否携带了指示对所述源对象执行对象拷贝的拷贝标识数据;其中,所述拷贝标识数据携带了所述源对象在所述对象存储系统中的存储路径;
如果是,则获取所述源对象的存储路径,并基于获取的所述源对象的存储路径,进一步获取所述源对象的第二对象元数据;
基于所述第二对象元数据,进一步生成与所述目标对象对应的第一对象元数据。
可选的,在所述对象拷贝请求为将所述源对象中的分段对象拷贝为所述目标对象的对象拷贝请求时,所述目标对象对应的第一对象元数据中还记录了所述源对象的对象数据的存储路径、与所述目标对象对应的所述分段对象对应的分段信息。
本申请还提供一种对象访问装置,所述装置应用于对象存储系统;所述装置包括:
接收模块,接收对象客户端发送的对象拷贝请求;其中,所述对象拷贝请求指示将所述对象存储系统中已保存的源对象执行对象拷贝为目标对象;
生成模块,响应于所述对象拷贝请求,生成与所述目标对象对应的第一对象元数据;其中,所述第一对象元数据中保存了所述源对象的对象数据在所述对象存储系统中的存储位置;
返回模块,响应于对象客户端对所述目标对象的对象获取请求,获取所述第一对象元数据指示的所述源对象的对象数据,并将获取的所述源对象的对象数据作为所述目标对象的对象数据返回至对象客户端。
可选的,所述源对象的对象数据中至少记录了对象引用次数;其中,所述对象引用次数指示对象数据自身被对象存储系统中对象引用的引用次数;
在生成与所述目标对象对应的第一对象元数据之后,所述生成模块进一步:
将所述对象引用次数执行增加更新。
可选的,还包括:
更新模块,响应于对象客户端将所述目标对象或所述源对象进行删除的对象删除请求,对应将所述目标对象或所述源对象删除;以及,
将所述对象引用次数执行减少更新。
可选的,在所述对象引用次数为零时,所述更新模块进一步:
删除对象引用次数为零的对象数据。
可选的,所述生成模块进一步:
检测所述对象拷贝请求中是否携带了指示对所述源对象执行对象拷贝的拷贝标识数据;其中,所述拷贝标识数据携带了所述源对象在所述对象存储系统中的存储路径;
如果是,则获取所述源对象的存储路径,并基于获取的所述源对象的存储路径,进一步获取所述源对象的第二对象元数据;
基于所述第二对象元数据,进一步生成与所述目标对象对应的第一对象元数据。
可选的,在所述对象拷贝请求为将所述源对象中的分段对象拷贝为所述目标对象的对象拷贝请求时,所述目标对象对应的第一对象元数据中还记录了所述源对象的对象数据的存储路径、与所述目标对象对应的所述分段对象对应的分段信息。
本申请还提供一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述的方法。
本申请还提供一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述方法。
通过以上实施例,基于接收对象客户端发送的对象拷贝请求及响应于对象拷贝请求生成与目标对象对应的第一对象元数据;以及,响应于对象客户端对目标对象的对象获取请求,获取第一对象元数据指示的源对象的对象数据,并将获取的源对象的对象数据作为目标对象的对象数据返回至对象客户端。在对象拷贝过程中,由于减少了对象存储系统从保存对象数据的存储空间中先读取源对象再将源对象写回至存储空间中的读写操作,因此,一方面节约了对象存储系统的存储空间,另一方面降低了对象存储系统的系统负载及网络负载,提高了对象存储系统性能。
附图说明
图1是一示例性实施例提供的一种对象存储系统的架构示意图;
图2是一示例性实施例提供的一种对象访问方法的流程图;
图3是一示例性实施例提供的一种电子设备的硬件结构图;
图4是一示例性实施例提供的一种对象访问装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本技术领域的人员更好地理解本申请实施例中的技术方案,下面先对本申请实施例涉及的对象访问的相关技术,进行简要说明。
请参见图1,图1是本申请一实施例提供的一种对象访问的组网示意图。
如图1所示,对象访问的组网包括对象存储系统和对象客户端。对象存储系统可以为对接的对象客户端提供对象访问服务;对象存储系统可以包括若干对象存储节点及存储介质等。
对于对象客户端而言,对象存储系统采用扁平的数据组织结构进行对象存储,也即,对象客户端可以仅通过对象存储系统提供的桶和对象(数据组织结构仅为两层)来进行对象上传、对象下载、对象拷贝、对象删除等对象访问服务;
在对象存储系统中,对象是对象存储系统中存储的基本实体,一个对象是一个文件的数据及其相关属性信息的集合体。对象具有包括对象名称(或也可被称为对象的键)、对象数据和对象元数据;
其中,对象名称是桶(桶是对象存储系统中用于保存对象的容器)中保存对象的唯一标识。对象数据和对象元数据分开存储。通常,对象一旦成功上传至桶后,对象存储系统不再支持对对象名称、对象数据进行修改。
对象元数据是一组名称值对,包括对象的系统元数据和用户自定义元数据,在上传对象时可设置对象元数据,对象上传后将无法修改对象元数据,而修改对象元数据唯一方式是创建对象的副本并重新设置对象元数据。
在一些场景下,对象存储系统可以为对象客户端提供对象拷贝功能,也即,对象存储系统可以将源桶中已保存的源对象拷贝一份至目标桶中成为目标对象,目标对象和源对象具有相同的对象数据。通常,对象拷贝功能在现有的技术方案中的实现,主要包括以下情况:
1)同一桶内的对象拷贝(比如:同一桶内的对象重命名)
比如:在将同一桶内的对象A重名为对象B时,对象存储系统从桶中读取对象A的对象数据,再将读取的对象A的对象数据上传至该桶中并重新设置该对象数据的对象元数据为对象B,然后再删除对象A。
2)对象跨桶拷贝(比如:对象跨桶移动)
比如:在将源桶A中对象A移动到目标桶B中成为目标桶B中的新对象A时,对象存储系统从源桶A中读取对象A的对象数据,再将读取的对象A的对象数据上传至目标桶B中成为新对象A,然后删除源桶A中对象A。
基于以上场景可见,在现有的技术方案针对对象拷贝功能的技术实现中,需要对象存储系统读取源对象的对象数据,并将读取的对象数据再重复上传回至目标桶中,成为目标对象的对象数据,而实际目标对象和源对象的对象数据都是相同的,而针对源对象的对象数据的读写会消耗大量的CPU资源及网络带宽,降低了对象存储系统的性能。
基于此,在以上示出的组网架构的基础上,本申请旨在提出一种,在对象访问时,基于在目标对象对应的对象元数据中来记录保存源对象的对象数据存储位置,来提高对象访问效率并降低对象存储系统性能消耗和减少存储空间占用的技术方案。
在实现时,对象存储系统接收对象客户端发送的对象拷贝请求;其中,对象拷贝请求指示将对象存储系统中已保存的源对象执行对象拷贝为目标对象。
进一步地,对象存储系统响应于对象拷贝请求,生成与目标对象对应的第一对象元数据;其中,第一对象元数据中保存了源对象的对象数据在对象存储系统中的存储位置。
进一步地,对象存储系统响应于对象客户端对目标对象的对象获取请求,获取第一对象元数据指示的源对象的对象数据,并将获取的源对象的对象数据作为目标对象的对象数据返回至对象客户端。
在以上方案中,基于接收对象客户端发送的对象拷贝请求及响应于对象拷贝请求生成与目标对象对应的第一对象元数据;以及,响应于对象客户端对目标对象的对象获取请求,获取第一对象元数据指示的源对象的对象数据,并将获取的源对象的对象数据作为目标对象的对象数据返回至对象客户端。在对象拷贝过程中,由于减少了对象存储系统从保存对象数据的存储空间中先读取源对象再将源对象写回至存储空间中的读写操作,因此,一方面节约了对象存储系统的存储空间,另一方面降低了对象存储系统的系统负载及网络负载,提高了对象存储系统性能。
下面通过具体实施例并结合具体的应用场景对本申请进行描述。
请参考图2,图2是本申请一实施例提供的一种对象访问方法的流程图,上述方法应用于对象存储系统,上述方法执行以下步骤:
步骤202、接收对象客户端发送的对象拷贝请求;其中,上述对象拷贝请求指示将上述对象存储系统中已保存的源对象执行对象拷贝为目标对象。
步骤204、响应于上述对象拷贝请求,生成与上述目标对象对应的第一对象元数据;其中,上述第一对象元数据中保存了上述源对象的对象数据在上述对象存储系统中的存储位置。
步骤206、响应于对象客户端对上述目标对象的对象获取请求,获取上述第一对象元数据指示的上述源对象的对象数据,并将获取的上述源对象的对象数据作为上述目标对象的对象数据返回至对象客户端。
在本说明书中,上述对象,是指已保存于或者计划保存于上述对象存储系统中的桶(Bucket)中的任何数据格式的对象。
例如,在实际应用中,上述对象可以包括已保存于或者计划保存于上述对象存储系统中的桶(Bucket)中的图片、网页、视频、压缩包、程序、表项等数据格式的对象。
在本说明书中,上述对象存储系统包括若干对象存储节点及存储介质等。
例如,上述对象存储系统的具体构成,以及上述对象存储系统与对象客户端的组网架构,请参见如图1所示及前文对应的描述,这里不再赘述。
在示出的一种实施方式中,上述对象存储系统为基于若干个对象存储节点搭建的基于分布式架构的对象存储系统。
在本说明书中,上述对象客户端,包括与上述对象存储系统对接的、可以对上述对象存储系统进行对象访问的任何类型客户端。
例如,在实际应用中,上述对象客户端具体可以包括Web客户端、SDK客户端、APP客户端等。
在本说明书中,上述对象访问包括对象写入、对象读取、对象拷贝、对象删除;
其中,对象写入,是指对象客户端向对象存储系统发起请求将对象客户端本地保存的数据写入至对象存储系统中。在实现时,对象客户端基于用户输入的、指定的对象的对象名,将数据以对象的方式保存在对象存储系统中的桶(Bucket)中;
对象读取,是指对象客户端从对象存储系统中读取指定对象的对象数据。在实现时,对象客户端基于用户输入的、指定的计划读取对象的对象名,从对象存储系统中的桶(Bucket)中读取已保存的对象名指示的对象数据并下载至对象客户端本地保存。
需要说明的是,通常情况下,对象写入也被称为“对象上传”,对象读取也被称为“对象下载”。
对象拷贝,具体请参见前文中的关于“对象拷贝功能”的描述,这里不再赘述。
在本说明书中,上述对象客户端可以向上述对象存储系统发起对象写入,将上述对象客户端本地的数据上传至上述对象存储系统,并以对象方式保存在桶中。
例如,在实际应用中,对象客户端可以向对象存储系统发起对象写入,将对象客户端本地的数据A上传至对象存储系统中作为对象A保存在桶中。
在本说明书中,在对象被写入至上述对象存储系统的过程中,上述对象存储系统具体可以在该对象的对象元数据中记录该对象的对象数据在上述对象存储系统中的存储位置,以及在该对象的对象数据中记录该对象数据本身被引用的次数。
接着以上示例继续举例,在对象A被保存在对象存储系统的桶中时,对象存储系统具体可以在对象A的对象元数据中记录该对象的对象数据在对象存储系统中的存储位置;其中,该存储位置具体可以为对象A的对象数据在对象存储系统中的存储位置索引,该存储位置索引具体可以以对象的对象名和对象对应的桶名输入至预设的一致性哈希算法计算获得,基于该存储位置索引可以进一步定位获取对象A的对象数据的实际存储位置。同时,对象存储系统还可以在对象A的对象数据中记录该对象数据本身被引用的次数。比如:在对象A的对象数据的头部预设字节位置中记录该对象数据本身被引用的次数为1,也即,对象A的对象数据当前仅被对象A引用。
在本说明书中,上述对象存储系统接收上述对象客户端发送的对象拷贝请求;其中,上述对象拷贝请求指示将上述对象存储系统中已保存的源对象执行对象拷贝为目标对象。
接着以上示例继续举例,对象存储系统接收对象客户端发送的对象拷贝请求;其中,该对象拷贝请求指示将对象存储系统中已保存的对象A(源对象)执行对象拷贝为对象B(目标对象)。
在本说明书中,上述对象存储系统响应于上述对象拷贝请求,生成与上述目标对象对应的第一对象元数据;其中,上述第一对象元数据中保存了上述源对象的对象数据在上述对象存储系统中的存储位置。
接着以上示例继续举例,对象存储系统响应于该对象拷贝请求,生成与对象B(目标对象)对应的第一对象元数据;其中,该第一对象元数据中保存了对象A(源对象)的对象数据在对象存储系统中的存储位置。
在示出的一种实施方式中,在响应于上述对象拷贝请求生成与上述目标对象对应的上述第一对象元数据的过程中,上述对象存储系统检测上述对象拷贝请求中是否携带了指示对上述源对象执行对象拷贝的拷贝标识数据;其中,上述拷贝标识数据携带了上述源对象在上述对象存储系统中的存储路径。
例如,在实际应用中,上述对象客户端发送的对象拷贝请求中携带了指示对对象A执行对象拷贝的拷贝标识数据;其中,该拷贝标识数据为基于key-value的键值对,比如,该拷贝标识数据具体格式为:
“x-amz-copy-source:SourceBucketName/SourceObjectName”;
其中,x-amz-copy-source为键值对中的key(键);
SourceBucketName/SourceObjectName为键值对中的value(值);
SourceBucketName为要复制的源对象所在源桶的桶名,SourceObjectName为要复制的源对象名称,SourceBucketName/SourceObjectName构成了源对象的存储路径。
对于保存与桶名BucketA的桶中的对象名为ObjectA的对象A,对象A对应的拷贝标识数据A,比如为:
“x-amz-copy-source:BucketA/ObjectA”
在接收到对象客户端发送的对象拷贝请求后,对象存储系统进一步检测该对象拷贝请求中是否携带了拷贝标识数据A;其中,该拷贝标识数据A携带了源对象A在对象存储系统中的存储路径,也即,该存储路径为BucketA/ObjectA。
在本说明书中,进一步地,在上述对象拷贝请求中携带了指示对上述源对象执行对象拷贝的上述拷贝标识数据时,上述对象存储系统则获取上述源对象的存储路径,并基于获取的上述源对象的存储路径,进一步获取上述源对象的第二对象元数据。
接着以上示例继续举例,在确定对象拷贝请求中x-amz-copy-source时,可以确定对象拷贝请求携带拷贝标识数据A,对象存储系统获取源对象A的存储路径(也即,x-amz-copy-source键对应的值BucketA/ObjectA),并基于获取的源对象A的存储路径:BucketA/ObjectA,进一步获取源对象A的第二对象元数据;其中,该第二对象元数据中保存有对象A的对象数据的存储位置。
在本说明书中,进一步地,在获取上述源对象的第二对象元数据后,上述对象存储系统基于上述第二对象元数据,进一步生成与上述目标对象对应的上述第一对象元数据。
接着以上示例继续举例,在获取源对象A的第二对象元数据后,对象存储系统基于该第二对象元数据的内容,进一步生成与目标对象B对应的第一对象元数据的内容,比如:获取源对象A的第二对象元数据中的对象A的对象数据的存储位置后,在生成与目标对象B对应的第一对象元数据时,将获取的对象A的对象数据的存储位置也保存一份至第一对象元数据中。
需要说明的是,相比与前文描述的现有的技术方案,在本申请改进的对象拷贝过程中,由于减少了对象存储系统从源对象的保存对象数据的存储空间中先读取源对象再将源对象写回至存储空间中的读写操作,基于节约了对象存储系统的存储空间(比如:目标对象B对应的第一对象元数据中仅记录对象A的对象数据的存储位置,也即,对象A的对象数据实际被源对象A和目标对象B各自对应的对象元数据分别引用),又降低了对象存储系统的系统负载及网络负载。
另外需要说明的是,在将上述源对象的对象数据的全部数据完整拷贝至上述目标对象的过程中,上述源对象的对象元数据中的其它元数据(比如:ETag值、Content-Type、Content-Length等)可一并拷贝至上述目标对象的元数据中。
在示出的一种实施方式中,上述源对象的对象数据中至少记录了对象引用次数;其中,上述对象引用次数指示对象数据自身被对象存储系统中对象引用的引用次数。
在实现时,在上述源对象的对象数据的头部预设字节位置中记录该对象数据本身被引用的次数。
例如,当源对象A的对象数据的头部预设字节位置中记录该对象数据D本身被引用的次数为1时,源对象A的对象数据当前仅被引用1次,比如:仅被对象A引用。
又例如,当源对象A的对象数据的头部预设字节位置中记录该对象数据D本身被引用的次数为2时,源对象A的对象数据当前被引用2次,比如:被源对象A和目标对象B同时引用。
在示出的一种实施方式中,在生成与上述目标对象对应的第一对象元数据之后,上述对象存储系统将上述对象引用次数执行增加更新。
例如,在源对象A的对象数据D被源对象A引用后又被目标对象B引用时,在对象存储系统将对象数据D中记录的对象引用次数由1增加更新为2。
在示出的一种实施方式中,在接收到上述对象客户端将上述目标对象或上述源对象进行删除的对象删除请求时,上述对象存储系统响应于上述对象删除请求,对应将上述目标对象或上述源对象删除;以及将上述对象引用次数执行减少更新。
例如,在接收到对象客户端对象B(目标对象)的对象删除请求时,对象存储系统响应于该对象删除请求,对应将对象B删除(通过删除对象B的对象元数据实现将对象B删除);以及将对象数据D中记录的对象引用次数减1,也即,对象数据D中记录的对象引用次数由2更新为1。
又例如,在接收到对象客户端对象A(源对象)的对象删除请求时,对象存储系统响应于该对象删除请求,对应将对象A删除(通过删除对象A的对象元数据实现将对象A删除);以及将对象数据D中记录的对象引用次数减1,也即,对象数据D中记录的对象引用次数由2更新为1。
再例如,在接收到对象客户端对象A(源对象)的对象删除请求以及对象B(源对象)的对象删除请求时,对象存储系统响应于该两个对象删除请求,对应将对象A及对象B分别删除(通过删除对象A、B分别对应的对象元数据实现将对象A及对象B删除);以及将对象数据D中记录的对象引用次数执行两次减1,也即,对象数据D中记录的对象引用次数由2更新为0。
在示出的一种实施方式中,在上述对象引用次数为零时,上述对象存储系统删除对象引用次数为零的对象数据。
例如,在对象数据D中记录的对象引用次数由2更新为0后,也即,对象数据D不再被任何对象引用,则对象存储系统删除为0的对象引用次数对应的对象数据D,从而释放对象数据D在对象存储系统实际占用的存储空间。
在示出的一种实施方式中,在上述对象拷贝请求为将上述源对象中的分段对象拷贝为上述目标对象的对象拷贝请求时,上述目标对象对应的第一对象元数据中还记录了上述源对象的对象数据的存储路径、与上述目标对象对应的所述分段对象对应的分段信息。
例如,在实际应用中,在对象客户端发送的对象拷贝请求A仅指示将源对象A中的部分数据(也即,源对象A的对象数据中的部分内容)执行对象拷贝至目标对象B时,该对象拷贝请求A携带的拷贝标识数据除了包括x-amz-copy-source键值对外,还可以包括x-amz-copy-source-range键值对;其中,x-amz-copy-source-range键值对用于指示对象拷贝请求A携带的指定要复制源对象A的字节范围,x-amz-copy-source-range键值对的具体格式为:
“x-amz-copy-source-range:[start,end]”
其中,[start,end]表示于目标对象对应指定要复制源对象的字节起止范围,start表示源对象的对象数据的字节起始范围,end表示源对象的对象数据的字节结束范围)。
以源对象A的对象数据大小为10GB为例,当目标对象B为仅拷贝源对象A的对象数据中开始的3GB数据(也即,源对象A的分段对象),则拷贝标识数据A中的x-amz-copy-source-range键值对,具体为:
“x-amz-copy-source-range:[0GB,3GB]”
在对象拷贝请求为将源对象A中的分段对象(源对象A的对象数据中的部分数据)拷贝为上述目标对象的对象拷贝请求时,则在目标对象B对应的对象元数据中还记录了源对象A的对象数据的存储路径(比如:x-amz-copy-source键对应的值BucketA/ObjectA)、与目标对象B对应的源对象A分段对象对应的分段信息(x-amz-copy-source-range指示的源对象A的对象数据中[0GB,3GB]范围的数据)。
需要说明的是,在将上述源对象的对象数据的部分数据(x-amz-copy-source-range指示)拷贝至上述目标对象的过程中,则上述目标对象的元数据中包括的该部分数据的ETag值和Content-Length等需要重新计算。
当然,在实际应用中,与上述目标对象对应的上述源对象的分段对象对应的分段信息也可以记录在上述源对象的对象数据中。
在以上技术方案中,基于接收对象客户端发送的对象拷贝请求及响应于对象拷贝请求生成与目标对象对应的第一对象元数据;以及,响应于对象客户端对目标对象的对象获取请求,获取第一对象元数据指示的源对象的对象数据,并将获取的源对象的对象数据作为目标对象的对象数据返回至对象客户端。在对象拷贝过程中,由于减少了对象存储系统从保存对象数据的存储空间中先读取源对象再将源对象写回至存储空间中的读写操作,因此,一方面节约了对象存储系统的存储空间,另一方面降低了对象存储系统的系统负载及网络负载,提高了对象存储系统性能。
与上述方法实施例相对应,本说明书还提供了一种对象访问装置的实施例。本说明书的对象访问装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本说明书的对象访问装置所在电子设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
图4是本说明书一实施例示出的一种对象访问装置的框图。
请参考图4,所述对象访问装置40可以应用在前述图3所示的电子设备中,所述装置应用于对象存储系统,所述装置包括:
接收模块401,接收对象客户端发送的对象拷贝请求;其中,所述对象拷贝请求指示将所述对象存储系统中已保存的源对象执行对象拷贝为目标对象;
生成模块402,响应于所述对象拷贝请求,生成与所述目标对象对应的第一对象元数据;其中,所述第一对象元数据中保存了所述源对象的对象数据在所述对象存储系统中的存储位置;
返回模块403,响应于对象客户端对所述目标对象的对象获取请求,获取所述第一对象元数据指示的所述源对象的对象数据,并将获取的所述源对象的对象数据作为所述目标对象的对象数据返回至对象客户端。
在本实施例中,所述源对象的对象数据中至少记录了对象引用次数;其中,所述对象引用次数指示对象数据自身被对象存储系统中对象引用的引用次数;
在生成与所述目标对象对应的第一对象元数据之后,所述生成模块进一步:
将所述对象引用次数执行增加更新。
在本实施例中,还包括:
更新模块404(图4中未示出),响应于对象客户端将所述目标对象或所述源对象进行删除的对象删除请求,对应将所述目标对象或所述源对象删除;以及,
将所述对象引用次数执行减少更新。
在本实施例中,在所述对象引用次数为零时,所述更新模块404进一步:
删除对象引用次数为零的对象数据。
在本实施例中,所述生成模块402进一步:
检测所述对象拷贝请求中是否携带了指示对所述源对象执行对象拷贝的拷贝标识数据;其中,所述拷贝标识数据携带了所述源对象在所述对象存储系统中的存储路径;
如果是,则获取所述源对象的存储路径,并基于获取的所述源对象的存储路径,进一步获取所述源对象的第二对象元数据;
基于所述第二对象元数据,进一步生成与所述目标对象对应的第一对象元数据。
在本实施例中,在所述对象拷贝请求为将所述源对象中的分段对象拷贝为所述目标对象的对象拷贝请求时,所述目标对象对应的第一对象元数据中还记录了所述源对象的对象数据的存储路径、与所述目标对象对应的所述分段对象对应的分段信息。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

Claims (14)

1.一种对象访问方法,其特征在于,所述方法应用于对象存储系统;所述方法包括:
接收对象客户端发送的对象拷贝请求;其中,所述对象拷贝请求指示将所述对象存储系统中已保存的源对象执行对象拷贝为目标对象;
响应于所述对象拷贝请求,生成与所述目标对象对应的第一对象元数据;其中,所述第一对象元数据中保存了所述源对象的对象数据在所述对象存储系统中的存储位置;
响应于对象客户端对所述目标对象的对象获取请求,获取所述第一对象元数据指示的所述源对象的对象数据,并将获取的所述源对象的对象数据作为所述目标对象的对象数据返回至对象客户端。
2.根据权利要求1所述的方法,其特征在于,所述源对象的对象数据中至少记录了对象引用次数;其中,所述对象引用次数指示对象数据自身被对象存储系统中对象引用的引用次数;
在生成与所述目标对象对应的第一对象元数据之后,还包括:
将所述对象引用次数执行增加更新。
3.根据权利要求2所述的方法,其特征在于,还包括:
响应于对象客户端将所述目标对象或所述源对象进行删除的对象删除请求,对应将所述目标对象或所述源对象删除;以及,
将所述对象引用次数执行减少更新。
4.根据权利要求3所述的方法,其特征在于,在所述对象引用次数为零时,还包括:
删除对象引用次数为零的对象数据。
5.根据权利要求1所述的方法,其特征在于,所述响应于所述对象拷贝请求,生成与所述目标对象对应的第一对象元数据,包括:
检测所述对象拷贝请求中是否携带了指示对所述源对象执行对象拷贝的拷贝标识数据;其中,所述拷贝标识数据携带了所述源对象在所述对象存储系统中的存储路径;
如果是,则获取所述源对象的存储路径,并基于获取的所述源对象的存储路径,进一步获取所述源对象的第二对象元数据;
基于所述第二对象元数据,进一步生成与所述目标对象对应的第一对象元数据。
6.根据权利要求2所述的方法,其特征在于,在所述对象拷贝请求为将所述源对象中的分段对象拷贝为所述目标对象的对象拷贝请求时,所述目标对象对应的第一对象元数据中还记录了所述源对象的对象数据的存储路径、与所述目标对象对应的所述分段对象对应的分段信息。
7.一种对象访问装置,其特征在于,所述装置应用于对象存储系统;所述装置包括:
接收模块,接收对象客户端发送的对象拷贝请求;其中,所述对象拷贝请求指示将所述对象存储系统中已保存的源对象执行对象拷贝为目标对象;
生成模块,响应于所述对象拷贝请求,生成与所述目标对象对应的第一对象元数据;其中,所述第一对象元数据中保存了所述源对象的对象数据在所述对象存储系统中的存储位置;
返回模块,响应于对象客户端对所述目标对象的对象获取请求,获取所述第一对象元数据指示的所述源对象的对象数据,并将获取的所述源对象的对象数据作为所述目标对象的对象数据返回至对象客户端。
8.根据权利要求7所述的装置,其特征在于,所述源对象的对象数据中至少记录了对象引用次数;其中,所述对象引用次数指示对象数据自身被对象存储系统中对象引用的引用次数;
在生成与所述目标对象对应的第一对象元数据之后,所述生成模块进一步:
将所述对象引用次数执行增加更新。
9.根据权利要求8所述的装置,其特征在于,还包括:
更新模块,响应于对象客户端将所述目标对象或所述源对象进行删除的对象删除请求,对应将所述目标对象或所述源对象删除;以及,
将所述对象引用次数执行减少更新。
10.根据权利要求9所述的装置,其特征在于,在所述对象引用次数为零时,所述更新模块进一步:
删除对象引用次数为零的对象数据。
11.根据权利要求7所述的装置,其特征在于,所述生成模块进一步:
检测所述对象拷贝请求中是否携带了指示对所述源对象执行对象拷贝的拷贝标识数据;其中,所述拷贝标识数据携带了所述源对象在所述对象存储系统中的存储路径;
如果是,则获取所述源对象的存储路径,并基于获取的所述源对象的存储路径,进一步获取所述源对象的第二对象元数据;
基于所述第二对象元数据,进一步生成与所述目标对象对应的第一对象元数据。
12.根据权利要求8所述的装置,其特征在于,在所述对象拷贝请求为将所述源对象中的分段对象拷贝为所述目标对象的对象拷贝请求时,所述目标对象对应的第一对象元数据中还记录了所述源对象的对象数据的存储路径、与所述目标对象对应的所述分段对象对应的分段信息。
13.一种电子设备,其特征在于,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行如权利要求1至6任一项所述的方法。
14.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现权利要求1至6任一项所述的方法。
CN202011111230.7A 2020-10-16 2020-10-16 对象访问方法、装置、电子设备及机器可读存储介质 Active CN112286448B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011111230.7A CN112286448B (zh) 2020-10-16 2020-10-16 对象访问方法、装置、电子设备及机器可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011111230.7A CN112286448B (zh) 2020-10-16 2020-10-16 对象访问方法、装置、电子设备及机器可读存储介质

Publications (2)

Publication Number Publication Date
CN112286448A true CN112286448A (zh) 2021-01-29
CN112286448B CN112286448B (zh) 2022-10-14

Family

ID=74497007

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011111230.7A Active CN112286448B (zh) 2020-10-16 2020-10-16 对象访问方法、装置、电子设备及机器可读存储介质

Country Status (1)

Country Link
CN (1) CN112286448B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113806107A (zh) * 2021-08-25 2021-12-17 济南浪潮数据技术有限公司 一种对象拷贝方法、装置、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100076932A1 (en) * 2008-09-05 2010-03-25 Lad Kamleshkumar K Image level copy or restore, such as image level restore without knowledge of data object metadata
CN103460197A (zh) * 2011-09-21 2013-12-18 株式会社日立制作所 计算机系统、文件管理方法以及元数据服务器
US20160110264A1 (en) * 2014-10-17 2016-04-21 Netapp, Inc. Methods and systems for restoring storage objects
CN109542797A (zh) * 2017-09-21 2019-03-29 东芝存储器株式会社 存储器系统及控制非易失性存储器的控制方法
US20200042396A1 (en) * 2018-07-31 2020-02-06 Vmware, Inc. System and method for creating linked clones of storage objects with surface snapshots
CN111190534A (zh) * 2018-11-14 2020-05-22 株式会社日立制作所 卷管理装置、卷管理方法和存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100076932A1 (en) * 2008-09-05 2010-03-25 Lad Kamleshkumar K Image level copy or restore, such as image level restore without knowledge of data object metadata
CN103460197A (zh) * 2011-09-21 2013-12-18 株式会社日立制作所 计算机系统、文件管理方法以及元数据服务器
US20160110264A1 (en) * 2014-10-17 2016-04-21 Netapp, Inc. Methods and systems for restoring storage objects
CN109542797A (zh) * 2017-09-21 2019-03-29 东芝存储器株式会社 存储器系统及控制非易失性存储器的控制方法
US20200042396A1 (en) * 2018-07-31 2020-02-06 Vmware, Inc. System and method for creating linked clones of storage objects with surface snapshots
CN111190534A (zh) * 2018-11-14 2020-05-22 株式会社日立制作所 卷管理装置、卷管理方法和存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113806107A (zh) * 2021-08-25 2021-12-17 济南浪潮数据技术有限公司 一种对象拷贝方法、装置、设备及存储介质
CN113806107B (zh) * 2021-08-25 2024-02-13 济南浪潮数据技术有限公司 一种对象拷贝方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN112286448B (zh) 2022-10-14

Similar Documents

Publication Publication Date Title
US10599637B2 (en) Granular buffering of metadata changes for journaling file systems
EP3806424A1 (en) File system data access method and file system
US8620861B1 (en) Preserving file metadata during atomic save operations
KR102128138B1 (ko) 플레이스홀더에 의한 하이드레이션 및 디하이드레이션 기법
US8548948B2 (en) Methods and apparatus for a fine grained file data storage system
JP5400889B2 (ja) ファイルサーバ装置、及びストレージシステムの管理方法、並びにプログラム
US20150032690A1 (en) Virtual synchronization with on-demand data delivery
US10884926B2 (en) Method and system for distributed storage using client-side global persistent cache
US11289115B1 (en) Copying a storage tape
CN109804359A (zh) 用于将数据回写到存储设备的系统和方法
CN106357703B (zh) 集群切换方法与设备
US10838944B2 (en) System and method for maintaining a multi-level data structure
CN110597762A (zh) 文件处理方法、装置、设备及存储介质
CN109558456A (zh) 一种文件迁移方法、装置、设备及可读存储介质
CN112000426B (zh) 一种数据处理方法及装置
CN111177143A (zh) 键值数据存储方法、装置、存储介质与电子设备
US9934240B2 (en) On demand access to client cached files
CN112286457B (zh) 对象重删方法、装置、电子设备及机器可读存储介质
CN112286448B (zh) 对象访问方法、装置、电子设备及机器可读存储介质
CN115421856A (zh) 一种数据恢复方法及装置
CN114675783A (zh) 一种数据存储方法、系统、设备以及介质
CN113127438B (zh) 用于存储数据的方法、装置、服务器和介质
CN111090396A (zh) 一种文件的处理方法、装置及电子设备
CN115904263B (zh) 一种数据迁移方法、系统、设备及计算机可读存储介质
CN111435342A (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