日志操作方法、装置及文件系统的制作方法

文档序号:6431275阅读:145来源:国知局
专利名称:日志操作方法、装置及文件系统的制作方法
技术领域
本发明实施例涉及文件系统技术领域,尤其是一种日志操作方法、装置及文件系统。
背景技术
日志系统(Journal)是文件系统的一个重要组成部分,是用来进行文件系统的一致性校验的重要工具。当文件系统意外崩溃、或存储系统意外断电后,文件系统的部分操作没有进行,内存中的数据和文件系统硬盘上的数据不一致。当文件系统系统再次启动后,首先需要根据日志系统进行系统的一致性校验,将崩溃前的操作进行完,将系统中不一致的数据校验完毕。最早使用日志系统的是数据库系统。在日志文件系统(Journal File System, 简称JFS)出现之后,文件系统开始引入日志系统。目前几乎所有的文件系统都包括日志系统,例如扩展日志式文件系统EXT3/EXT4、ReiserFS、U8位文件系统(kttabyte File System,简称 ZFS)、Lustre 文件系统、Hadoop 分布式文件系统(Hadoop Distributed File System,简称HDFS)、谷歌文件系统(Google FS)等。应用中,经常需要对日志系统进行各种操作,比如添加、删除、事务提交等,其中在某个事务被提交前,该事务记录的操作都是在虚拟的环境中进行的,只有该事务被提交时才将该事务对应的所有修改更新到存储系统中。现有的日志系统通常采用集中式架构,这将导致事务众多时,日志操作的速度非常慢。尤其是在分布式文件系统中,随着文件系统的文件和存储设备存储量的增大,现有的日志系统将成为整个系统的瓶颈。

发明内容
本发明实施例提供一种日志操作方法、装置及系统,用以解决现有技术中日志操作速度慢的问题。一方面,本发明实施例提供了一种日志操作方法,包括获取与日志树根连接的至少两个日志子树的寻址信息,所述至少两个日志子树与文件系统的至少两个目录子树对应;根据所述寻址信息查找到所述至少两个日志子树;对所述至少两个日志子树进行操作。另一方面,本发明实施例提供了一种日志操作装置,包括获取模块,用于获取与日志树根连接的至少两个日志子树的寻址信息,所述至少两个日志子树与文件系统的至少两个目录子树对应;查找模块,用于根据所述寻址信息查找到所述至少两个日志子树;操作模块,用于对所述至少两个日志子树进行操作。再一方面,本发明实施例提供一种文件系统,包括日志系统和至少两个目录子树;
所述日志系统,包括日志树根和与所述日志树根连接的至少两个日志子树,所述至少两个日志子树与所述至少两个目录子树对应;所述日志树根,用于存储所述至少两个目录子树的日志和所述至少两个日志子树的寻址信息;所述至少两个日志子树,分别用于存储对应的目录子树中目录和文件的日志。以上技术方案中的一个技术方案具有如下优点或有益效果本发明实施例采用文件系统中的日志系统划分成日志树根和至少两个日志子树, 所述至少两个日志子树与文件系统中的至少两个目录子树对应的技术手段,从而日志子树对应一个目录子树的内部操作,使得对一个日志子树中日志的操作不影响其他日志子树, 提高了日志的分布性和日志操作的独立性,当事务众多时可以并行地对所述至少两个日志子树进行操作,进而提高了日志操作的速度,当进行事务操作时,可以同时对多个事务表进行操作,从而可以提高一致性校验的性能。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例中分布式文件系统的一种物理结构示意图。图2为本发明实施例中文件系统的一种逻辑结构示意图。图3为本发明实施例提供的一种文件系统实施例的结构示意图。图4为图3所示实施例的一种应用示意图。图5为图3所示实施例的又一种应用示意图。图6为本发明实施例提供的一种日志操作方法实施例的流程示意图。图7为图6所示实施例中将第一日志子树拆分成至少两个事务表的一种流程示意图。图8为图6所示实施例中将第一日志子树拆分成至少两个事务表的又一种流程示意图。图9为本发明实施例提供的一种日志操作装置实施例的结构示意图。
具体实施例方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。为了对本发明实施例进行清楚详细的介绍,先介绍一下分布式文件系统。分布式文件系统一般是由客户端、元数据节点和对象存储节点组成,其物理结构如图1所示。其中,客户端是用户访问分布式文件系统的入口,用户的请求首先提交给客户端,由客户端发给分布式文件系统进行处理;元数据节点是分布式文件系统中的负责文件系统的元数据处理的节点,包括元数据的创建、修改、文件布局等;对象存储节点是实际存放数据的节点。最终,用户首先通过客户端访问元数据节点,然后将数据存放在对象存储节
;卜.ο在分布式文件系统的逻辑结构中,以命名空间为单位进行划分。在每个命名空间下面是目录和文件,每个命令空间及其目录和文件构成一个目录子树,如图2所示。应用中,对文件系统中目录或文件的任意操作均将导致对日志系统的操作,比如添加事务。另外,日志系统还定期发起事务提交,将日志系统的事务中记录的信息刷到文件系统,在提交后还需要定期删除已提交的事务。在对分布式文件系统进行一致性校验时,需要根据日志系统中的事务对文件系统中的数据进行校验。现有技术中集中式架构的日志系统使得对日志系统的操作速度非常慢,举例来说,若同时发生了对不同目录子树中的不同文件的操作, 基于集中式架构的日志系统,需要将这些操作对应的事务依次添加到日志系统中,日志操作速度非常慢,随着系统的增大、事务的增多,这严重影响了整个系统的性能。本发明实施例根据分布式文件系统中的目录结构,将日志系统设计为日志树根 (Journal Root)和日志子树(Journal Sub-tree)的结构,使得可以并行地对日志子树进行操作,提高了日志操作的速度。具体地,本发明实施例可以通过图3所示方法实现。图3为本发明实施例提供的一种文件系统实施例的结构示意图。如图3所示,该系统包括日志系统32和至少两个目录子树31 ;日志系统32,包括日志树根321和与日志树根321连接的至少两个日志子树322, 至少两个日志子树322与所述至少两个目录子树31对应;日志树根321,用于存储至少两个目录子树31的日志和寻址信息;至少两个日志子树322,分别用于存储对应的目录子树31中目录和文件的日志。这里的日志树根321存储的是整个分布式文件系统的目录子树31的操作,包括目录子树31的创建、修改、删除等。日志树根321由文件系统的日志系统创建,存放在某个元数据节点上。这里的寻址信息是所述日志子树存放位置的地址信息。日志子树之间彼此之间没有直接联系,是通过日志树根联系的。日志树根321中还存储了目录子树的地址信息, 以及目录子树与日志子树的对应关系。这里的每个日志子树对应一个目录子树,每个日志子树均由文件系统的日志系统根据其对应的目录子树创建,存储该目录子树的日志操作,包括目录和文件的创建、修改、 删除、写操作等。日志子树之间彼此之间没有直接联系,是通过日志树根联系的。日志子树存放在某个元数据节点上,较优地存放在负责该目录子树的元数据节点上。日志子树由至少一个事务组成。这里的事务是对文件系统的一个原子操作,例如写文件、删除目录等。每个事务都有一个唯一的事务号,该事务号有先后顺序,较优地,根据事务发生的时间进行排序。如图4所示,日志子树3221存放有事务T00,T01,T02,...,等。 日志子树3222中存放有事务 。, !, ,...,等。日志子树3223中存放事务TOO,Τ01, T02,...,等。日志子树之间彼此之间没有直接联系,是通过日志树根联系的,所以日志子树 3221、3222、3223之间的事务也没有关系,日志子树内的事务以事务号排序。所有日志子树的事务通常先保存在内存中,并定期刷新到硬盘上。在日志子树中,日志的内部结构定义如下。日志由一个日志头(Journal Header), 至少一个事务CTransaction)组成,如表1所示。
权利要求
1.一种日志操作方法,其特征在于,包括获取与日志树根连接的至少两个日志子树的寻址信息,所述至少两个日志子树与文件系统的至少两个目录子树对应;根据所述寻址信息查找到所述至少两个日志子树;对所述至少两个日志子树进行操作。
2.根据权利要求1所述的方法,其特征在于,所述对所述至少两个日志子树进行操作具体包括将所述至少两个日志子树中的第一日志子树拆分成至少两个事务表;对所述至少两个事务表进行操作。
3.根据权利要求2所述的方法,其特征在于,所述将所述至少两个日志子树中的第一日志子树拆分成至少两个事务表具体包括遍历所述第一日志子树中的事务,所述事务的个数为至少两个;解析所述事务,获取所述事务对应的目标路径;确定至少两个最短目标路径;将所述事务按照对应的目标路径与所述至少两个最短目标路径的关系,存储到与所述至少两个最短目标路径对应的至少两个事务表中的一个;为所述至少两个事务表分别建立一个表日志头,所述表日志头包含所述事务表中的事务的总数和上次提交的事务的事务号。
4.根据权利要求3所述的方法,其特征在于,所述将所述事务按照对应的目标路径与所述至少两个最短目标路径的关系,分别存储到与所述至少两个最短目标路径对应的至少两个事务表中的一个具体包括若所述事务对应的目标路径包含所述至少两个最短目标路径中的第一最短目标路径, 则将所述第一事务存储到与所述第一最短目标路径对应的第一事务表中。
5.根据权利要求3所述的方法,其特征在于,所述将所述第一日志子树拆分成至少两个事务表之后还包括若有新事务加入所述第一日志子树,且所述新事务对应的目标路径包含所述至少两个最短目标路径中的第二最短目标路径,则将所述新事务存储到与所述第二最短目标路径对应的第二事务表中。
6.根据权利要求3所述的方法,其特征在于,所述对所述至少两个事务表进行操作具体包括根据所述至少两个事务表中每个事务表表日志头中的上次提交的事务的事务号,对所述每个事务表中进行事务提交。
7.根据权利要求3所述的方法,其特征在于,所述将所述第一日志子树拆分成至少两个事务表之后还包括将所述至少两个事务表中的至少一个事务表转移到其他日志子树中。
8.根据权利要求1所述的方法,其特征在于,所述对所述至少两个日志子树进行操作具体包括根据所述至少两个日志子树,对所述至少两个目录子树进行一致性校验。
9.根据权利要求3所述的方法,其特征在于,所述对所述至少两个事务表进行操作具体包括根据所述至少两个事务表,对所述至少两个最短目标路径下的文件进行一致性校验。
10.一种日志操作装置,其特征在于,包括获取模块,用于获取与日志树根连接的至少两个日志子树的寻址信息,所述至少两个日志子树与文件系统的至少两个目录子树对应;查找模块,用于根据所述寻址信息查找到所述至少两个日志子树; 操作模块,用于对所述至少两个日志子树进行操作。
11.根据权利要求10所述的装置,其特征在于,还包括拆分模块,用于将所述至少两个日志子树中的第一日志子树拆分成至少两个事务表; 所述操作模块具体用于,对所述至少两个事务表进行操作。
12.根据权利要求11所述的装置,其特征在于,所述拆分模块具体包括遍历单元,用于遍历所述第一日志子树中的事务,所述事务的个数为至少两个; 解析单元,用于解析所述事务,获取所述事务对应的目标路径; 确定单元,用于确定至少两个最短目标路径;划分单元,用于将所述事务按照对应的目标路径与所述至少两个最短目标路径的关系,存储到与所述至少两个最短目标路径对应的至少两个事务表中的一个;建立单元,用于为所述至少两个事务表分别建立一个表日志头,所述表日志头包含所述事务表中的事务的总数和上次提交的事务的事务号。
13.根据权利要求12所述的装置,其特征在于,所述操作模块具体用于,根据所述至少两个事务表,对所述至少两个最短目标路径下的文件进行一致性校验。
14.一种文件系统,其特征在于,包括日志系统和至少两个目录子树;所述日志系统,包括日志树根和与所述日志树根连接的至少两个日志子树,所述至少两个日志子树与所述至少两个目录子树对应;所述日志树根,用于存储所述至少两个目录子树的日志和所述至少两个日志子树的寻址信息;所述至少两个日志子树,分别用于存储对应的目录子树中目录和文件的日志。
15.根据权利要求14所述的系统,其特征在于,所述至少两个日志子树中的一个日志子树包含日志头和至少两个事务表;所述日志头包含所述日志子树中的事务的总数;所述至少两个事务表分别包含表日志头和至少一个事务,所述表日志头包含所述事务表中的事务的总数和上次提交的事务的事务号;所述至少一个事务中的每个事务包括事务号、事务时间戳和至少一个数据块,所述至少一个数据块用于记录所述每个事务。
全文摘要
本发明实施例提供一种日志操作方法、装置及文件系统。文件系统包括日志系统和至少两个目录子树;所述日志系统,包括日志树根和与所述日志树根连接的至少两个日志子树,所述至少两个日志子树与所述至少两个目录子树对应;所述日志树根,用于存储所述至少两个目录子树的日志和所述至少两个日志子树的寻址信息;所述至少两个日志子树,分别用于存储对应的目录子树中目录和文件的日志。本发明实施例采用文件系统中的日志系统划分成日志树根和至少两个日志子树,所述至少两个日志子树与文件系统中的至少两个目录子树对应的技术手段,提高了日志的分布性和日志操作的独立性,进而提高了日志操作的速度。
文档编号G06F17/30GK102306168SQ20111024260
公开日2012年1月4日 申请日期2011年8月23日 优先权日2011年8月23日
发明者程菊生 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1