CN113377292B - 一种单机存储引擎 - Google Patents

一种单机存储引擎 Download PDF

Info

Publication number
CN113377292B
CN113377292B CN202110749615.4A CN202110749615A CN113377292B CN 113377292 B CN113377292 B CN 113377292B CN 202110749615 A CN202110749615 A CN 202110749615A CN 113377292 B CN113377292 B CN 113377292B
Authority
CN
China
Prior art keywords
space
transaction
file
disk
data
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
CN202110749615.4A
Other languages
English (en)
Other versions
CN113377292A (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.)
Beijing Qingyun Science And Technology Co ltd
Original Assignee
Beijing Qingyun Science And 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 Qingyun Science And Technology Co ltd filed Critical Beijing Qingyun Science And Technology Co ltd
Priority to CN202110749615.4A priority Critical patent/CN113377292B/zh
Publication of CN113377292A publication Critical patent/CN113377292A/zh
Application granted granted Critical
Publication of CN113377292B publication Critical patent/CN113377292B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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]
    • 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/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种单机存储引擎,配置于存储服务器,内置有本地键值索引引擎,使所存储用户数据文件的命名空间具备扁平及无层级目录结构特点、内置有基于区域树实现的空间管理功能,实现存储空间分配与释放的管理,避免写放大问题,以及内置有事务日志记录功能,能够周期性以快照方式落盘,以保证数据完整性,避免读取到未提交写操作;同时保证整个文件系统都采用写时拷贝方式落盘的策略,周期性以快照方式落盘,以保证数据完整性,避免读取到未提交写操作。

Description

一种单机存储引擎
技术领域
本申请涉及数据存储技术领域,尤其涉及一种单机存储引擎。
背景技术
随着信息时代的快速发展和数据时代的到来,数据量呈指数级增长,数据存储技术对众多应用服务的影响日益加深。分布式存储系统因其具备高可靠性和高扩展性,并且支持文件共享存储和完善的并发访问控制功能,在对数据的存储管理中发挥着至关重要的作用。一般的,存储服务器为分布式存储系统中的核心所在,因此,存储服务器设计和实现关系到分布式存储的复杂度和性能。
对于存储服务器,现有实现中有一部分考虑使用类似Cluster或者HDFS的本地文件系统来实现存储逻辑,但本地文件系统由于有复杂的目录结构树,并且在数据落盘的时候有额外的索引逻辑的开销和本地文件系统本身日志的额外开销,性能较为低下。另外,也有一部分考虑使用裸盘存储数据(如Ceph Bluestor),但是该种设计下对象(或者数据块)的大小为固定大小,用户数据文件越大,就需要分片成为更多的对象(增加了索引维护规模),用户的对象小于固定分片大小的时候,就产生较多空间浪费。
发明内容
有鉴于此,本申请实施例提供了一种单机存储引擎,配置在存储服务器上,实现了文件的扁平化和无层级目录结构的存储,有效降低了空间浪费。
本申请实施例提供了一种单机存储引擎,该单机存储引擎配置于存储服务器,包括:
内置有本地键值索引引擎,使所存储用户数据文件的命名空间具备扁平及无层级目录结构特点,提供基于文件唯一标识进行文件数据入口管理的功能;
内置有基于区域树实现的空间管理功能,以实现存储空间分配与释放的管理;
整个文件系统都采用写时拷贝方式落盘的策略,周期性以快照方式落盘,以保证数据完整性,避免读取到未提交写操作;
内置有事务日志记录功能,用于在存储服务器断电重启后,在上一个快照落盘的基础上重放事务日志,恢复到所述存储服务器断电前的提交状态,保证所存储文件的写事务一致性。
上述提供的一种单机存储引擎,能够通过内置的本地键值索引引擎,保证所存储用户数据文件的命名空间呈现扁平化和无层级目录结构的特点,有效数据文件元数据对象的存储空间占用;同时还实现了基于区域树的空间分配和释放管理,同样保证了存储空间的有效管理;此外,所采用的写时拷贝落盘策略实现了系统运行中的数据完整性;所具备的事务日志记录功能保证了所存储文件的写事务一致性,保证了数据信息在断电后的正常恢复。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本发明实施例提供的一种单机存储引擎的功能架构图;
图2给出了本实施例所提供单机存储引擎中本地键值索引引擎的树拓扑结构示例图;
图3给出了本实施例所提供单机存储引擎中以写时拷贝方式落盘的逻辑实现流程图;
图4给出了本实施例所提供单机存储引擎中事务组轮转机制的逻辑实现流程图;
图5给出了本实施例所提供单机存储引擎中事务日志记录功能所对应拓扑结构的示例图;
图6为本实施例所提供单机存储引擎中相对业务应用的一次周期性落盘的线程实现示例图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”、“第三”等仅用于区别类似的对象,而不必用于描述特定的顺序或先后次序,也不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
实施例一
图1为本发明实施例提供的一种单机存储引擎的功能架构图,如图1所示,单机存储引擎1本身配置于存储服务器中,包括内置的本地键值索引引擎11、基于区域树实现的空间管理功能12、以及事务日志记录功能13,且还具备使整个文件系统都采用写时拷贝方式落盘的逻辑策略。
其中,内置的本地键值索引引擎11,使所存储用户数据文件的命名空间具备扁平及无层级目录结构特点,提供基于文件唯一标识进行文件数据入口管理的功能。
在本实施例中,用户数据文件存储为元数据对象,元数据对象的磁盘入口位置,存储在本地键值索引引擎11中,可以通过文件唯一标识打开用户数据文件的元数据对象进行读写。
可以知道的是,在本实施例的提供的单机存储引擎中,所集成的本地键值存储索引引擎,可以提供键值对的查询、更新以及删除操作。且在所述本地键值存储索引引擎中,底层存储为一个数据库目录,目录内关联至少一个数据库文件的磁盘位置,其中,数据库目录和数据库文件均存储为元数据对象,数据库目录的元数据对象被文件系统入口磁盘块所引用。
同时,本实施例提供的单机存储引擎中,所具备的本地键值索引引擎11、空间管理功能12以及事务日志记录功能13的数据均可以按照设定周期以快照方式进行落盘。对于本地键值索引引擎11而言,其以快照方式落盘的实现中可以包括下述操作中的至少一种,具体的,操作包括数据库文件相应元数据对象的新增、修改以及删除操作。
具体的,对于用户数据文件以元数据对象进行存储的其中一种逻辑实现,可以描述为:在系统运行中,当存在文件生成请求后,分配数据块并将数据块作为文件头进行用户数据文件所关联元数据对象的磁盘入口位置记录,之后将该文件头的磁盘入口位置信息作为关键值信息、以及将用户数据文件的文件唯一标识作为键信息关联记录到本地键值存储空间内,以实现所述文件的存储命名空间扁平化以及无层级目录结构化。
相应的,在系统运行中,进行用户数据文件的查找时,通过本地键值存储索引引擎11,可以确定出与用户数据文件所具备文件唯一标识相匹配的目标磁盘入口位置信息,之后,可以通过该目标磁盘入口位置信息找到作为文件头的数据块,并从该数据块中获得用户数据文件的拓扑信息,最终可以结合该拓扑信息查找到用户数据文件的相关数据所在。
进一步地,对于内置的基于区域树实现的空间管理功能12,其可优选按照磁盘线性空间进行分段管理。对于每个分段而言,可以基于内存中区域树来管理未分配空间,并且同样可以按照设定周期将分段的空间管理信息以快照方式落盘,在落盘实现中,可以将空间管理信息存储为元数据对象,所存储的元数据对象至少包括空间管理元数据对象以及空间管理目录元数据对象。
需要说明的是,在空间管理功能12的逻辑实现中,空间管理元数据对象可以被空间管理目录元数据对象所引用,空间管理目录元数据对象可以被文件系统入口磁盘块所引用;同时,在本实施例提供的单机存储引擎重启后,可以通过对所有磁盘空间区段的元数据对象中的空间管理信息的回放,确定出磁盘空间内的可用空间状态并以区域树的形式恢复到内存中,以确保业务层正常使用。
具体的,对于空间管理信息的落盘方式,可以描述为:
在满足空间管理的落盘条件时,如空间管理记录信息存在变更时,会以分配和释放的日志记录形式按发生顺序追加到对应磁盘空间分段的元数据对象中;当执行快照落盘时,可以检测到进行空间管理元对象所占用的记录空间大于设定阈值后,将相应磁盘空间分段的未分配空间重新生成一个完整的元数据对象,替换原有的空间管理信息,以实现元数据对象所包含内容的精简化,并提升所述单机存储引擎重启之后的载入速度。
示例性的,本实施例可认为基于区域树实现的空间管理功能12,用于对磁盘空间管理时所执行分配操作或释放操作的操作信息进行记录形成空间管理信息并落盘;在存储服务器断电启动后,通过对空间管理信息的回放,确定出磁盘空间内的可用空间状态并以区域树的形式恢复到内存中,以确保业务层正常使用。
同时可以知道的是,相对所述空间管理信息,在内存中对应存在一个以区域树记录的可用空间状态信息。在上述描述的前提下,空间管理功能12的一个实现逻辑可以描述为:
检测到进行空间管理信息记录所占用的记录空间大于设定空间阈值后,当确定对所述记录空间进行压缩操作后所具备的压缩空间至多不超过所述记录空间的一半时,基于内存中记录可用空间状态信息的区域树,形成表征已分配空间状态信息的临时区域树;
汇总所述临时区域树中各节点的数据信息,形成已分配空间信息存储于所述磁盘空间中,以用于存储服务器断电启动后可用空间状态信息的恢复。
需要说明的是,在本实施例中提供的单机存储引起中,所提及的元数据对象均可以采用N叉树结构的方式来组织磁盘中的数据块;其中,N叉树结构中的树根节点为元数据对象的磁盘入口位置,N叉树结构中每一层级的中间节点包含下一层级节点的磁盘块位置指针,叶子节点包含元数据对象所存放的数据。
示例性的,本地键值索引引擎11文件对应的n叉树结构中,所对应根节点的入口位置信息可以记录在本地键值索引引擎11关联的命名空间文件拓扑叶节点中,所对应叶节点的数据块中包含了用户数据文件的文件唯一标识以及文件头的磁盘入口位置信息。
同时,空间管理文件对应的n叉树拓扑结构中,所对应根节点的入口位置信息记录在空间管理关联的命名空间文件拓扑叶节点中,所对应叶节点的数据块中包含了空间管理信息,所述空间管理信息为空间分配/释放的记录信息。
此外,用户数据文件对应的n叉树拓扑结构中,所对应根节点的入口位置信息记录本地索引的拓扑结构叶节点中,所对应叶节点的数据块中包含了文件相关的数据内容。
示例性的,图2给出了本实施例所提供单机存储引擎中本地键值索引引擎的树拓扑结构示例图。如图2所示,在本地键值索引引擎对应的一个进行元数据对象相关信息存储的数据块21中,包含了该元数据对象关联的键值信息,如,键信息key为文件的文件唯一标识,关键值信息value包括了文件逻辑大小、所关联树拓扑结构中顶端间接块的位置信息以及同步所需附加信息。之后,结合顶端间接块的位置信息,可以引申出顶端间接块22,同样的,基于顶端间接块中包括的指针信息又可以引申出下一层的间接块23,以此类推,最终可以基于最后一层间接块24中的指正信息可以引申出进行用户数据文件相关数据信息存储的叶节点数据块25。
在上述实施例的基础上,本实施例优选整个文件系统都采用写时拷贝方式落盘的策略,周期性以快照方式落盘,以保证数据完整性,避免读取到未提交写操作,其中,本实施例每次所进行的落盘操作均可以以事务方式进行。
具体的,以元数据对象采用写时拷贝的方式进行落盘为例,其落盘操作的逻辑实现可以描述为:在系统运行中,元数据对象在写入或变更之前,通过树的根节点按层次递归找到需要写入的磁盘块并加载入内存;对将要写入或者修改数据的磁盘块进行相关内容更新,并将所发生修改的磁盘块及所有祖先节点对应的磁盘块标记为脏数据块;在落盘之前为脏数据磁盘块分配新的磁盘位置,构成新的树拓扑结构,并写入磁盘以及释放旧磁盘块的空间。
为便于更好理解上述落盘策略的逻辑实现,图3给出了本实施例所提供单机存储引擎中以写时拷贝方式落盘的逻辑实现流程图。如图3所示,该逻辑实现流程包括下述步骤:
S31、在系统运行中,当存在写请求时,基于所述写请求中包括的目标文件唯一标识,结合内置的本地键值索引引擎,执行将对象的树拓扑信息从硬盘到内存的加载操作。
进一步地,步骤S31的具体实现可描述为:
a1、在系统运行中,当存在文件写请求时,获取所述写请求中文件对应的目标文件唯一标识;
b1、通过本地键值索引引擎查找并获取所述目标文件唯一标识对应的文件的入口位置信息;
c1、通过所述入口位置信息,从存储文件数据信息的存储空间中获取文件关联的树拓扑信息,并将所述树拓扑信息从磁盘加载到内存中。
S32、在内存中,将所述树拓扑信息记为旧拓扑信息,并进行写请求所对应待写入数据的写入操作,之后进行内存块及间接数据块的脏块标记以及进行相关数据内容的更新,以形成元数据对象的新拓扑信息。
进一步地,步骤S32的具体实现可描述为:
a2、将所述树拓扑信息记为旧拓扑信息,将写请求所对应的待写入数据写入到旧拓扑信息的内存块,对各所述内存块进行标记;
b2、获取空间管理功能相对所述写操作所分配各新数据块的新分配块位置信息;
c2、根据各所述新分配块位置信息,对所述旧拓扑信息进行数据块标记,形成新拓扑信息。
S33、将在内存中形成的新拓扑信息持久化到磁盘。
进一步地,步骤S33的具体实现可描述为:
a3、将对象在磁盘中对应的树拓扑信息作为旧拓扑信息;
b3、获取通过空间管理功能在磁盘中为标记的各脏块分配的新数据块,并作为元数据对象在磁盘中对应的新树节点数据块;
c3、将各脏数据块在内存中对应的相关数据内容,关联写入到磁盘的各新树节点数据块中;
d3、通过空间管理功能释放旧拓扑信息中的旧数据块空间,构成元数据对象在磁盘中的新拓扑信息,其中,释放后的各旧数据块空间放置于延迟释放树中以在下一事务组中被分配;
e3、确定新拓扑信息中各数据块的校验和,完成对象所对应新拓扑信息在磁盘空间中的更新。
S34、在进行新拓扑信息持久化后,确定所述新拓扑信息对应的数据关键信息,并将所述数据关键信息更新到磁盘空间的日志记录空间中,所述数据关键信息包括:文件头位置信息以及新拓扑信息中新分配节点数据块的块位置信息。
S35、在完成到日志记录空间的更新后,将所述新拓扑信息相关的文件头位置信息更新在本地索引的存储空间中。
在上述实施例的基础上,本实施例优选一个事务可以对应一段时间之内的处理操作,处理操作包括:元数据对象创建操作、写操作、数据块空间释放操作、元数据对象的树层级增加或减少操作,以及文件删除操作。
需要说明的是,在元数据对象每次落盘之前,需要为元数据对象重新进行根节点分配操作,并递归变更引用元数据对象的另一个元数据对象。同时,本实施例将一次周期性落盘确定为一个事务组,且一个事务组中至少可以包含一个用户数据文件所对应元数据对象的事务变更。此外,本实施例优选每个用户数据文件都可以以串行的方式多次提交事务,每次事务提交时都会修改本地键值索引引擎11中的索引信息,并将变更内容追加到事务日志记录中。
进一步地,本实施例可以将事务的周期性落盘的逻辑执行优选为事务组机制的逻辑执行。具体的,事务组机制的执行逻辑可以包括:事务组机制启动逻辑,如,在事务组开启时间达到设定开启周期,或者事务组开启时间内所处理事务的数量达到设定数量值时,或者整个事务组中累计修改脏数据块达到设定脏数据量值时,确定当前满足事务组轮转条件;以及,事务组轮转执行逻辑,如在确定当前满足事务组轮转条件后,将当前打开事务组转换为同步事务组,下发到事务组打包模块进行落盘操作,与此同时创建并开启一个新的事务组,新的事务组会接收新的用户数据文件事务的提交操作,作为下一次落盘的事务组。
在本实施例中,图4给出了本实施例所提供单机存储引擎中事务组轮转机制的逻辑实现流程图,如图4所示,事务组轮转的执行逻辑可以包括:
S41、同步事务组进行落盘时,等待所述同步事务组关联的用户数据文件事务提交并打包落盘。
S42、对当前本地键值索引引擎进行快照落盘,并执行本地键值索引引擎的数据库文件元数据对象的变更逻辑,以及数据库目录的元数据对象的变更逻辑。
S43、获取各元数据对象变更时产生的新的空间分配和释放的记录信息,将分配和释放的记录信息追加到空间管理元数据对象中。
S44、监测到空间管理元数据对象的变更,执行空间管理目录元数据对象的变更逻辑。
S45、当确定空间管理元数据的变更而产生的新的空间分配时,将产生的分配记录合并到当前事务组的分配记录中,返回重复执行S43,直至空间管理元数据的变更不再产生新的空间分配后执行S46。
S46、分别将变更后的数据库目录和空间管理目录的元数据对象的位置变更,保存到新的文件系统入口数据块,其中,文件系统入口数据块中保存了事务组的编号。
S47、监测到事务组落盘流程结束后,进行事务组编号自增操作,其中,事务组编号为整数,在所述单机存储引擎的使用生命周期内为唯一非重复编号。
进一步地,在本实施例提供的单机存储引擎中,可以在系统中预留设定大小的预留空间作为文件系统入口数据块;具体的,可以在单机存储引擎启动并加载时,通过对预留空间所记录事务组编号的搜索,找到最大的事务组编号,并确定出该最大的事务组编号所对应文件系统入口数据块。最终,通过该文件系统入口数据块,可以找到本地键值索引引擎11的文件头入口位置信息、空间管理功能12的文件头入口位置信息以及事务日志记录功能13的文件头入口位置信息,从而实现系统运行的流程正常载入。
在本实施例中,对于内置的事务日志记录功能13,可优选确定该功能用于在存储服务器断电重启后,在上一个快照落盘的基础上重放事务日志,恢复到所述存储服务器断电前的提交状态,保证所存储文件的写事务一致性。
在上述优化的基础上,可认为各日志数据块包含一个或多个日志记录,用户数据文件的元数据对象的一次变更事务由一个或多个日志记录所组成,相对应的日志记录信息包括:用户数据文件的创建事务或删除事务以及用户数据文件元数据对象的变更事务。
示例性的,用户数据文件元数据对象的变更事务所关联日志信息中可以包括:新的对象根数据块位置信息以及当前事务下的数据块更新信息或者数据块删除范围信息。同时,用于事务日志记录的数据块空间,在事务组成功轮转之后归还到可用磁盘空间中,相关的空间分配信息不会记录到落盘的空间管理信息中,以实现数据块空间的重复利用。
图5给出了本实施例所提供单机存储引擎中事务日志记录功能所对应拓扑结构的示例图。如图5所示,事务日志记录功能的拓扑结构为链式结构,如以链式连接的各日志数据块51,包括log block 0至log block m+1,而对于任一日志数据块51如log block m,可认为其中包含了用户数据文件的块位置信息(如图5中示出的blockmeta部分)以及实时写入的用户数据文件所关联元数据对象的入口位置信息,文件释放区间信息以及文件删除信息(如图5中示出的entry.nmeta以及entry.n data等部分)。
在本实施例中,相对于内置的本地键值索引引擎11、事务日志记录功能13、以及空间管理功能12,所述磁盘的存储空间在逻辑上分别对应包括索引记录空间、日志记录空间以及空间管理记录空间;还包括:用于文件数据存储的文件存储空间以及各空间头部信息记录的头部空间;
其中,所述索引记录空间、日志记录空间、空间管理记录空间以及文件存储空间对应的数据块均散落在磁盘内的任一存储子区间中。
在上述实施例的基础上,本实施例优选单机存储引擎配置于存储服务器上,而在分布式系统中,配置有单机存储引擎的存储服务器可以作为分布式系统中的数据引擎节点,以用来对分布式系统运行时相关的数据信息进行存储。
本实施例提供的一种单机存储引擎,在功能划分上首先提供了一种快速索引对象数据入口方法,如本地键值索引引擎,能够使所存储用户数据文件的命名空间具备扁平及无层级目录结构特点,提供基于文件唯一标识进行文件数据入口管理的功能;其次提供了一种系统异常之后对象数据恢复的方法,如事务日志记录,能够保证保证所存储文件的写事务一致性;再次提供了一种数据完整性的方法,如写时拷贝,事务以及事务组的结合,能够保证数据完整性,避免读取到未提交写操作;最终还提供了一种空间状态的管理方法,能保证空间管理状态拥有很好的稳定性和收敛性,不会有写放大的问题。在空间划分上,考虑元数据对象采用N叉树结构的方式来组织磁盘中的数据块,大大简化了数据拓扑管理的复杂度,避免了对象每次更新写入对目录层级更新导致的写放大。同时,使得对象在磁盘上具备像文件一样随机访问和修改的效果。
为便于更好理解本实施例所提供单机存储引擎的业务应用逻辑实现,本实施例给出了下述示例流程进行说明。其中,图6为本实施例所提供单机存储引擎中相对业务应用的一次周期性落盘的线程实现示例图。如图6所示,在一次周期性落盘实现中,至少由同步主线程sync worker 61、写线程write worker 62、键值索引同步线程KV-sync worker 63、日志线程jouranl worker 64以及异步IO落盘线程aio worker 65这五大部分线程组成。
上述五部分线程在业务应用实现中的执行逻辑如图6所示,可以描述为:
1)sync worker向write worker发送写请求write_full消息,以用于将要修改的文件信息写入磁盘。
2)write worker接收到上述write_full消息后,进行数据块校验和的计算,间接块入口位置信息的更新操作,将最新的入口位置信息写入到键值引擎的操作,以及生成数据块以及间接块并将各入口文件信息对应到输入输出事件aio_event的操作。
3)write worker发送aio_event到aio worker,以实现所修改数据的落盘。
4)aio worker根据所接收的aio_event实现相关联的数据落盘操作。
5)sync worker在监测到aio worker进行数据落盘成功后,向KV-sync worker发送键值索引消息sync kv msg。
6)KV-sync worker接收到sync kv msg后,组织待更新的键值索引引擎文件,并进行空间申请操作,之后也向write worker发送相关的write_full消息,以实现键值索引数据文件的持久化。
7)write worker接收到该write_full消息后,再次进行数据块校验和的计算,间接块入口位置信息的更新操作,以及生成数据块以及间接块并将各入口文件信息对应到输入输出事件aio_event的操作。
8)write worker发送上述所形成aio_event到aio worker,同样来实现所修改数据的落盘。
9)aio worker再次根据所接收的aio_event实现相关联的数据落盘操作。
10)sync worker在监测到aio worker进行数据落盘成功后,执行事务日志空间的释放操作,并执行空间分配/释放的更新管理,以将分配和释放记录写入到空间管理对应的存储空间中,并同样向write worker发送write_full消息,以进行空间管理数据的持久化。
11)write worker再次接收到sync worker发送的write_full消息后,重新进行数据块校验和的计算,间接块入口位置信息的更新操作,以及生成数据块以及间接块并将各入口文件信息对应到输入输出事件aio_event的操作。
12)write worker再次发送新形成的aio_event到aio worker,同样来实现所修改数据的落盘。
13)aio worker又一次根据所接收的aio_event实现相关联的数据落盘操作。
14)sync worker在监测到aio worker进行数据落盘成功后,执行预留空间uber中索引记录空间、日志记录空间以及空间管理记录空间所对应数据拓扑入口信息的更新操作。
可以理解的是,通过上述1)~14)的步骤执行,相当于通过本实施例提供的单机存储引擎实现了一次文件系统的业务应用运行。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (14)

1.一种单机存储引擎,其特征在于,配置于存储服务器,包括:
内置有本地键值存储索引引擎,使所存储用户数据文件的命名空间具备扁平及无层级目录结构特点,提供基于文件唯一标识进行文件数据入口管理的功能;所述本地键值存储索引引擎,用于提供键值对的查询、更新以及删除操作;所述用户数据文件存储为元数据对象;其中,所述用户数据文件包括数据库目录和数据库文件;在所述本地键值存储索引引擎中,底层存储为一个数据库目录,目录内关联至少一个数据库文件的磁盘位置;数据库目录和数据库文件均存储为元数据对象,数据库目录的元数据对象被文件系统入口磁盘块所引用;在按照设定周期对本地键值索引引擎的数据以快照方式落盘的执行中,包括对数据库文件相应元数据对象的新增、修改和删除操作;
内置有基于区域树实现的空间管理功能,以实现存储空间分配与释放的管理;
整个文件系统都采用写时拷贝方式落盘的策略,周期性以快照方式落盘,以保证数据完整性,避免读取到未提交写操作;
内置有事务日志记录功能,用于在存储服务器断电重启后,在上一个快照落盘的基础上重放事务日志,恢复到所述存储服务器断电前的提交状态,保证所存储文件的写事务一致性。
2.根据权利要求1所述的单机存储引擎,其特征在于:
元数据对象的磁盘入口位置,存储在本地键值索引引擎中,可以通过文件唯一标识打开用户数据文件的元数据对象进行读写。
3.根据权利要求1所述的单机存储引擎,其特征在于,
内置的空间管理功能,按照磁盘线性空间进行分段管理;
每个分段基于内存中区域树管理未分配空间,并且按照设定周期将该分段的空间管理信息以快照方式落盘,存储为元数据对象,包括空间管理元数据对象和空间管理目录元数据对象;
其中,空间管理元数据对象被空间管理目录元数据对象所引用,空间管理目录元数据对象被文件系统入口磁盘块所引用;
所述单机存储引擎在重启后,通过对所有磁盘空间区段的元数据对象中的空间管理信息的回放,确定出磁盘空间内的可用空间状态并以区域树的形式恢复到内存中,以确保业务层正常使用。
4.根据权利要求3所述的单机存储引擎,其特征在于,空间管理信息落盘的方式包括:
空间管理的变更信息在满足快照落盘时,会以分配和释放的日志记录形式按发生顺序追加到对应磁盘空间分段的元数据对象中;
当执行快照落盘时,检测到进行空间管理元对象所占用的记录空间大于设定阈值后,将相应磁盘空间分段的未分配空间重新生成一个完整的元数据对象,替换原有的空间管理信息,以实现元数据对象所包含内容的精简化,并提升所述单机存储引擎重启之后的载入速度。
5.根据权利要求1-4任一项所述的单机存储引擎,其特征在于:元数据对象采用N叉树结构的方式来组织磁盘中的数据块;
其中,N叉树结构中的树根节点为元数据对象的磁盘入口位置,N叉树结构中每一层级的中间节点包含下一层级节点的磁盘块位置指针,叶子节点包含元数据对象所存放的数据。
6.根据权利要求5所述的单机存储引擎,其特征在于:元数据对象采用写时拷贝的方式进行落盘,每次落盘操作以事务方式进行;
在系统运行中,元数据对象在写入或变更之前,通过树的根节点按层次递归找到需要写入的磁盘块并加载入内存;
对将要写入或者修改数据的磁盘块进行相关内容更新,并将所发生修改的磁盘块及所有祖先节点对应的磁盘块标记为脏数据块;
在落盘之前为脏数据磁盘块分配新的磁盘位置,构成新的树拓扑结构,并写入磁盘以及释放旧磁盘块的空间;
一个事务可以对应一段时间之内的处理操作,处理操作包括:元数据对象创建操作、写操作、数据块空间释放操作、元数据对象的树层级增加或减少操作,以及文件删除操作。
7.根据权利要求6所述的单机存储引擎,其特征在于,
在系统运行中,元数据对象的每次落盘之前,重新进行元数据对象的根节点分配操作,并递归变更引用元数据对象的另一个元数据对象;
将一次周期性落盘确定为一个事务组,一个事务组中包含至少一个用户数据文件所对应元数据对象的事务变更;
每个用户数据文件以串行的方式多次提交事务,每次事务提交时都会修改本地键值索引引擎中的索引信息,并将变更内容追加到事务日志记录。
8.根据权利要求7所述的单机存储引擎,其特征在于,事务组机制的执行逻辑包括:
在事务组开启时间达到设定开启周期,或者事务组开启时间内所处理事务的数量达到设定数量值时,或者整个事务组中累计修改脏数据块达到设定脏数据量值时,确定当前满足事务组轮转条件;
在确定当前满足事务组轮转条件后,将当前打开事务组转换为同步事务组,下发到事务组打包模块进行落盘操作,与此同时创建并开启一个新的事务组,新的事务组会接收新的用户数据文件事务的提交操作,作为下一次落盘的事务组。
9.根据权利要求8所述的单机存储引擎,其特征在于,事务组轮转的执行逻辑包括:
同步事务组进行落盘时,等待所述同步事务组关联的用户数据文件事务提交并打包落盘;
对当前本地键值索引引擎进行快照落盘,并执行本地键值索引引擎的数据库文件元数据对象的变更逻辑,以及数据库目录的元数据对象的变更逻辑;
获取各元数据对象变更时产生的新的空间分配和释放的记录信息,将分配和释放的记录信息追加到空间管理元数据对象中;
监测到空间管理元数据对象的变更,执行空间管理目录元数据对象的变更逻辑;
当确定空间管理元数据的变更而产生的新的空间分配时,将产生的分配记录合并到当前事务组的分配记录中,返回重复执行空间管理元数据对象的变更逻辑,直至空间管理元数据的变更不再产生新的空间分配;
分别将变更后的数据库目录和空间管理目录的元数据对象的位置变更,保存到新的文件系统入口数据块,其中,文件系统入口数据块中保存了事务组的编号;
监测到事务组落盘流程结束后,进行事务组编号自增操作,其中,事务组编号为整数,在所述单机存储引擎的使用生命周期内为唯一非重复编号。
10.根据权利要求9所述的单机存储引擎,其特征在于,
文件系统中预留设定大小的预留空间作为文件系统入口数据块;
在单机存储引擎启动并加载时,通过对所述预留空间的搜索,找到最大的事务组编号所对应的文件系统入口数据块,以进行系统运行的流程载入。
11.根据权利要求7所述的单机存储引擎,其特征在于,所述事务日志记录功能中进行事务日志记录的数据结构采用链式结构;
完整落盘的当前事务组的文件系统入口数据块中,引用了存放下一事务组的日志信息的日志数据块,每个日志数据块在所述当前事务组进行落盘时都会包含自身内容的校验信息、事务组编号以及下一个日志数据块的地址;
若校验有效且事务组编号大于上一次落盘的事务组,则将日志数据块中的内容确定为可信内容。
12.根据权利要求11所述的单机存储引擎,其特征在于,
各日志数据块包含一个或多个日志记录,用户数据文件的元数据对象的一次变更事务由一个或多个日志记录所组成,相对应的日志记录信息包括:用户数据文件的创建事务或删除事务以及用户数据文件元数据对象的变更事务;
其中,用户数据文件元数据对象的变更事务所关联日志信息中包括:新的对象根数据块位置信息以及当前事务下的数据块更新信息或者数据块删除范围信息;
用于事务日志记录的数据块空间,在事务组成功轮转之后归还到可用磁盘空间中,相关的空间分配信息不会记录到落盘的空间管理信息中,以实现数据块空间的重复利用。
13.根据权利要求1所述的单机存储引擎,其特征在于,相对于内置的本地索引功能、事务日志记录功能、空间管理功能,
所述磁盘的存储空间在逻辑上分别对应包括索引记录空间、日志记录空间以及空间管理记录空间;还包括:用于文件数据存储的文件存储空间以及各空间头部信息记录的头部空间;
其中,所述索引记录空间、日志记录空间、空间管理记录空间以及文件存储空间对应的数据块均散落在磁盘内的任一存储子区间中。
14.根据权利要求1-4或6-13任一项所述的单机存储引擎,其特征在于,作为分布式系统中的数据引擎节点,用于分布式系统运行中相关数据信息的存储。
CN202110749615.4A 2021-07-02 2021-07-02 一种单机存储引擎 Active CN113377292B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110749615.4A CN113377292B (zh) 2021-07-02 2021-07-02 一种单机存储引擎

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110749615.4A CN113377292B (zh) 2021-07-02 2021-07-02 一种单机存储引擎

Publications (2)

Publication Number Publication Date
CN113377292A CN113377292A (zh) 2021-09-10
CN113377292B true CN113377292B (zh) 2024-02-02

Family

ID=77580646

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110749615.4A Active CN113377292B (zh) 2021-07-02 2021-07-02 一种单机存储引擎

Country Status (1)

Country Link
CN (1) CN113377292B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11563803B1 (en) * 2021-11-10 2023-01-24 President And Fellows Of Harvard College Optimized self-designing key-value storage engine
CN117076417B (zh) * 2023-10-16 2024-02-06 苏州元脑智能科技有限公司 一种文件快照实现方法、装置、计算机设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814044A (zh) * 2010-04-19 2010-08-25 中兴通讯股份有限公司 元数据处理方法及装置
US9311333B1 (en) * 2012-12-28 2016-04-12 Emc Corporation Managing files of file systems
US9697219B1 (en) * 2014-12-29 2017-07-04 EMC IP Holding Company LLC Managing log transactions in storage systems
CN107862064A (zh) * 2017-11-16 2018-03-30 北京航空航天大学 一个基于nvm的高性能、可扩展的轻量级文件系统
CN108319602A (zh) * 2017-01-17 2018-07-24 广州市动景计算机科技有限公司 数据库管理方法及数据库系统
CN110347852A (zh) * 2019-06-06 2019-10-18 华中科技大学 嵌入横向扩展键值存储系统的文件系统及文件管理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710535B2 (en) * 2011-08-12 2017-07-18 Nexenta Systems, Inc. Object storage system with local transaction logs, a distributed namespace, and optimized support for user directories
US9846539B2 (en) * 2016-01-22 2017-12-19 Netapp, Inc. Recovery from low space condition of an extent store
US10884868B2 (en) * 2017-10-05 2021-01-05 Zadara Storage, Inc. Dedupe as an infrastructure to avoid data movement for snapshot copy-on-writes

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814044A (zh) * 2010-04-19 2010-08-25 中兴通讯股份有限公司 元数据处理方法及装置
US9311333B1 (en) * 2012-12-28 2016-04-12 Emc Corporation Managing files of file systems
US9697219B1 (en) * 2014-12-29 2017-07-04 EMC IP Holding Company LLC Managing log transactions in storage systems
CN108319602A (zh) * 2017-01-17 2018-07-24 广州市动景计算机科技有限公司 数据库管理方法及数据库系统
CN107862064A (zh) * 2017-11-16 2018-03-30 北京航空航天大学 一个基于nvm的高性能、可扩展的轻量级文件系统
CN110347852A (zh) * 2019-06-06 2019-10-18 华中科技大学 嵌入横向扩展键值存储系统的文件系统及文件管理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
徐福涛.《视频监控系统技术及应用》.吉林科学技术出版社,2018,第226-230页. *
谢跟踪.《GIS在区域生态环境信息系统研究中的应用》.中国环境科学出版社,2004,第88-95页. *

Also Published As

Publication number Publication date
CN113377292A (zh) 2021-09-10

Similar Documents

Publication Publication Date Title
US11755415B2 (en) Variable data replication for storage implementing data backup
US10229011B2 (en) Log-structured distributed storage using a single log sequence number space
JP4568115B2 (ja) ハードウェアベースのファイルシステムのための装置および方法
US7257690B1 (en) Log-structured temporal shadow store
US8280858B2 (en) Storage pool scrubbing with concurrent snapshots
US7933938B2 (en) File storage system, file storing method and file searching method therein
US20110010496A1 (en) Method for management of data objects
US20070061540A1 (en) Data storage system using segmentable virtual volumes
CN113722275B (zh) 对象存储空间管理方法、装置、服务器及存储介质
CN113377292B (zh) 一种单机存储引擎
US9307024B2 (en) Efficient storage of small random changes to data on disk
US11468011B2 (en) Database management system
CN113568582B (zh) 数据管理方法、装置和存储设备
CN114281762B (zh) 一种日志存储加速方法、装置、设备及介质
US6629203B1 (en) Alternating shadow directories in pairs of storage spaces for data storage
CN113590612A (zh) Dram-nvm混合索引结构的构建方法及操作方法
CN113704217A (zh) 一种分布式持久性内存文件系统中元数据及数据组织架构方法
US10803006B1 (en) Persistent memory key-value store in a distributed memory architecture
KR100907477B1 (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법
CN109508140B (zh) 存储资源管理方法、装置、电子设备及电子设备、系统
CN111444114B (zh) 一种非易失性内存中数据的处理方法、装置及系统
JP5103786B2 (ja) 制御プログラム、制御装置、制御方法
WO2020024590A1 (en) Persistent memory key-value store in a distributed memory architecture

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
CB02 Change of applicant information

Address after: 100000 Unit 501A, Floor 5, 101, Building 1, Yard 5, Laiguangying West Road, Chaoyang District, Beijing

Applicant after: Beijing Qingyun Science and Technology Co.,Ltd.

Address before: 100020 601, 6 floor, 16 building, No. 36 Chuang Yuan Road, Chaoyang District, Beijing.

Applicant before: Beijing Qingyun Science and Technology Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant