一种面向分布式文件系统的协作式日志系统的制作方法

文档序号:7867899阅读:123来源:国知局
专利名称:一种面向分布式文件系统的协作式日志系统的制作方法
一种面向分布式文件系统的协作式日志系统技术领域
本发明属于分布式文件系统,具体涉及一种面向分布式文件系统的协作式日志系统,以提高分布式文件系统的写性能、恢复性能。
背景技术
互联网和多媒体应用使得数字信息呈爆炸式增长趋势,在质和量两方面对存储的需求也越来越大,面对这样的海量数据存储需求,运行于成百上千甚至成千上万存储设备的大规模分布式文件系统应运而生,并迅速应用于多种领域。分布式文件系统包括多个元数据管理节点和多个客户节点,每个客户节点分别连接各元数据管理节点,每个元数据管理节点又连接多个数据存储节点。随着分布式文件系统使用的存储设备增多,分布式文件系统遭遇不可预料事件的概率也大大增加,为保障系统提供服务的时间,保证系统运行的正确性,必须使用日志系统。许多分布式文件系统如Lustre, Google FileSystem, Hadoop File System等都使用了日志系统。
日志系统由管理日志记录的各类模块和日志构成,首先文件系统在磁盘上为日志系统开辟额外存储空间,在文件系统对文件数据进行修改操作之前会将这些操作生成日志记录并写入到日志中,固定日志记录。在这种情况下,一旦遭遇宕机,日志系统就可以利用日志中的日志记录将文件系统恢复到宕机前的状态。日志系统的最大缺陷是所有文件更新都必须先固定日志记录,每次文件更新操作都要经历两次写操作,一次写入日志的固定日志记录操作,一次才是真正写入文件系统,额外的固定日志记录操作会造成文件系统性能下降,特别是使用磁盘这种低速存储设备来固定日志记录,文件系统性能下降更为严重。
因为分布式文件系统下元数据管理节点或数据存储节点都是独立运行,都拥有自己的存储设备并且独自存取自己的日志记录。当存储设备出现设备故障时可能导致日志记录无法读取,导致系统恢复操作无法进行,最终致使整体分布式文件系统无法使用。发明内容
本发明提供一种面向分布式文件系统的协作式日志系统,解决因为设备故障导致日志记录丢失致使系统恢复操作无法进行的问题,提高分布式文件系统的写性能、恢复性倉泛。
为描述方便起见,本发明所提供的协作式日志系统,运行在一个元数据管理节点及其连接的N个数据存储节点上,每个数据存储节点上存储有自身的日志,N > 2 ;
本发明所提供的一种面向分布式文件系统的协作式日志系统,包括日志请求模块、分发模块、N个传输模块、N个一致性保证模块、N个记录添加模块、N个记录回收模块和 N个恢复模块,N ^ 2 ;其特征在于
(I)日志请求模块,运行于元数据管理节点或数据存储节点,
当收到文件系统的修改操作命令时,判断记录添加模块是否发出暂停请求,是则等待记录回收模块发送的回收结束信号,收到该回收结束信号 ,再形成日志记录添加请求,否则直接形成日志记录添加请求;然后将日志记录添加请求发送到分发模块;日志记录添加请求由请求类型和多条日志记录组成,请求类型为添加记录,各条日志记录均具有序号;
当收到文件系统的恢复命令时,形成恢复请求,将恢复请求发送到分发模块并等待,接收到恢复模块传送的各条日志记录后,将它们传送到文件系统;恢复请求由请求类型和多个日志记录序号组成,请求类型为恢复;
(2)分发模块,运行于元数据管理节点或数据存储节点,分别向各传输模块发送连接请求,建立网络传输通道;接收到日志记录添加请求或恢复请求后,将其通过组播方式并行传输到各传输模块;连接请求由请求类型、本地网络地址、目标网络地址和端口号组成,请求类型为连接,本地网络地址为分发模块所在节点的IP地址、目标网络地址为传输模块所在节点的IP地址,端口号为网络传输通道占用的端口号码;
(3) N个传输模块完全相同,分别运行于各数据存储节点,接收到连接请求后,建立网络传输通道;接收到日志记录添加请求后,将其发送到所在数据存储节点的一致性保证模块;接收到恢复请求后,将其发送到所在数据存储节点的恢复模块;接收到记录回收请求后,将其发送到各记录回收模块;
(4)N个一致性保证模块完全相同,分别运行于各数据存储节点,向其它各数据存储节点的一致性保证模块发送所接收日志记录添加请求中的日志记录最大序号,同时接收其它各数据存储节点的一致性保证模块所发送的日志记录最大序号,并记载与自身发送的日志记录最大序号相同的所接收的日志记录最大序号的数目,判断该数目是否超过数据存储节点总数的一半,是则将所接收的日志记录添加请求发送到所在数据存储节点的记录添加模块,否则继续等待传输模块的下一个日志记录添加请求;
(5)N个记录添加 模块完全相同,分别运行于各数据存储节点,判断所在数据存储节点上日志剩余空间是否满足所述日志记录添加请求中各条日志记录的总长度,是则将各条日志记录添加到日志中;否则向所在数据存储节点的传输模块发出记录回收请求,并向日志请求模块发出暂停请求;记录回收请求由请求类型和回收记录数目组成,请求类型为回收,回收记录数目为日志记录添加请求中日志记录条数的M倍,M彡2 ;
(6)N个记录回收模块完全相同,分别运行于各数据存储节点,收到记录回收请求后,从本数据存储节点上日志起始位置开始回收记录回收请求中回收记录数目的日志记录,回收完成后向日志请求模块发送回收结束信号;
(7) N个恢复模块完全相同,分别运行于各数据存储节点,接收到恢复请求后,根据恢复请求中的日志记录序号将相应序号的日志记录传输到日志请求模块。
客户节点向元数据管理节点发出元数据操作请求,元数据管理节点产生相应的操作日志记录需要存储,通过日志请求模块形成日志记录添加请求;元数据管理节点宕机重启后需要一部分日志记录进行恢复,通过日志请求模块形成恢复请求;分发模块同样运行在元数据管理节点上并且已经与多个数据存储节点建立了网络传输通道;传输模块运行在数据存储节点上接收请求;一致性保证模块运行在数据存储节点上,通过与各数据存储节点的一致性保证模块通信,发送日志记录添加请求中最大日志记录序号,只有接收到超过半数的数据存储节点发送的编号与其相同才将日志记录添加请求发送到记录添加模块;记录添加模块运行在数据存储节点上进行日志记录的添加与固定;记录回收模块运行在数据存储节点上接收记录回收请求后进行日志记录回收操作并通知日志请求模块;恢复模块运行在数据存储节点上根据恢复请求中的日志记录序号将相应序号的日志记录传输到日志请求模块。
本发明利用分布式文件系统中网络传输效率高于存储设备低速传输效率的特点, 将单个元数据管理节点或数据存储节点产生的日志数据通过网络以组播方式并行传输到各个数据存储节点,将日志记录固定操作分配到多个节点上同时进行,提高了单个节点的写性能。同时由于将重要的日志记录分布式存储在多个数据存储节点上,避免了单个数据存储节点的存储设备故障造成的不可恢复的危害,提高了分布式文件系统整体的可靠性。
本发明在系统恢复时通过高速网络并行从各个数据存储节点获得部分日志记录, 最终拼接形成完整日志记录信息,相比单个数据存储节点从存储设备读取完整日志记录进行恢复操作拥有更高的性能,提高了分布式文件系统恢复的性能。
本发明符合日志系统的基本功能要求,包括可用性和通用性,并且不降低文件系统性能,解决了因为设备故障导致日志记录丢失致使系统恢复操作无法进行的问题,提高分布式文件系统的写性能和恢复性能。


图1为分布式文件系统结构示意图2为本发明的实施例示意图3为日志记录格式不意图4为日志记录分布到各数据存储节点过程示意图5为数据存储节点进行日志记录添加与回收的流程示意图
图6为日志恢复过程示意图。
具体实施方式
下面结合附图和实施例对本发明进一步说明。
如图1所示,分布式文件系统由多个元数据管理节点、多个客户节点、多个数据存储节点以及用于节点间互连的高速网络构成。每个客户节点分别连接各元数据管理节点, 每个元数据管理节点又连接多个数据存储节点,客户节点是使用整个分布式文件系统的客户终端;元数据管理节点负责管理文件系统的元数据信息;数据存储节点负责向客户节点提供存储空间和存储服务。
如图2所不,本发明的实施例,包括日志请求模块、分发模块、3个传输模块、3个一致性保证模块、3个记录添加模块、3个记录回收模块和3个恢复模块;本实施例运行在一个元数据管理节点及其连接的3个数据存储节点上,每个数据存储节点上存储有自身的日志;
日志请求模块和分发模块运行于元数据管理节点,3个数据存储节点上均运行传输模块、一致性保证模块、记录添加模块、记录回收模块和恢复模块;
如图3所示, 一条日志记录包括七个部分幻数(Magic Number)、日志编号 (Journal Number)、记录序号(Sequence Number)、记录类型(Type)、记录长度(Length)、 日志记录数据(Log data)和校验和(Checksum)。其中,幻数用来验证日志记录的合法性;日志编号就是此条日志记录所属的日志的编号,数据存储节点上可能管理着多个系统的日志,故需要使用日志编号来确定某条日志记录是属于哪个日志;记录序号是日志记录本身在日志中的序号,日志请求模块可以根据这个记录序号计算日志记录分布在哪个数据存储节点上,记录添加模块也会根据这个记录序号将日志记录插入到对应的位置上进行管理; 记录类型用来表示日志记录的类型,包括事务开始类型,写操作类型,删除操作类型,事务结束类型等;记录长度用来表示这条日志记录需要的空间大小,因为日志记录类型不同,日志记录数据长度也可能有变化;日志记录数据就是文件系统产生的操作记录数据,文件系统宕机后可以通过这些数据进行恢复;校验和用来验证日志记录存储的完整性。
如图4所示,本实施例需要将记录序号为O到2的日志记录添加到三个数据存储节点;具体描述如下
日志请求模块形成日志记录添加请求发送到分发模块;该日志记录添加请求由请求类型和三条日志记录组成,请求类型为添加记录,三条日志记录的记录序号分别为0,1, 2 ;
分发模块已经与三个数据存储节点建立了网络传输通道;接收到日志记录添加请求后将其通过组播方式并行传输到三个数据存储节点上的传输模块;
传输模块接收到日志记录添加请求后发送到所在数据存储节点上的一致性保证模块;向其它两个数据存储节点的一致性保证模块发送所接收日志记录添加请求中的日志记录最大序号,应该等于2 ;同时接收其它两个数据存储节点发送的日志记录最大序号,并记载与自身发送的日志记录最大序号相同的所接收的日志记录最大序号的数目,当数目等于2时,则将所接收的日志记录添加请求发送到所在数据存储节点的记录添加模块;
记录添加模块负责将日志记录添加请求中的三条日志记录添加到所在数据存储节点上的日志中。
如图5所示,数据存储节点进行日志记录添加与回收,过程如下
1.日志请求模块接收到文件系统命令后产生相应日志添加请求;
2.添加模块接收到请求后尝试进行日志添加操作,需要判断日志剩余空间是否满足所述日志记录添加请求中各条日志记录的总长度,如果满足则跳转到第3步,否则跳转到第4步;
3.日志剩余空间满足,协调一致性保证模块与记录添加模块进行日志记录的添加操作,添加操作完成后跳转到第7步;
4.日志剩余空间不满足,向日志请求模块发出暂停请求,要求暂停产生日志记录添加请求,同时向所在数据存储节点的传输模块发出记录回收请求;
5.传输模块接收日志记录回收请求后通知记录回收模块,开始日志记录回收操作,从日志起始位置开始回收日志记录;
6.如果日志记录回收成功则向日志请求模块发送回收结束信号,恢复产生日志记录添加请求并跳转到第I步重新开始,否则继续第7步;
7.操作完毕。
如图6所示,本实施 例需要记录序号为O到2的日志记录进行恢复,具体描述如下
日志请求模块形成恢复请求发送到分发模块;该恢复请求由请求类型和三个日志记录序号组成,请求类型为恢复,三个日志记录序号分别为0,1,2 ;
分发模块已经与三个数据存储节点建立了网络传输通道;接收到恢复请求后将其通过组播方式并行传输到三个数据存储节点上的传输模块;
传输模块接收到 恢复请求后发送到所在数据存储节点上的恢复模块,恢复模块根据恢复请求中的日志记录序号将相应序号的日志记录传输到日志请求模块;其中第一个数据存储节点传输记录序号为O和I的日志记录,第二个数据存储节点传输记录序号为I 和2的日志记录,第三个数据存储节点传输记录序号为O和2的日志记录;
现在日志请求模块已经完整接收到记录序号为O到2的日志记录,将它们传送到文件系统,文件系统可以利用这些日志记录进行恢复。
权利要求
1.一种面向分布式文件系统的协作式日志系统,包括日志请求模块、分发模块、N个传输模块、N个一致性保证模块、N个记录添加模块、N个记录回收模块和N个恢复模块,N > 2 ;其特征在于 (1)日志请求模块,运行于元数据管理节点或数据存储节点, 当收到文件系统的修改操作命令时,判断记录添加模块是否发出暂停请求,是则等待记录回收模块发送的回收结束信号,收到该回收结束信号,再形成日志记录添加请求,否则直接形成日志记录添加请求;然后将日志记录添加请求发送到分发模块;日志记录添加请求由请求类型和多条日志记录组成,请求类型为添加记录,各条日志记录均具有序号; 当收到文件系统的恢复命令时,形成恢复请求,将恢复请求发送到分发模块并等待,接收到恢复模块传送的各条日志记录后,将它们传送到文件系统;恢复请求由请求类型和多个日志记录序号组成,请求类型为恢复; (2)分发模块,运行于元数据管理节点或数据存储节点,分别向各传输模块发送连接请求,建立网络传输通道;接收到日志记录添加请求或恢复请求后,将其通过组播方式并行传输到各传输模块;连接请求由请求类型、本地网络地址、目标网络地址和端口号组成,请求类型为连接,本地网络地址为分发模块所在节点的IP地址、目标网络地址为传输模块所在节点的IP地址,端口号为网络传输通道占用的端口号码; (3)N个传输模块完全相同,分别运行于各数据存储节点,接收到连接请求后,建立网络传输通道;接收到日志记录添加请求后,将其发送到所在数据存储节点的一致性保证模块;接收到恢复请求后,将其发送到所在数据存储节点的恢复模块;接收到记录回收请求后,将其发送到各记录回收模块; (4)N个一致性保证模块完全相同,分别运行于各数据存储节点,向其它各数据存储节点的一致性保证模块发送所接收日志记录添加请求中的日志记录最大序号,同时接收其它各数据存储节点的一致性保证模块所发送的日志记录最大序号,并记载与自身发送的日志记录最大序号相同的所接收的日志记录最大序号的数目,判断该数目是否超过数据存储节点总数的一半,是则将所接收的日志记录添加请求发送到所在数据存储节点的记录添加模块,否则继续等待传输模块的下一个日志记录添加请求; (5)N个记录添加模块完全相同,分别运行于各数据存储节点,判断所在数据存储节点上日志剩余空间是否满足所述日志记录添加请求中各条日志记录的总长度,是则将各条日志记录添加到日志中;否则向所在数据存储节点的传输模块发出记录回收请求,并向日志请求模块发出暂停请求;记录回收请求由请求类型和回收记录数目组成,请求类型为回收,回收记录数目为日志记录添加请求中日志记录条数的M倍,M彡2 ; (6)N个记录回收模块完全相同,分别运行于各数据存储节点,收到记录回收请求后,从本数据存储节点上日志起始位置开始回收记录回收请求中回收记录数目的日志记录,回收完成后向日志请求模块发送回收结束信号; (7)N个恢复模块完全相同,分别运行于各数据存储节点,接收到恢复请求后,根据恢复请求中的日志记录序号将相应序号的日志记录传输到日志请求模块。
全文摘要
一种面向分布式文件系统的协作式日志系统,属于分布式文件系统,解决设备故障导致日志记录丢失致使系统恢复操作无法进行的问题,提高分布式文件系统的写性能、恢复性能。本发明包括日志请求模块、分发模块、N个传输模块、N个一致性保证模块、N个记录添加模块、N个记录回收模块和N个恢复模块,日志请求模块和分发模块运行于元数据管理节点或数据存储节点,各数据存储节点上均运行传输模块、一致性保证模块、记录添加模块、记录回收模块和恢复模块。本发明利用分布式文件系统中网络传输效率高于存储设备低速传输效率的特点,在保证日志可靠性及发挥正常日志作用的前提下,提高了分布式文件系统的写性能和恢复性能。
文档编号H04L29/08GK103051681SQ20121052167
公开日2013年4月17日 申请日期2012年12月6日 优先权日2012年12月6日
发明者李洁琼, 王芳, 冯丹, 郑超, 杜鑫 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1