一种日志处理方法及相关设备与流程

文档序号:11251044
一种日志处理方法及相关设备与流程

本申请涉及文件系统领域,尤其涉及一种日志处理方法及相关设备。



背景技术:

在分布式文件系统中,存在一些操作频繁、操作记录需要持久化保存、操作记录内容简短、且可以归并为同一对象集合处理的操作,例如,配额(Quota)特性、快照特性、文件变更日志特性等。这些业务特性要求在修改元数据对象的同时,需要记录一条伴生日志信息。伴生日志信息必须具有可靠性,不能丢失;伴生日志信息同修改元数据对象的动作具备原子性,元数据对象操作成功,则伴生日志信息记录成功;如果元数据对象操作失败,则伴生日志信息记录失败,伴生日志信息的创建和记录是数据对象I/O操作的伴生行为,不会脱离I/O操作单独实现。

在现有技术方案中,本地文件系统上Quota特性实现,基本思路是对于一个Quota配置存在一个Quota文件,当与Quota配置相关的目录和文件有操作时,该目录或文件的空间累计使用情况会记录在节点(node)信息中,这些node信息会定期同步到Quota文件中。定期同步就避免了即时同步对Quota文件的频繁操作,同时会有独立的进程对Quota信息进行资源的分配和限制。分布式文件系统上Quota特性实现,基本思路就是配备高性能、高可靠性的数据库保存Quota信息;或者通过独立线程来管理归并Quota记录。

但是,对于分布式文件系统,通过Quota文件和Quota进程实现方式已经不适用,分布在集群不同host主机上的node信息、和Quota文件之间要增加通信信道完成信息同步,并且分布式文件系统的文件存储量更大,文件操作更频繁,这样就会形成瓶颈,无法做到操作和Quota记录同步。



技术实现要素:

本申请实施例所要解决的技术问题在于增值业务不易实现以及操作无法保持同步,提供一种日志处理方法及相关设备。

第一方面,本申请实施例提供了一种日志处理方法,所述方法应用于分布式文件系统,所述分布式文件系统包括元数据服务或客户端模块、对象存储模块、数据服务模块以及数据对象模块,包括:所述元数据服务或客户端模块当发起数据或元数据的输入输出I/O操作时,获取I/O上下文,所述I/O上下文包括数据对象信息和伴生日志信息;所述对象存储模块与所述数据服务模块通信,对所述伴生日志信息进行处理,并将处理后的所述伴生日志信息与所述数据对象信息一起写入所述数据对象模块中。从而更加容易实现文件元数据和数据操作相关的增值业务,保持伴生日志信息与I/O操作事务的一致性,以及由于可以在数据对象模块的同HOST上的多个磁盘保存多份伴生日志信息,因此提高伴生日志信息的可靠性。

在一种可能的设计中,所述对象存储模块将所述伴生日志信息转发给所述数据服务模块;所述数据服务模块根据所述伴生日志信息的信息类型以及所述数据对象信息,确定对所述伴生日志信息处理方式,并按照所述处理方式将所述伴生日志信息写入到所述数据对象模块中。

在另一种可能的设计中,所述对象存储模块与所述数据服务模块通信,对所述伴生日志信息的进行处理,并将处理后的所述伴生日志信息写入到所述数据对象模块中之后,所述对象存储模块与所述数据服务模块通信,获取所述数据对象模块中的所述伴生日志信息以提供查询或归档处理。

在另一种可能的设计中,所述伴生日志信息包括资源配额计数日志,和配额标识;所述元数据服务或客户端模块当确定存储资源增加或释放时,下发所述资源配额计数日志;所述对象存储模块将所述资源配额计数日志添加到所述数据对象模块中所述配额标识对应的计数器对象中。

在另一种可能的设计中,如果消耗的存储资源增加,所述元数据服务或客户端模块下发增加资源配额的计数日志,对象存储模块在处理该条计数日志时,将消耗值加到其数据对象模块上的磁盘阵列中的配额标识对应的计数器对象中。

在另一种可能的设计中,所述元数据服务或客户端模块删除文件或者缩短文件时,下发资源配额释放的日志信息,用负值表示是释放存储资源,对象存储模块将负值加到计数器对象的数值中。

在另一种可能的设计中,所述伴生日志信息还包括资源配额消耗值;所述对象存储模块将所述资源配额计数日志添加到所述数据对象模块中所述配额标识对应的计数器对象中之后,所述对象存储模块接收文件系统层发送的资源读取请求;所述对象存储模块统计所述数据对象模块中的所有磁盘阵列上的所述配额标识对应的资源配额消耗值;所述对象存储模块将统计的所述资源配额消耗值返回给所述文件系统层。

在另一种可能的设计中,所述伴生日志信息包括快照跟踪日志和快照标识,所述元数据服务或客户端模块当受快照保护的文件发生修改操作且在写入所述数据对象信息时,获取所述快照跟踪日志,所述快照跟踪日志包括修改操作前的快照版本与当前版本的差异;所述对象存储模块将所述快照跟踪日志添加到所述数据对象模块中的所述快照标识对应的跟踪文件中。

在另一种可能的设计中,如果受快照保护的文件在配置快照后第一次发生修改操作,所述对象存储模块将所述快照跟踪日志添加到所述数据对象模块中的所述快照标识对应的跟踪文件中,如果再次发生修改操作,则不需记录。

在另一种可能的设计中,所述对象存储模块将所述快照跟踪日志添加到所述数据对象模块中的所述快照标识对应的跟踪文件中之后,所述对象存储模块读取所述数据对象模块上的所述快照标识对应的所述快照跟踪日志以对所述快照进行删除或回滚操作。

第二方面,本申请实施例提供了一种日志处理装置,该装置被配置为实现上述第一方面中终端所执行的方法和功能,由硬件/软件实现,其硬件/软件包括与上述功能相应的单元。

第三方面,本申请提供了一种日志处理设备,包括:处理器、存储器和通信总线,其中,所述通信总线用于实现所述处理器和存储器之间连接通信,处理器执行所述存储器中存储的程序用于实现上述第一方面提供的一种日志处理方法中的步骤。

本申请的又一方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

本申请的又一方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

附图说明

为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。

图1是本申请实施例提供的一种分布式文件系统的结构示意图;

图2是本申请实施例提供的一种日志处理方法的流程示意图;

图3是本申请实施例提供的一种I/O上下文的示意图;

图4是本申请实施例提供的一种日志处理装置的结构示意图;

图5是本申请实施例提出的一种日志处理设备的结构示意图。

具体实施方式

下面结合本申请实施例中的附图对本申请实施例进行描述。

请参见图1,图1是本申请实施例提供的一种分布式文件系统的结构示意图,该分布式文件系统包括元数据服务或客户端模块、对象存储模块(Object-based Storage,OBS)、数据服务模块(Data Service,DS)以及数据对象模块。其中,元数据服务或客户端模块可以包括客户端(Client Agent,CA)或元数据服务(Metadata Service,MDS),CA负责数据的I/O操作,MDS负责元数据I/O操作,CA和MDS都是调用OBS模块提供的API函数完成I/O操作读写。对象存储模块包括日志API接口和IO操作的API接口,OBS提供OBS_Write接口完成I/O操作和伴生日志信息的写入操作,OBS提供API接口OBS_ReadLog接口用于日志的读取查询操作。数据服务模块包括日志客户端(Log Client),日志服务(Log Service)、日志合并(Log Merger)以及日志记录(Log Recorder)等等,OBS与分布在不同Host上的DS模块的Log Agent组件通信来处理伴生日志信息,包括:Log Service提供日志查询服务,Log Merger负责冗余日志的收集与归并,Log Recorder为DS的内部日志记录者提供日志记录接口。数据对象模块包括磁盘1、磁盘2、磁盘3和磁盘4等磁盘阵列,数据对象模块用于将上层下发的内容存储到日志对象中。

请参见图2,图2是本申请实施例提供的一种日志处理方法的流程示意图,所述方法应用于分布式文件系统,所述分布式文件系统包括元数据服务或客户端模块、对象存储模块、数据服务模块以及数据对象模块。该方法包括但不限于如下步骤:

S201,所述元数据服务或客户端模块当发起数据或元数据的输入输出I/O操作时,获取I/O上下文,所述I/O上下文包括数据对象信息和伴生日志信息。

具体实现中,在CA发起数据的I/O操作或MDS发起元数据的I/O操作时,调用对象存储模块的OBS_Write接口函数,开始写入数据对象信息,并提供伴生日志信息。如图3所示,图3是本申请实施例提供的一种I/O上下文的示意图。其中,写入的I/O上下文包括数据buffer信息和伴生日志信息,伴生日志信息是随数据对象信息一起开始写入的。

S202,所述对象存储模块与所述数据服务模块通信,对所述伴生日志信息进行处理,并将处理后的所述伴生日志信息与所述数据对象信息一起写入所述数据对象模块中。

具体实现中,所述对象存储模块将所述伴生日志信息转发给所述数据服务模块;所述数据服务模块根据所述伴生日志信息的信息类型以及所述数据对象信息,确定对所述伴生日志信息处理方式,并按照所述处理方式将所述伴生日志信息写入到所述数据对象模块中。

例如,在OBS接收到I/O上下文之后,如果确定I/O上下文中包含伴生日志信息,则OBS将伴生日志信息转发各个DS。DS在接收到包含有伴生日志信息的I/O上下文之后,交由LogAgent模块处理,LogAgent根据伴生日志信息中的类型以及数据对象信息,确定该伴生日志信息是追加到已有日志对象中,还是创建新的日志对象记录日志。

可选的,在将所述伴生日志信息写入到所述数据对象模块中之后,所述对象存储模块与所述数据服务模块通信,获取所述数据对象模块中的所述伴生日志信息以提供查询或归档处理。例如,可以首先通过OBS提供的OBS_LogRead接口获取日志信息,然后上层应用对日志事件进行查询或归档处理。

可选的,所述伴生日志信息包括资源配额计数日志和配额标识;所述元数据服务或客户端模块当写入所述数据对象信息且确定存储资源增加或释放时,下发所述资源配额计数日志;所述对象存储模块将所述资源配额计数日志添加到所述数据对象模块中所述配额标识对应的计数器对象中。

进一步的,如果消耗的存储资源增加,所述元数据服务或客户端模块下发增加资源配额的计数日志,对象存储模块在处理该条计数日志时,将消耗值加到其数据对象模块上的磁盘阵列中的配额标识对应的计数器对象中。所述元数据服务或客户端模块删除文件或者文件时,下发资源配额释放的日志信息,用负值表示是释放存储资源,对象存储模块将负值加到计数器对象的数值中。

例如,配额(Quota)是系统分配给用户的可用的存储资源,用户在写入数据对象信息时,会消耗系统分配的存储资源,用户删除文件或者缩短文件时,会释放存储资源。每一个Quota对应有唯一的配额标识(QuotaID),该QuotaID在每个数据对象模块上都有一个相应的计数器对象记录其存储资源消耗,整个QuotaID的使用值是所有数据对象模块上的计数器对象的消耗值总和。CA在写数据对象信息时,如果消耗的存储资源增加,会同时下发增加资源配额的计数日志,对象存储模块在处理该计数日志时,将消耗值加到数据对象模块中的所在磁盘阵列上QuotaID对应的计数器对象中。如果消耗的存储资源涉及多个Quota,对象存储模块按照伴生日志信息所记录的信息分别追加到不同的计数器对象中。CA删除文件或者缩短文件时,在操作接口里会携带Quota释放的日志信息,用负值表示是释放系统资源。对象存储模块处理该日志信息,将负值加到计数器对象的数值中。如果消耗的存储资源涉及多个Quota,对象存储模块分别进行处理。

可选的,在所述对象存储模块将所述资源配额计数日志添加到所述数据对象模块中所述配额标识对应的计数器对象中之后,所述对象存储模块接收文件系统层发送的资源读取请求;所述对象存储模块统计所述数据对象模块中的所有磁盘阵列上的所述配额标识对应的资源配额消耗值;所述对象存储模块将统计的所述资源配额消耗值返回给所述文件系统层。

可选的,所述元数据服务或客户端模块当受快照保护的文件发生修改操作且在写入所述数据对象信息时,获取所述快照跟踪日志,所述快照跟踪日志包括修改操作前的快照版本与当前版本的差异;所述对象存储模块将所述快照跟踪日志添加到所述数据对象模块中的所述快照标识对应的跟踪文件中。其中,如果元数据发生变化,快照跟踪日志记录的内容为父目录的FID,如果数据条带发生变化时快照跟踪日志记录的内容为被改变的条带号。

例如,受快照保护的文件的数据发生修改操作,在CA写数据对象时,从Node信息中能回溯到该文件受快照保护,在调用OBS_Write接口时增加一条快照跟踪日志,如果受快照保护的文件在配置快照后第一次发生修改操作,对象存储模块将所述快照跟踪日志添加到所述数据对象模块中的快照标识对应的跟踪文件中,如果已经记录再次发生修改操作,则不需记录。当受快照保护的文件的元数据发生修改操作,在MDS对元数据对象写入磁盘时调用OBS_Write接口,增加一条快照跟踪日志,日志类型为快照TRACK,对象存储模块在更新元数据对象时在数据对象模块中将快照跟踪日志添加到所述快照标识对应的跟踪文件中。

可选的,所述对象存储模块读取所述数据对象模块上的所述快照标识对应的所述快照跟踪日志以对所述快照进行删除或回滚操作。例如,进行快照删除,快照回滚等操作时,需要读取某个快照标识对应的快照跟踪日志,则调用OBS_LogRead接口依次读取所有数据对象模块上该快照标识对应的快照跟踪日志并返回。

在本申请实施例中,通过伴生日志信息与数据对象信息一起写入数据对象模块,从而使得与文件元数据和数据操作紧密相关的增值业务可以轻松实现,例如,文件变更日志特性,用于记录文件系统中文件新增,删除,读写,重命名等变更操作。同时也易于扩展到S3接口的对象存储业务,开发其他增值业务。另外,由于伴生日志信息实现是基于事务的,I/O操作事务成功,则日志成功记录,I/O操作失败,则日志记录失败,保障了增值业务的准确性。由于可以在数据对象模块的同HOST上的多个磁盘保存多份伴生日志信息,因此提高伴生日志信息的可靠性。

请参见图4,图4是本申请实施例提供的一种日志处理装置的结构示意图。如图所示,所述装置包括元数据服务或客户端模块401、对象存储模块402、数据服务模块403以及数据对象模块404,其中:

元数据服务或客户端模块401,用于当发起数据或元数据的输入输出I/O操作时,获取I/O上下文,I/O上下文包括数据对象信息和伴生日志信息;

对象存储模块402,用于与数据服务模块403通信,对伴生日志信息进行处理,并将处理后的伴生日志信息与数据对象信息一起写入数据对象模块404中。

可选的,对象存储模块402,还用于将伴生日志信息转发给数据服务模块;数据服务模块403,还用于根据伴生日志信息的信息类型以及数据对象信息,确定对伴生日志信息处理方式,并按照处理方式将伴生日志信息写入到数据对象模块404中。

可选的,对象存储模块402,还用于与数据服务模块通信,获取数据对象模块中的伴生日志信息以提供查询或归档处理。

可选的,伴生日志信息包括资源配额计数日志和配额标识;元数据服务或客户端模块401,还用于当写入数据对象信息且确定存储资源增加或释放时,下发资源配额计数日志;对象存储模块402,还用于将资源配额计数日志添加到数据对象模块404中配额标识对应的计数器对象中。

可选的,伴生日志信息还包括资源配额消耗值;对象存储模块402,还用于接收文件系统层发送的资源读取请求;统计数据对象模块404中的所有磁盘阵列上的配额标识对应的资源配额消耗值;将统计的资源配额消耗值返回给文件系统层。

可选的,伴生日志信息包括快照跟踪日志和快照标识;元数据服务或客户端模块401,还用于当受快照保护的文件发生修改操作且在写入数据对象信息时,获取快照跟踪日志,快照跟踪日志包括修改操作前的快照版本与当前版本的差异;对象存储模块402,还用于将快照跟踪日志添加到数据对象模块404中的快照标识对应的跟踪文件中。

可选的,对象存储模块402,还用于读取数据对象模块404上的快照标识对应的快照跟踪日志以对快照进行删除或回滚操作。

需要说明的是,各个模块的实现还可以对应参照图2所示的方法实施例的相应描述,执行上述实施例中系统所执行的方法和功能。

请继续参考图5,图5是本申请提出的一种日志处理设备的结构示意图。如图所示,该设备可以包括:至少一个处理器501,例如CPU,至少一个通信接口502,至少一个存储器503和至少一个通信总线504。其中,通信总线504用于实现这些组件之间的连接通信。其中,本申请实施例中设备的通信接口502用于与其他节点设备进行信令或数据的通信。存储器503可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器503可选的还可以是至少一个位于远离前述处理器501的存储装置。存储器503中存储一组程序代码,且处理器501执行存储器503中上述终端所执行的程序。

通过元数据服务或客户端模块当发起数据或元数据的输入输出I/O操作时,获取I/O上下文,所述I/O上下文包括数据对象信息和伴生日志信息;

通过对象存储模块与数据服务模块通信,对所述伴生日志信息进行处理,并将处理后的所述伴生日志信息与所述数据对象信息一起写入数据对象模块中。

进一步的,处理器还可以与存储器和通信接口相配合,执行上述申请实施例中日志处理装置的操作。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。

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