CN115481089A - 文件元数据的存储方法及存储装置、电子设备 - Google Patents

文件元数据的存储方法及存储装置、电子设备 Download PDF

Info

Publication number
CN115481089A
CN115481089A CN202211138608.1A CN202211138608A CN115481089A CN 115481089 A CN115481089 A CN 115481089A CN 202211138608 A CN202211138608 A CN 202211138608A CN 115481089 A CN115481089 A CN 115481089A
Authority
CN
China
Prior art keywords
file
key
key value
stored
files
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.)
Pending
Application number
CN202211138608.1A
Other languages
English (en)
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.)
Beijing Xingchen Tianhe Technology Co ltd
Original Assignee
Beijing Xingchen Tianhe Technology 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 Beijing Xingchen Tianhe Technology Co ltd filed Critical Beijing Xingchen Tianhe Technology Co ltd
Priority to CN202211138608.1A priority Critical patent/CN115481089A/zh
Publication of CN115481089A publication Critical patent/CN115481089A/zh
Pending legal-status Critical Current

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/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • 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/172Caching, prefetching or hoarding of files

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

文件元数据的存储方法及存储装置、电子设备
技术领域
本发明涉及大数据技术领域,具体而言,涉及一种文件元数据的存储方法及存储装置、电子设备。
背景技术
随着大量用户使用终端设备,产生了海量数据,例如,视频、图片、音乐、文件等。对于这些海量数据,使用不同的存储方式进行存储,其中,分布式文件存储系统作为一种有效的存储方式,应用越来越普遍,而伴随着数据的不断产生,分布式文件系统NAS(NetworkAttached Storage,网络附属存储)规模越来越大,单NAS系统已经无法满足海量文件应用的需求。
因此,开始大量使用扩展文件系统或者分布式存储系统等本地文件系统,来管理海量的文件元数据,这种方案也非常常见,实现比较简单;但是随着海量数据的增长,本地文件系统在文件碎片化处理以及性能会大幅下降。
同时,使用本地文件系统作为元数据存储后端,随着元数据规模越来越大,海量小文件的碎片化导致空间的浪费和性能的急剧下降。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种文件元数据的存储方法及存储装置、电子设备,以至少解决相关技术中使用本地文件系统管理海量的文件元数据,无法有效处理文件碎片化,性能大幅下降的技术问题。
根据本发明实施例的一个方面,提供了一种文件元数据的存储方法,包括:接收文件存储请求,其中,所述文件存储请求至少包括:多个待存储文件的文件元数据,所述文件元数据包括键值对,所述键值对中的关键字为所述待存储文件所属目录的目录标识与文件名称的组合,所述键值对中的值为所述待存储文件的文件索引信息;响应所述文件存储请求,以所述键值对的组织形式创建与多个所述待存储文件对应的键值库,其中,所述键值库用于存储与多个所述待存储文件对应的文件目录和文件树结构;基于所述键值库,对所述文件元数据进行存储。
可选地,对所述文件元数据进行存储的步骤,包括:将存储池空间映射为多个块设备;将所述多个块设备格式化为分布式文件存储系统;控制数据存储平台与所述分布式文件存储系统对接,以将所述文件元数据存储至所述分布式文件存储系统中,或者,扩展数据存储平台的后端空间集群;将所述文件元数据存储至所述后端空间集群中。
可选地,以所述键值对的组织形式创建与所述多个待存储文件对应的键值库的步骤,还包括:设置所述键值对中的关键字为所述文件目录的路径,并生成固定展示项作为所述键值对中的值;设置所述键值对中的关键字为待存储文件的文件索引路径,并生成唯一文件标识符描述信息作为所述键值对中的值,其中,所述文件索引路径和所述唯一文件标识符描述信息组成所述文件树结构;在定义好所述关键字和所述键值对中的值的情况下,以所述键值对的组织形式创建与所述多个待存储文件对应的键值库。
可选地,在基于所述键值库,对所述文件元数据进行存储之后,还包括:接收文件重命名操作,其中,所述文件重命名操作至少包括:待重命名的文件的文件标识;响应所述文件重命名操作,删除所述键值库中关联所述文件标识的原始关键字,重新插入新的关键字;保持所述键值对中的值不做变动。
可选地,在基于所述键值库,对所述文件元数据进行存储之后,还包括:接收文件删除操作,其中,所述文件删除操作至少包括:待删除的文件的文件标识;响应所述文件删除操作,删除所述键值库中关联所述文件标识的关键字。
可选地,在基于所述键值库,对所述文件元数据进行存储之后,还包括:接收列子目录操作,其中,所述列子目录操作至少包括:待列出的文件目录的目录标识;响应所述列子目录操作,查询以所述目录标识为前缀的所有关键字,得到关联所述目录标识的所有子目录和所有文件。
可选地,在基于所述键值库,对所述文件元数据进行存储之后,还包括:接收写文件操作,其中,所述写文件操作至少包括:待写入文件的文件标识;响应所述写文件操作,调用下刷接口,其中,所述下刷接口用于执行文件下刷操作;在执行所述文件下刷操作时,采用字符增补接口将所述待写入文件存储至分布式文件存储系统。
可选地,在基于所述键值库,对所述文件元数据进行存储之后,还包括:接收读文件操作,其中,所述读文件操作至少包括:待读取文件的文件标识;响应所述读文件操作,调用分布式文件存储系统的客户端的读接口;采用所述读接口获取所述待读取文件。
根据本发明实施例的另一方面,还提供了一种文件元数据的存储装置,包括:接收单元,用于接收文件存储请求,其中,所述文件存储请求至少包括:多个待存储文件的文件元数据,所述文件元数据包括键值对,所述键值对中的关键字为所述待存储文件所属目录的目录标识与文件名称的组合,所述键值对中的值为所述待存储文件的文件索引信息;创建单元,用于响应所述文件存储请求,以所述键值对的组织形式创建与多个所述待存储文件对应的键值库,其中,所述键值库用于存储与多个所述待存储文件对应的文件目录和文件树结构;存储单元,用于基于所述键值库,对所述文件元数据进行存储。
可选地,所述存储单元包括:第一映射模块,用于将存储池空间映射为多个块设备;将所述多个块设备格式化为分布式文件存储系统;第一控制模块,用于控制数据存储平台与所述分布式文件存储系统对接,以将所述文件元数据存储至所述分布式文件存储系统中,或者,扩展数据存储平台的后端空间集群;第一存储模块,用于将所述文件元数据存储至所述后端空间集群中。
可选地,所述创建单元包括:第一设置模块,用于设置所述键值对中的关键字为所述文件目录的路径,并生成固定展示项作为所述键值对中的值;第二设置模块,用于设置所述键值对中的关键字为待存储文件的文件索引路径,并生成唯一文件标识符描述信息作为所述键值对中的值,其中,所述文件索引路径和所述唯一文件标识符描述信息组成所述文件树结构;第一创建模块,用于在定义好所述关键字和所述键值对中的值的情况下,以所述键值对的组织形式创建与所述多个待存储文件对应的键值库。
可选地,文件元数据的存储装置还包括:第一接收模块,用于在基于所述键值库,对所述文件元数据进行存储之后,接收文件重命名操作,其中,所述文件重命名操作至少包括:待重命名的文件的文件标识;重命名模块,用于响应所述文件重命名操作,删除所述键值库中关联所述文件标识的原始关键字,重新插入新的关键字;保持所述键值对中的值不做变动。
可选地,文件元数据的存储装置还包括:第二接收模块,用于在基于所述键值库,对所述文件元数据进行存储之后,接收文件删除操作,其中,所述文件删除操作至少包括:待删除的文件的文件标识;删除模块,用于响应所述文件删除操作,删除所述键值库中关联所述文件标识的关键字。
可选地,文件元数据的存储装置还包括:第三接收模块,用于在基于所述键值库,对所述文件元数据进行存储之后,接收列子目录操作,其中,所述列子目录操作至少包括:待列出的文件目录的目录标识;列子目录模块,用于响应所述列子目录操作,查询以所述目录标识为前缀的所有关键字,得到关联所述目录标识的所有子目录和所有文件。
可选地,文件元数据的存储装置还包括:第四接收模块,用于在基于所述键值库,对所述文件元数据进行存储之后,接收写文件操作,其中,所述写文件操作至少包括:待写入文件的文件标识;第一调用模块,用于响应所述写文件操作,调用下刷接口,其中,所述下刷接口用于执行文件下刷操作;写文件模块,用于在执行所述文件下刷操作时,采用字符增补接口将所述待写入文件存储至分布式文件存储系统。
可选地,文件元数据的存储装置还包括:第五接收模块,用于在基于所述键值库,对所述文件元数据进行存储之后,接收读文件操作,其中,所述读文件操作至少包括:待读取文件的文件标识;第二调用模块,用于响应所述读文件操作,调用分布式文件存储系统的客户端的读接口;读文件模块,用于采用所述读接口获取所述待读取文件。
根据本发明实施例的另一方面,还提供了一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的文件元数据的存储方法。
本发明中,接收文件存储请求,响应文件存储请求,以键值对的组织形式创建与多个待存储文件对应的键值库,其中,键值库用于存储与多个待存储文件对应的文件目录和文件树结构,基于键值库,对文件元数据进行存储,其中,文件存储请求至少包括:多个待存储文件的文件元数据,文件元数据包括键值对,键值对中的关键字为待存储文件所属目录的目录标识与文件名称的组合,键值对中的值为待存储文件的文件索引信息。
在本发明中,采用扁平化的键值结构(文件元数据包括键值对)实现文件元数据的存储,从而解决相关技术中使用本地文件系统管理海量的文件元数据,无法有效处理文件碎片化,性能大幅下降的技术问题,达到对分布式文件系统海量元数据高效管理,性能线性增长。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的文件元数据的存储方法的流程图;
图2是根据本发明实施例的一种可选的文件元数据的存储装置的示意图;
图3是根据本发明实施例的一种文件元数据的存储方法的电子设备(或移动设备)的硬件结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为便于本领域技术人员理解本发明,下面对本发明各实施例中涉及的部分术语或者名词做出解释:
分布式文件存储系统:将数据存储在物理上分散的多个存储节点上,对这些节点的资源进行统一的管理与分配,并向用户提供文件系统访问接口。
文件元数据:用来描述一个文件的特征的系统数据,包括但不限于:访问权限、文件拥有者以及文件数据块的分布信息(inode)等。在分布式文件系统中,分布信息包括文件在磁盘上的位置以及磁盘在集群中的位置,用户需要操作一个文件必须首先得到它的文件元数据,才能定位到文件的位置并且得到文件的内容或相关属性。
OSD,Object Storage Device,是指负责数据落盘的一个进程,副本和编程语言也通过OSD服务实现,每一个硬盘有一个OSD进程。
MON,监控服务(Monitor),用于监控整个集群的状态。
RocksDB,一种实现快存上存储数据的数据库/服务器,目标是提高服务工作负载的性能,最大限度的发挥闪存和RAM(随机存取存储器)的高度率读写性能。
DIR,一种操作系统(包括DOS及Windows)的命令,寻找其文件名称符合特定条件的文件。基本上会列出目录中的文件及子目录的名称,也可以列出其文件大小,创建时间等相关信息,并且列出所在的磁盘、可用空间等信息。
Ceph,一种分布式文件存储系统,系统架构可划分四部分:Clients:客户端(数据用户)、cmds:元数据服务器(缓存和同步分布式元数据)、cosd:对象存储集群(将数据和元数据作为对象存储,执行其他关键职能)、cmon:集群监视器(执行监视功能)。
RADOS集群,Reliable Autonomic Distributed Object Store,自修复分布式对象存储,Ceph分布式存储系统的核心和基座,关键特性体现在两方面:一方面是数据是高可靠的;另外一方面是对于故障的自修复能力,比如出现宕机或者磁盘故障问题等情况下实现自动的故障处理,实现集群状态的修复。
Librados,一种Ceph客户端,通过librados直接与OSD交互,来存储和取出数据。
本发明实施例可以应用于各种分布式文件存储系统或者元数据管理系统/软件/产品中,实现基于KV键值的文件元数据管理,通过扁平化的KV键值结构,以ID+name为key的方案,可支持快速的重命名、删除、列子目录、读写等操作。
下面结合各个实施例来详细说明本发明。
实施例一
根据本发明实施例,提供了一种文件元数据的存储方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的一种可选的文件元数据的存储方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,接收文件存储请求,其中,文件存储请求至少包括:多个待存储文件的文件元数据,文件元数据包括键值对,键值对中的关键字为待存储文件所属目录的目录标识与文件名称的组合,键值对中的值为待存储文件的文件索引信息;
步骤S104,响应文件存储请求,以键值对的组织形式创建与多个待存储文件对应的键值库,其中,键值库用于存储与多个待存储文件对应的文件目录和文件树结构;
步骤S106,基于键值库,对文件元数据进行存储。
通过上述步骤,可以接收文件存储请求,响应文件存储请求,以键值对的组织形式创建与多个待存储文件对应的键值库,其中,键值库用于存储与多个待存储文件对应的文件目录和文件树结构,基于键值库,对文件元数据进行存储,其中,文件存储请求至少包括:多个待存储文件的文件元数据,文件元数据包括键值对,键值对中的关键字为待存储文件所属目录的目录标识与文件名称的组合,键值对中的值为待存储文件的文件索引信息。在该实施例中,可以采用扁平化的键值结构(文件元数据包括键值对)实现文件元数据的存储,从而解决相关技术中使用本地文件系统管理海量的文件元数据,无法有效处理文件碎片化,性能大幅下降的技术问题,达到对分布式文件系统海量元数据高效管理,性能线性增长。
下面结合上述各实施例来详细说明本发明实施例。
步骤S102,接收文件存储请求,其中,文件存储请求至少包括:多个待存储文件的文件元数据,文件元数据包括键值对,键值对中的关键字为待存储文件所属目录的目录标识与文件名称的组合,键值对中的值为待存储文件的文件索引信息。
本实施例中,选择的文件元数据组织形式是键值对的形式,即key-value的组织形式。其中,键值对中的关键字为待存储文件所属目录的目录标识与文件名称的组合,该目录标识可以包括但不限于:目录ID、目录名称等,文件名称的名称形式包括但不限于:汉字、字母、字符+数字等;而文件索引信息包括但不限于:索引节点信息、文件ID。例如,key=id+name的方案;即每个文件的key是parent目录(即待存储文件所属目录)的id+自己的name,value是自己的inode(索引节点)信息,inode信息中包括了自己的id(inode id)。相当于省去了一般文件系统单独的dentry(目录项)结构,通过key的组织形式来表征目录的组织。
元数据的组织形式是KV结构,下面进行详细举例说明:
初始系统默认一个:inode:root(root_id);
第一级目录、文件的组织形式:<root_id+name:inode value>;
整体扁平化的kv视角:
root:root_inode;
root_id+dir1:dir1_inode;
dir1_id+dir2:dir2_inode;
dir1_id+file1:file1_inode;
dir2_id+file2:file2_inode;
这一系列kv即组成文件:root,root/dir1,root/dir1/dir2,root/dir1/file1,root/dir1/dir2/file2。
在本发明实施例中,以目录ID+文件name作为键值,目录ID+文件name为hash,相同目录下的文件是会被hash到不同的元数据服务上的;同时,本发明对元数据本身做副本冗余,完成的是底层冗余,服务是不感知的。
步骤S104,响应文件存储请求,以键值对的组织形式创建与多个待存储文件对应的键值库,其中,键值库用于存储与多个待存储文件对应的文件目录和文件树结构。
可选的,以键值对的组织形式创建与多个待存储文件对应的键值库的步骤,还包括:设置键值对中的关键字为文件目录的路径,并生成固定展示项作为键值对中的值;设置键值对中的关键字为待存储文件的文件索引路径,并生成唯一文件标识符描述信息作为键值对中的值,其中,文件索引路径和唯一文件标识符描述信息组成文件树结构;在定义好关键字和键值对中的值的情况下,以键值对的组织形式创建与多个待存储文件对应的键值库。
本实施例,可以以Key-Value进行存储,对于文件目录,其Key就是文件目录的路径,而Value设置一个固定的展示项,本实施例中,可以设置为<DIR>;而对于各个待存储文件,其Key是待存储文件的路径,而Value则是生成的唯一fid(对应于上述的唯一文件标识符描述信息),同时该待存储文件也做为一个存储对象-object,后续保存文件数据。
例如,有如下目录结构:
/tmp/d1
/tmp/d2
/tmp/d2/f1,
下面通过表1示意说明KV键值库中存储的内容。
表1键值库
Figure BDA0003853160270000081
Figure BDA0003853160270000091
KV键值库用来扁平化的存储文件目录和文件树结构,对文件目录和文件的查找其实就是对KV键值库的Key-Value的查找。
步骤S106,基于键值库,对文件元数据进行存储。
可选的,对文件元数据进行存储的步骤,包括:将存储池空间映射为多个块设备;将多个块设备格式化为分布式文件存储系统;控制数据存储平台与分布式文件存储系统对接,以将文件元数据存储至分布式文件存储系统中,或者,扩展数据存储平台的后端空间集群;将文件元数据存储至后端空间集群中。
本实施例中,可以扩展数据存储平台(例如,rocksdb)的后端空间,作为KV键值库的后端存储。在实现虚拟文件系统的文件元数据存储时,可以使用两种方式,第一种,使用数据存储平台将文件元数据存储到后端分布式文件系统池里面,当然,可以通过块设备(以rbd示意),将池空间映射为块设备,格式化成分布式文件存储系统(可以xfs示意)文件系统,再由数据存储平台进行对接。第二种,是通过扩展数据存储平台的后端,直接将数据存储平台内部生成的各种文件(如sst)存储到后端空间集群(例如,rados)里面。本发明实施例采用这两种方式,实现以object对象为基础的对象存储,需要在此之上,实现一个伪文件系统,提供如目录操作,文件操作等功能。
本发明实施例,可以扩展数据存储平台的后端,直接将数据存储平台内部生成的文件存储到rados里面。
可选的,在基于键值库,对文件元数据进行存储之后,还包括:接收文件重命名操作,其中,文件重命名操作至少包括:待重命名的文件的文件标识;响应文件重命名操作,删除键值库中关联文件标识的原始关键字,重新插入新的关键字;保持键值对中的值不做变动。
本实施例中,可以实现文件重命名操作。对文件的重命名,其实就是只对KV键值库中的原始文件名Key做删除,再重新插入新Key操作,而fid本身是不会发生变化的。
可选的,在基于键值库,对文件元数据进行存储之后,还包括:接收文件删除操作,其中,文件删除操作至少包括:待删除的文件的文件标识;响应文件删除操作,删除键值库中关联文件标识的关键字。
本实施例中,可以实现文件删除操作,文件删除操作只需要删除KV键值库中对应的Key即可。
可选的,在基于键值库,对文件元数据进行存储之后,还包括:接收列子目录操作,其中,列子目录操作至少包括:待列出的文件目录的目录标识;响应列子目录操作,查询以目录标识为前缀的所有关键字,得到关联目录标识的所有子目录和所有文件。
本实施例中,可以实现列子目录操作,该操作可以列出某个目录下的子目录和文件,其实是Key范围查找操作,例如,列出tmp目录下的子目录和文件,其实就是以/tmp为前缀的key范围查找。
可选的,在基于键值库,对文件元数据进行存储之后,还包括:接收写文件操作,其中,写文件操作至少包括:待写入文件的文件标识;响应写文件操作,调用下刷接口,其中,下刷接口用于执行文件下刷操作;在执行文件下刷操作时,采用字符增补接口将待写入文件存储至分布式文件存储系统。
本实施例中,可以实现文件写操作,该操作可以实现可写文件的存储操作,该可写文件的类型多种多样,例如,WritableFile(能够为了序列化的写内容而提供的文件抽象)里面的Append方法,Append允许使用内部buffer缓存数据,该buffer可以指定大小,在写入数据不超过该buffer大小时,都是暂存在内存中的。
例如,应用调用Sync(数据同步指令)或者Flush接口(对应于上述调用下刷接口)完成下刷操作,当执行下刷操作时,采用librados的append(对应于上述的字符增补接口)或者aio_append接口写入分布式文件存储系统/rados中。
可选的,在基于键值库,对文件元数据进行存储之后,还包括:接收读文件操作,其中,读文件操作至少包括:待读取文件的文件标识;响应读文件操作,调用分布式文件存储系统的客户端的读接口;采用读接口获取待读取文件。
本实施例中,可以实现文件读操作,数据存储平台要求实现顺序文件(即SequentialFile)、随机存储文件(例如,RandomAccessFile抽象类型的文件)等类型文件的读取,在实现读接口Read操作中,可以直接采用librados的读接口完成数据读取操作。
通过上述实施例,可以基于KV键值的文件元数据管理方法,实现分布式文件系统海量元数据高效管理,性能线性增长,稳定支撑百亿以上分布式文件系统应用。
下面结合另一种可选的实施例来说明本发明。
实施例二
本发明实施例提供了一种文件元数据的存储装置,该存储装置可以包括各个实施单元,每个实施单元对应于上述实施例一的各个实施步骤。
图2是根据本发明实施例的一种可选的文件元数据的存储装置的示意图,如图2所示,该存储装置可以包括:接收单元21、创建单元23、存储单元25,其中,
接收单元21,用于接收文件存储请求,其中,文件存储请求至少包括:多个待存储文件的文件元数据,文件元数据包括键值对,键值对中的关键字为待存储文件所属目录的目录标识与文件名称的组合,键值对中的值为待存储文件的文件索引信息;
创建单元23,用于响应文件存储请求,以键值对的组织形式创建与多个待存储文件对应的键值库,其中,键值库用于存储与多个待存储文件对应的文件目录和文件树结构;
存储单元25,用于基于键值库,对文件元数据进行存储。
上述文件元数据的存储装置,可以通过接收单元21接收文件存储请求,通过创建单元23响应文件存储请求,以键值对的组织形式创建与多个待存储文件对应的键值库,其中,键值库用于存储与多个待存储文件对应的文件目录和文件树结构,通过存储单元25基于键值库,对文件元数据进行存储,其中,文件存储请求至少包括:多个待存储文件的文件元数据,文件元数据包括键值对,键值对中的关键字为待存储文件所属目录的目录标识与文件名称的组合,键值对中的值为待存储文件的文件索引信息。在该实施例中,可以采用扁平化的键值结构(文件元数据包括键值对)实现文件元数据的存储,从而解决相关技术中使用本地文件系统管理海量的文件元数据,无法有效处理文件碎片化,性能大幅下降的技术问题,达到对分布式文件系统海量元数据高效管理,性能线性增长。
可选地,存储单元包括:第一映射模块,用于将存储池空间映射为多个块设备;将多个块设备格式化为分布式文件存储系统;第一控制模块,用于控制数据存储平台与分布式文件存储系统对接,以将文件元数据存储至分布式文件存储系统中,或者,扩展数据存储平台的后端空间集群;第一存储模块,用于将文件元数据存储至后端空间集群中。
可选地,创建单元包括:第一设置模块,用于设置键值对中的关键字为文件目录的路径,并生成固定展示项作为键值对中的值;第二设置模块,用于设置键值对中的关键字为待存储文件的文件索引路径,并生成唯一文件标识符描述信息作为键值对中的值,其中,文件索引路径和唯一文件标识符描述信息组成文件树结构;第一创建模块,用于在定义好关键字和键值对中的值的情况下,以键值对的组织形式创建与多个待存储文件对应的键值库。
可选地,文件元数据的存储装置还包括:第一接收模块,用于在基于键值库,对文件元数据进行存储之后,接收文件重命名操作,其中,文件重命名操作至少包括:待重命名的文件的文件标识;重命名模块,用于响应文件重命名操作,删除键值库中关联文件标识的原始关键字,重新插入新的关键字;保持键值对中的值不做变动。
可选地,文件元数据的存储装置还包括:第二接收模块,用于在基于键值库,对文件元数据进行存储之后,接收文件删除操作,其中,文件删除操作至少包括:待删除的文件的文件标识;删除模块,用于响应文件删除操作,删除键值库中关联文件标识的关键字。
可选地,文件元数据的存储装置还包括:第三接收模块,用于在基于键值库,对文件元数据进行存储之后,接收列子目录操作,其中,列子目录操作至少包括:待列出的文件目录的目录标识;列子目录模块,用于响应列子目录操作,查询以目录标识为前缀的所有关键字,得到关联目录标识的所有子目录和所有文件。
可选地,文件元数据的存储装置还包括:第四接收模块,用于在基于键值库,对文件元数据进行存储之后,接收写文件操作,其中,写文件操作至少包括:待写入文件的文件标识;第一调用模块,用于响应写文件操作,调用下刷接口,其中,下刷接口用于执行文件下刷操作;写文件模块,用于在执行文件下刷操作时,采用字符增补接口将待写入文件存储至分布式文件存储系统。
可选地,文件元数据的存储装置还包括:第五接收模块,用于在基于键值库,对文件元数据进行存储之后,接收读文件操作,其中,读文件操作至少包括:待读取文件的文件标识;第二调用模块,用于响应读文件操作,调用分布式文件存储系统的客户端的读接口;读文件模块,用于采用读接口获取待读取文件。
上述的文件元数据的存储装置还可以包括处理器和存储器,上述接收单元21、创建单元23、存储单元25等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
上述处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来响应文件存储请求,以键值对的组织形式创建与多个待存储文件对应的键值库,基于键值库,对文件元数据进行存储。
上述存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
根据本发明实施例的另一方面,还提供了一种电子设备,包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,处理器配置为经由执行可执行指令来执行上述任意一项的文件元数据的存储方法。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:接收文件存储请求,其中,文件存储请求至少包括:多个待存储文件的文件元数据,文件元数据包括键值对,键值对中的关键字为待存储文件所属目录的目录标识与文件名称的组合,键值对中的值为待存储文件的文件索引信息;响应文件存储请求,以键值对的组织形式创建与多个待存储文件对应的键值库,其中,键值库用于存储与多个待存储文件对应的文件目录和文件树结构;基于键值库,对文件元数据进行存储。
图3是根据本发明实施例的一种文件元数据的存储方法的电子设备(或移动设备)的硬件结构框图。如图3所示,电子设备可以包括一个或多个(图中采用302a、302b,……,302n来示出)处理器302(处理器302可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器304。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、键盘、电源和/或相机。本领域普通技术人员可以理解,图3所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,电子设备还可包括比图3中所示更多或者更少的组件,或者具有与图3所示不同的配置。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种文件元数据的存储方法,其特征在于,包括:
接收文件存储请求,其中,所述文件存储请求至少包括:多个待存储文件的文件元数据,所述文件元数据包括键值对,所述键值对中的关键字为所述待存储文件所属目录的目录标识与文件名称的组合,所述键值对中的值为所述待存储文件的文件索引信息;
响应所述文件存储请求,以所述键值对的组织形式创建与多个所述待存储文件对应的键值库,其中,所述键值库用于存储与多个所述待存储文件对应的文件目录和文件树结构;
基于所述键值库,对所述文件元数据进行存储。
2.根据权利要求1所述的存储方法,其特征在于,对所述文件元数据进行存储的步骤,包括:
将存储池空间映射为多个块设备;将所述多个块设备格式化为分布式文件存储系统;控制数据存储平台与所述分布式文件存储系统对接,以将所述文件元数据存储至所述分布式文件存储系统中,或者,
扩展数据存储平台的后端空间集群;将所述文件元数据存储至所述后端空间集群中。
3.根据权利要求1所述的存储方法,其特征在于,以所述键值对的组织形式创建与多个所述待存储文件对应的键值库的步骤,还包括:
设置所述键值对中的关键字为所述文件目录的路径,并生成固定展示项作为所述键值对中的值;
设置所述键值对中的关键字为所述待存储文件的文件索引路径,并生成唯一文件标识符描述信息作为所述键值对中的值,其中,所述文件索引路径和所述唯一文件标识符描述信息组成所述文件树结构;
在定义好所述关键字和所述键值对中的值的情况下,以所述键值对的组织形式创建与多个所述待存储文件对应的键值库。
4.根据权利要求3所述的存储方法,其特征在于,在基于所述键值库,对所述文件元数据进行存储之后,还包括:
接收文件重命名操作,其中,所述文件重命名操作至少包括:待重命名的文件的文件标识;
响应所述文件重命名操作,删除所述键值库中关联所述文件标识的原始关键字,重新插入新的关键字;
保持所述键值对中的值不做变动。
5.根据权利要求3所述的存储方法,其特征在于,在基于所述键值库,对所述文件元数据进行存储之后,还包括:
接收文件删除操作,其中,所述文件删除操作至少包括:待删除的文件的文件标识;
响应所述文件删除操作,删除所述键值库中关联所述文件标识的关键字。
6.根据权利要求3所述的存储方法,其特征在于,在基于所述键值库,对所述文件元数据进行存储之后,还包括:
接收列子目录操作,其中,所述列子目录操作至少包括:待列出的文件目录的目录标识;
响应所述列子目录操作,查询以所述目录标识为前缀的所有关键字,得到关联所述目录标识的所有子目录和所有文件。
7.根据权利要求3所述的存储方法,其特征在于,在基于所述键值库,对所述文件元数据进行存储之后,还包括:
接收写文件操作,其中,所述写文件操作至少包括:待写入文件的文件标识;
响应所述写文件操作,调用下刷接口,其中,所述下刷接口用于执行文件下刷操作;
在执行所述文件下刷操作时,采用字符增补接口将所述待写入文件存储至分布式文件存储系统。
8.根据权利要求3所述的存储方法,其特征在于,在基于所述键值库,对所述文件元数据进行存储之后,还包括:
接收读文件操作,其中,所述读文件操作至少包括:待读取文件的文件标识;
响应所述读文件操作,调用分布式文件存储系统的客户端的读接口;
采用所述读接口获取所述待读取文件。
9.一种文件元数据的存储装置,其特征在于,包括:
接收单元,用于接收文件存储请求,其中,所述文件存储请求至少包括:多个待存储文件的文件元数据,所述文件元数据包括键值对,所述键值对中的关键字为所述待存储文件所属目录的目录标识与文件名称的组合,所述键值对中的值为所述待存储文件的文件索引信息;
创建单元,用于响应所述文件存储请求,以所述键值对的组织形式创建与多个所述待存储文件对应的键值库,其中,所述键值库用于存储与多个所述待存储文件对应的文件目录和文件树结构;
存储单元,用于基于所述键值库,对所述文件元数据进行存储。
10.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至8中任意一项所述的文件元数据的存储方法。
CN202211138608.1A 2022-09-19 2022-09-19 文件元数据的存储方法及存储装置、电子设备 Pending CN115481089A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211138608.1A CN115481089A (zh) 2022-09-19 2022-09-19 文件元数据的存储方法及存储装置、电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211138608.1A CN115481089A (zh) 2022-09-19 2022-09-19 文件元数据的存储方法及存储装置、电子设备

Publications (1)

Publication Number Publication Date
CN115481089A true CN115481089A (zh) 2022-12-16

Family

ID=84423801

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211138608.1A Pending CN115481089A (zh) 2022-09-19 2022-09-19 文件元数据的存储方法及存储装置、电子设备

Country Status (1)

Country Link
CN (1) CN115481089A (zh)

Similar Documents

Publication Publication Date Title
US10430398B2 (en) Data storage system having mutable objects incorporating time
US8683228B2 (en) System and method for WORM data storage
US7860907B2 (en) Data processing
US8412685B2 (en) Method and system for managing data
CN102184211B (zh) 文件系统和检索、写入、修改或删除文件的方法与装置
US20080270436A1 (en) Storing chunks within a file system
US8095678B2 (en) Data processing
JP2014503086A (ja) ファイルシステム及びデータ処理方法
US11397749B2 (en) Asynchronous replication of in-scope table data
US8977662B1 (en) Storing data objects from a flat namespace in a hierarchical directory structured file system
US7499904B2 (en) System and method for client mastered replication of local files
US8090925B2 (en) Storing data streams in memory based on upper and lower stream size thresholds
US8612717B2 (en) Storage system
US8176087B2 (en) Data processing
JP6955554B2 (ja) プレースホルダーを介したコンテンツ管理システムの履歴コンテンツアイテムへのアクセス
CN115481089A (zh) 文件元数据的存储方法及存储装置、电子设备
US8886656B2 (en) Data processing
US8290993B2 (en) Data processing
CN202025315U (zh) 固定内容的数据资源管理系统
CN116266174A (zh) 文件版本管理方法及文件系统
CN116126248A (zh) 重命名处理方法、服务端、客户端及计算机可读存储介质
CN117215477A (zh) 数据对象存储方法、装置、计算机设备和存储介质
JP2004272307A (ja) 文書群管理装置、文書群管理方法、文書群管理プログラム、及び記録媒体

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