一种元数据的存取方法、装置和计算机可读存储介质与流程

文档序号:23090479发布日期:2020-11-27 12:42阅读:161来源:国知局
一种元数据的存取方法、装置和计算机可读存储介质与流程

本发明涉及存储系统技术领域,特别是涉及一种元数据日志的存取方法、装置和计算机可读存储介质。



背景技术:

随着互联网的发展,传统的集中式网络存储系统已不能满足海量pb级别数据的存储,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,有效提高了系统的可靠性、可用性和存取效率。

文件系统中有元数据(metadate,md)和数据,数据是指普通文件中的实际数据,而元数据是用来描述一个文件的特征属性等的系统数据。在分布式存储系统中,元数据和数据是分开存储的,分布式文件系统中提供元数据服务的子系统可以称作元数据服务系统(metadateservice,mds)。在分布式存储系统中,对元数据的操作是随机io请求,当mds接收到元数据io请求操作时,需要完成元数据的更新操作之后,才能执行下一个元数据io请求。当系统在短时间内接收到多个元数据io请求时,按照传统的处理方式会导致系统存在访问瓶颈。

可见,如何提升元数据请求的处理效率,是本领域技术人员需要解决的问题。



技术实现要素:

本发明实施例的目的是提供一种元数据日志的存取方法、装置和计算机可读存储介质,可以提升元数据请求的处理效率。

为解决上述技术问题,本发明实施例提供一种元数据的存取方法,包括:

当接收到元数据写入请求时,将所述元数据写入请求中携带的元数据缓存至预设的内存空间,并查找与所述元数据写入请求中携带的文件标识相对应的日志文件;

依据所述日志文件中记录的追加写文件访问偏移量,将所述元数据对应的日志事件写入所述日志文件;

按照设定的周期时间对所述内存空间中缓存的元数据执行落盘操作,并在完成元数据的落盘之后更新所述日志文件的日志头中记录的过期数据文件访问偏移量。

可选地,在所述完成元数据的落盘之后更新所述日志文件的日志头中记录的过期数据文件访问偏移量之后还包括:

当检测到系统重启时,从所述日志文件的日志头中读取过期数据文件访问偏移量;

根据所述过期数据文件访问偏移量,依次从所述日志文件中读取日志条目,并依据所述日志条目中的日志事件生成元数据,将生成的元数据缓存至所述内存空间;

每读取一条日志条目,则更新一次所述日志头中的过期数据文件访问偏移量,直至读取完所述日志文件中的所有日志条目,则结束操作。

可选地,在所述根据所述过期数据文件访问偏移量,依次从所述日志文件中读取日志条目之前还包括:

判断所述日志文件中携带的校验码是否与预先设定的校验码一致;

当所述日志文件中携带的校验码与预先设定的校验码一致时,则执行所述根据所述过期数据文件访问偏移量,依次从所述日志文件中读取日志条目的步骤。

可选地,在所述依据所述日志条目中的日志事件生成元数据,将生成的元数据缓存至所述内存空间之前还包括:

判断当前读取的日志条目中携带的日志标志位与更新前的过期数据文件访问偏移量是否一致;

当前读取的日志条目中携带的日志标志位与更新前的过期数据文件访问偏移量一致时,则执行所述依据所述日志条目中的日志事件生成元数据,将生成的元数据缓存至所述内存空间的步骤;

当前读取的日志条目中携带的日志标志位与更新前的过期数据文件访问偏移量不一致时,则生成告警提示信息。

可选地,在所述完成元数据的落盘之后更新所述日志文件的日志头中记录的过期数据文件访问偏移量之后还包括:

将完成落盘的元数据从所述内存空间中删除。

本发明实施例还提供了一种元数据的存取装置,包括缓存单元、查找单元、写入单元、落盘单元和更新单元;

所述缓存单元,用于当接收到元数据写入请求时,将所述元数据写入请求中携带的元数据缓存至预设的内存空间;

所述查找单元,用于查找与所述元数据写入请求中携带的文件标识相对应的日志文件;

所述写入单元,用于依据所述日志文件中记录的追加写文件访问偏移量,将所述元数据对应的日志事件写入所述日志文件;

所述落盘单元,用于按照设定的周期时间对所述内存空间中缓存的元数据执行落盘操作;

所述更新单元,用于在完成元数据的落盘之后更新所述日志文件的日志头中记录的过期数据文件访问偏移量。

可选地,还包括读取单元和生成单元;

所述读取单元,用于当检测到系统重启时,从所述日志文件的日志头中读取过期数据文件访问偏移量;根据所述过期数据文件访问偏移量,依次从所述日志文件中读取日志条目;

所述生成单元,用于依据所述日志条目中的日志事件生成元数据,将生成的元数据缓存至所述内存空间;

所述更新单元还用于每读取一条日志条目,更新一次所述日志头中的过期数据文件访问偏移量,直至读取完所述日志文件中的所有日志条目,则结束操作。

可选地,还包括第一判断单元;

所述第一判断单元,用于判断所述日志文件中携带的校验码是否与预先设定的校验码一致;当所述日志文件中携带的校验码与预先设定的校验码一致时,则触发所述读取单元执行所述根据所述过期数据文件访问偏移量,依次从所述日志文件中读取日志条目的步骤。

可选地,还包括第二判断单元和提示单元;

所述第二判断单元,用于判断当前读取的日志条目中携带的日志标志位与更新前的过期数据文件访问偏移量是否一致;当前读取的日志条目中携带的日志标志位与更新前的过期数据文件访问偏移量一致时,则执行所述生成单元执行所述依据所述日志条目中的日志事件生成元数据,将生成的元数据缓存至所述内存空间的步骤;

所述提示单元,用于当前读取的日志条目中携带的日志标志位与更新前的过期数据文件访问偏移量不一致时,则生成告警提示信息。

可选地,还包括删除单元;

所述删除单元,用于将完成落盘的元数据从所述内存空间中删除。

本发明实施例还提供了一种元数据的存取装置,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序以实现如上述任意一项所述元数据的存取方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述元数据的存取方法的步骤。

由上述技术方案可以看出,当接收到元数据写入请求时,将元数据写入请求中携带的元数据缓存至预设的内存空间,并查找与元数据写入请求中携带的文件标识相对应的日志文件;依据日志文件中记录的追加写文件访问偏移量,将元数据对应的日志事件写入日志文件。在接收到元数据写入请求时,先将元数据进行缓存,然后再按照设定的周期时间对内存空间中缓存的元数据执行落盘操作,极大的提升了元数据写入请求的响应效率。并在完成元数据的落盘之后更新日志文件的日志头中记录的过期数据文件访问偏移量。通过日志文件的方式记录元数据的日志事件,可以实现对元数据的追踪,即使元数据服务系统异常退出导致内存空间中的元数据丢失,也可以根据记录的日志文件实现元数据的恢复,有效的保证了元数据请求的顺利处理。

附图说明

为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种元数据的存取方法的流程图;

图2为本发明实施例提供的一种元数据的存取装置的结构示意图;

图3为本发明实施例提供的一种元数据的存取装置的硬件结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

接下来,详细介绍本发明实施例所提供的一种元数据的存取的方法。图1为本发明实施例提供的一种元数据的存取方法的流程图,该方法包括:

s101:当接收到元数据写入请求时,将元数据写入请求中携带的元数据缓存至预设的内存空间,并查找与元数据写入请求中携带的文件标识相对应的日志文件。

对元数据写入请求中携带的元数据执行落盘更新需要花费较长的时间,在本发明实施例中,为了保证对元数据写入请求的及时响应,避免元数据写入请求响应不及时造成元数据服务系统存在访问瓶颈的问题,可以先对元数据写入请求中携带的元数据进行缓存。

元数据集群中包含有多个mds,在本发明实施例中,可以针对于每个mds构建一个日志文件,用于记录元数据服务系统的日志事件。

为了便于区分多个元数据服务系统各自对应的日志文件,可以针对每个日志文件设置唯一的文件标识。例如,mds0的日志文件的文件标识设置为0x400,mds1的日志文件的文件标识设置为0x401。

s102:依据日志文件中记录的追加写文件访问偏移量,将元数据对应的日志事件写入日志文件。

为了保证日志文件中日志事件的有序记录,对于每个日志文件会设置日志头,在该日志头中可以包括追加写文件访问偏移量和过期数据文件访问偏移量。

其中,追加写文件访问偏移量用于指示新加入的日志事件的写入位置,过期数据文件访问偏移量用于指示日志文件中未执行元数据落盘的日志事件的起始位置。

初始状态下,追加写文件访问偏移量和过期数据文件访问偏移量取值为0,随着日志文件中日志事件的不断写入,追加写文件访问偏移量会不断发生变化,当完成部分日志事件对应的元数据的落盘操作之后,相应的,过期数据文件访问偏移量也会发生变化。

例如,一个日志文件中存储有三个日志条目,第一个日志条目包含有100个日志事件,第二个日志条目包含有50个日志事件,第三个日志条目包含有30个日志事件,此时追加写文件访问偏移量为181,即代表从第181位记录新写入的日志事件。假设已经对第一个日志条目对应的元数据执行了落盘操作,此时过期数据文件访问偏移量为101,即代表从第101个日志事件对应的元数据开始执行落盘操作。

日志事件记录了构建元数据所需的基础信息以及操作方式。每个元数据有其对应的日志事件,依赖于该日志事件便可以生成完整的元数据。

s103:按照设定的周期时间对内存空间中缓存的元数据执行落盘操作,并在完成元数据的落盘之后更新日志文件的日志头中记录的过期数据文件访问偏移量。

周期时间的长短可以依据实际需求设定,在此不做限定。

在本发明实施例中,先将元数据写入请求中携带的元数据缓存至了预设的内存空间,对于元数据的实际落盘更新,需要定期将内存空间中的元数据执行落盘操作。

在完成元数据的落盘之后,需要将日志头中记录的过期数据文件访问偏移量进行更新,以便于元数据服务系统清楚的获知当前未执行落盘操作的元数据的起始位置,从而保证后续元数据落盘操作的有效执行。

为了避免对内存空间的长时间占用,在本发明实施例中,可以将完成落盘的元数据从内存空间中删除,以便于内存空间可以记录新产生的元数据,提升了内存空间的利用率。

由上述技术方案可以看出,当接收到元数据写入请求时,将元数据写入请求中携带的元数据缓存至预设的内存空间,并查找与元数据写入请求中携带的文件标识相对应的日志文件;依据日志文件中记录的追加写文件访问偏移量,将元数据对应的日志事件写入日志文件。在接收到元数据写入请求时,先将元数据进行缓存,然后再按照设定的周期时间对内存空间中缓存的元数据执行落盘操作,极大的提升了元数据写入请求的响应效率。并在完成元数据的落盘之后更新日志文件的日志头中记录的过期数据文件访问偏移量。通过日志文件的方式记录元数据的日志事件,可以实现对元数据的追踪,即使元数据服务系统异常退出导致内存空间中的元数据丢失,也可以根据记录的日志文件实现元数据的恢复,有效的保证了元数据请求的顺利处理。

在本发明实施例中,未执行落盘的元数据缓存在预设的内存空间,但是内存空间存在掉电后数据丢失的问题,因此检测到系统重启时,需要对内存空间中的元数据进行回放,即将内存空间中的元数据恢复至掉电前的状态。

在实际应用中,元数据服务系统检测到系统重启时,可以从日志文件的日志头中读取过期数据文件访问偏移量;根据过期数据文件访问偏移量,依次从日志文件中读取日志条目,并依据日志条目中的日志事件生成元数据,将生成的元数据缓存至内存空间;每读取一条日志条目,则更新一次日志头中的过期数据文件访问偏移量,直至读取完日志文件中的所有日志条目,则结束操作。

依赖于过期数据文件访问偏移量可以定位到未执行落盘操作的的日志事件的起始位置,从而可以从日志文件中依次读取日志事件,依赖于日志事件可以生成相应的元数据,将生成的元数据缓存至内存空间,以实现对内存空间中元数据的恢复。

通过在日志文件的日志头中设置过期数据文件访问偏移量,即使元数据服务系统异常退出导致内存空间中的元数据丢失,也可以根据过期数据文件访问偏移量,从日志文件记录的日志事件中恢复出元数据,有效的保证了元数据存储的可靠性。

在本发明实施例中,系统重启时需要依赖于日志文件恢复内存空间中的元数据,为了保证元数据的正确性,可以对日志文件设置校验机制。

在实际应用中,在生成日志文件时可以对日志文件设置预先设定的校验码。在本发明实施例中,对于校验码的形式不做限定。在根据过期数据文件访问偏移量,依次从日志文件中读取日志条目之前,可以先判断日志文件中携带的校验码是否与预先设定的校验码一致。

当日志文件中携带的校验码与预先设定的校验码一致时,则说明日志文件是针对于元数据写入请求生成的文件,此时可以执行根据过期数据文件访问偏移量,依次从日志文件中读取日志条目的步骤。

为了进一步确保元数据的完整性,在每个日志条目的最后一个日志事件中都会设置相应的日志标志位,该日志标志位用于表示该条日志条目的起始位置。因此,在依据日志条目中的日志事件生成元数据,将生成的元数据缓存至内存空间之前,可以先判断当前读取的日志条目中携带的日志标志位与更新前的过期数据文件访问偏移量是否一致。

当前读取的日志条目中携带的日志标志位与更新前的过期数据文件访问偏移量一致时,则说明依赖于日志事件生成的元数据属于完整的元数据,此时可以执行依据日志条目中的日志事件生成元数据,将生成的元数据缓存至内存空间的步骤。

当前读取的日志条目中携带的日志标志位与更新前的过期数据文件访问偏移量不一致时,则说明依赖于日志事件生成的元数据不完整,此时可以生成告警提示信息。

通过依赖于日志标志位与过期数据文件访问偏移量的关系,对生成的元数据进行完整性校验,可以保证生成的元数据的可用性,并且可以及时发现生成的元数据不完整的问题,降低了元数据不完整对元数据服务系统造成的影响。

图2为本发明实施例提供的一种元数据的存取装置的结构示意图,包括缓存单元21、查找单元22、写入单元23、落盘单元24和更新单元25;

缓存单元21,用于当接收到元数据写入请求时,将元数据写入请求中携带的元数据缓存至预设的内存空间;

查找单元22,用于查找与元数据写入请求中携带的文件标识相对应的日志文件;

写入单元23,用于依据日志文件中记录的追加写文件访问偏移量,将元数据对应的日志事件写入日志文件;

落盘单元24,用于按照设定的周期时间对内存空间中缓存的元数据执行落盘操作;

更新单元25,用于在完成元数据的落盘之后更新日志文件的日志头中记录的过期数据文件访问偏移量。

可选地,还包括读取单元和生成单元;

读取单元,用于当检测到系统重启时,从日志文件的日志头中读取过期数据文件访问偏移量;根据过期数据文件访问偏移量,依次从日志文件中读取日志条目;

生成单元,用于依据日志条目中的日志事件生成元数据,将生成的元数据缓存至内存空间;

更新单元还用于每读取一条日志条目,更新一次日志头中的过期数据文件访问偏移量,直至读取完日志文件中的所有日志条目,则结束操作。

可选地,还包括第一判断单元;

第一判断单元,用于判断日志文件中携带的校验码是否与预先设定的校验码一致;当日志文件中携带的校验码与预先设定的校验码一致时,则触发读取单元执行根据过期数据文件访问偏移量,依次从日志文件中读取日志条目的步骤。

可选地,还包括第二判断单元和提示单元;

第二判断单元,用于判断当前读取的日志条目中携带的日志标志位与更新前的过期数据文件访问偏移量是否一致;当前读取的日志条目中携带的日志标志位与更新前的过期数据文件访问偏移量一致时,则执行生成单元执行依据日志条目中的日志事件生成元数据,将生成的元数据缓存至内存空间的步骤;

提示单元,用于当前读取的日志条目中携带的日志标志位与更新前的过期数据文件访问偏移量不一致时,则生成告警提示信息。

可选地,还包括删除单元;

删除单元,用于将完成落盘的元数据从内存空间中删除。

图2所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。

由上述技术方案可以看出,当接收到元数据写入请求时,将元数据写入请求中携带的元数据缓存至预设的内存空间,并查找与元数据写入请求中携带的文件标识相对应的日志文件;依据日志文件中记录的追加写文件访问偏移量,将元数据对应的日志事件写入日志文件。在接收到元数据写入请求时,先将元数据进行缓存,然后再按照设定的周期时间对内存空间中缓存的元数据执行落盘操作,极大的提升了元数据写入请求的响应效率。并在完成元数据的落盘之后更新日志文件的日志头中记录的过期数据文件访问偏移量。通过日志文件的方式记录元数据的日志事件,可以实现对元数据的追踪,即使元数据服务系统异常退出导致内存空间中的元数据丢失,也可以根据记录的日志文件实现元数据的恢复,有效的保证了元数据请求的顺利处理。

图3为本发明实施例提供的一种元数据的存取装置30的硬件结构示意图,包括:

存储器31,用于存储计算机程序;

处理器32,用于执行计算机程序以实现如上述任意实施例所述的元数据的存取方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述任意实施例所述的元数据的存取方法的步骤。

以上对本发明实施例所提供的一种元数据日志的存取方法、装置和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1