一种samba服务器集群下的高速数据备份方法与流程

文档序号:14869018发布日期:2018-07-06 12:29阅读:276来源:国知局

本发明涉及一种samba服务器集群下的高速文件备份方法,具体涉及一种集群环境下基于cifs文件传输协议的高速数据备份方法。



背景技术:

在军队、政府、银行和企业的私有内部网中,存在着很多nas服务器,在当前大数据风靡的信息时代,数据量动辄几t至几百t,这对于数据备份的性能和准确性来说无疑是巨大的挑战。数据备份类型主要分为全量备份和增量备份两种类型,全量备份对需要备份的数据进行全盘备份,主要依赖于硬件性能和网络环境;增量备份则针对有变化的文件进行备份。现有的增量备份技术主要通过监控需要备份的文件或目录上特定的文件系统事件来决定是否备份该文件或目录,对文件系统事件的监控需要为每个文件创建监控标志,系统运行过程中需要一直监控文件系统事件,这将消耗系统很大的cpu和内存性能,当数据量急剧增长时,这种做法将变得非常不可行。



技术实现要素:

本发明要解决的技术问题:针对现有技术的上述问题,提供一种samba服务器集群下的高速数据备份方法,本发明能够解决samba服务器集群环境下增量备份效率低、占用资源过高的问题,具有备份效率高、备份速度快、占用资源低的优点。

为了解决上述技术问题,本发明采用的技术方案为:

一种samba服务器集群下的高速数据备份方法,实施步骤包括:

1)预先通过备份设备b对存储设备a完成初始数据备份;

2)等待数据备份操作被激活,当数据备份操作被激活时跳转执行下一步;

3)向各个samba服务器节点请求获取差异文件列表,所述差异文件列表包括samba服务器集群下各samba服务器节点截获的客户端发起的samba服务请求的目标文件信息;

4)将所有的差异文件列表合并;

5)基于合并后的差异文件列表通过备份设备b对存储设备a进行数据差异备份。

优选地,步骤4)中将所有差异文件列表合并后还包括对列表中的项目进行排序、去重的过程。

优选地,步骤3)中请求获取的差异文件列表包括删除差异文件列表、一般差异文件列表,所述删除差异文件列表用于记录客户端发起的删除文件类samba服务请求的目标文件信息,所述一般差异文件列表用于记录客户端发起的新增或修改类samba服务请求的目标文件信息;步骤4)将所有的差异文件列表合并后得到合并后的删除差异文件列表以及一般差异文件列表。

优选地,步骤5)的详细步骤包括:

5.1)将合并后的删除差异文件列表中的目标文件从备份设备b中删除;

5.2)针对合并后的一般差异文件列表中的每一个目标文件,将目标文件的存储数据划分为数据块,针对存储设备a和备份设备b中的数据块进行比较判断是否发生变动,且将发生变动的数据块从存储设备a复制到备份设备b,并在备份设备b中组合生成与目标文件相同的临时文件,并将该临时文件重命名覆盖目标文件对应的备份文件。

优选地,步骤5.2)的详细步骤包括:

5.2.1)存储设备a从合并后的一般差异文件列表中遍历选择一个当前目标文件a1;

5.2.2)存储设备a将当前目标文件a1的信息发送给备份设备b;

5.2.3)备份设备b找到当前目标文件a1对应的备份目标文件a2,并将备份目标文件a2划分为大小固定的数据块并编号,同时记录数据块的起始偏移地址以及数据块长度;

5.2.4)备份设备b将对备份目标文件a2划分的每个数据块根据其内容都计算crc32校验码,并将对备份目标文件a2计算出的所有数据块的crc32校验码跟随在对应的数据块序号后形成校验码集合,然后发送给存储设备a;

5.2.5)当存储设备a接收到备份目标文件a2的校验码集合后,对校验码集合中的每个数据块的crc32校验码计算一个哈希值,并以该哈希值做哈希索引放入一个哈希表中,哈希表中的每一个条目都指向校验码集合中它所对应的crc32校验码的数据块号码,对校验码集合根据哈希值进行排序,使得排序后的校验码集合中的顺序和哈希表中的顺序对应;

5.2.6)存储设备a主机将当前目标文件a1从第一个字节开始取相同的大小的数据块;针对取出的当前数据块,计算当前数据块的校验码并与校验码集合中的校验码进行匹配,如果当前数据块能够匹配上校验码集合中的某个数据块条目,则判定该数据块和备份目标文件a2中的数据块相同且不需要传输给备份设备b,存储设备a直接跳到该数据块的结尾偏移地址,从此偏移处继续取数据块进行匹配直至当前目标文件a1的尾部;如果当前数据块不能匹配上校验码集合中的任意数据条目,则判定该数据块是需要传输给备份设备b的非匹配数据块,存储设备a将跳转到当前数据块的下一个字节,从当前数据块的下一个字节处继续取数据块进行匹配直至当前目标文件a1的尾部;

5.2.7)存储设备a针对所有匹配的数据块只发送匹配数据块的附加信息传输给备份设备b,如果两个匹配数据块之间有非匹配的数据则将非匹配的数据块及其附加信息传输给备份设备b,所述附加信息包括数据块的起始位置和偏移量;备份设备b收到所有的匹配数据块的附加信息以及非匹配的数据块及其附加信息后,将所有的数据块重组得到与当前目标文件a1内容相同的临时文件,并将临时文件重命名替换备份设备b上存储的备份目标文件a2;

5.2.8)存储设备a判断合并后的一般差异文件列表是否已经遍历完毕,如果尚未遍历完毕,则从合并后的一般差异文件列表中遍历选择下一个当前目标文件a1并跳转执行步骤5.2.2);如果已经遍历完毕,则结束并退出。

优选地,本发明还包括各个samba服务器节点生成差异文件列表的步骤如下:

s1)各个samba服务器节点通过samba服务内置的hook程序截获每一个客户端的samba服务请求,并通过哈希表记录最近记录过的文件操作,为每一个连接的客户端生成一个独立的临时差异文件列表;当截获一个客户端的samba服务请求时跳转执行下一步;

s2)判断截获的samba服务请求的目标文件是否已经在哈希表中存在,如果已经在哈希表中存在则丢弃该截获的samba服务请求;否则,将该截获的samba服务请求的目标文件写入哈希表中,并将该截获的samba服务请求的目标文件写入临时差异文件列表;

s3)判断客户端是否退出登录或者登录超过指定时间,如果客户端退出登录或者登录超过指定时间,则将该客户端的临时差异文件列表重命名为正式的差异文件列表。

优选地,步骤s1)中产生的临时差异文件列表保存在以当前samba服务器节点名称命名的目录下面。

本发明samba服务器集群下的高速数据备份方法具有下述优点:本发明samba服务器集群下的高速数据备份方法通过向各个samba服务器节点请求获取差异文件列表,差异文件列表包括samba服务器集群下各samba服务器节点截获的客户端发起的samba服务请求的目标文件信息,将所有的差异文件列表合并,基于合并后的差异文件列表通过备份设备b对存储设备a进行数据差异备份,能够解决samba服务器集群环境下增量备份效率低、占用资源过高的问题,具有备份效率高、备份速度快、占用资源低的优点。

附图说明

图1为本发明实施例samba服务器集群的拓扑结构示意图。

图2为本发明实施例方法的基本流程图。

图3为本发明实施例方法中差异文件列表合并及后续预处理的流程图。

图4为本发明实施例方法中进行数据差异备份的流程图。

图5为本发明实施例方法中生产差异文件列表的流程图。

具体实施方式

下文将以图1所示samba服务器集群为例,对本发明samba服务器集群下的高速数据备份方法进行进一步的详细说明。

参见图1,该samba服务器集群包括节点001~节点003共三个samba服务器节点,每一个samba服务器节点负责两个客户端,例如节点001负责客户端c1和c2,存储设备a为所有客户端提供存储网盘服务,备份设备b主要用于对存储设备a进行备份,所有samba服务器节点共享存储设备a和备份设备b。

如图2所示,本实施例samba服务器集群下的高速数据备份方法的实施步骤包括:

1)预先通过备份设备b对存储设备a完成初始数据备份;

2)等待数据备份操作被激活,当数据备份操作被激活时跳转执行下一步;

3)向各个samba服务器节点请求获取差异文件列表,所述差异文件列表包括samba服务器集群下各samba服务器节点截获的客户端发起的samba服务请求的目标文件信息;

4)将所有的差异文件列表合并;

5)基于合并后的差异文件列表通过备份设备b对存储设备a进行数据差异备份。

本实施例中,步骤3)中请求获取的差异文件列表包括删除差异文件列表、一般差异文件列表,所述删除差异文件列表用于记录客户端发起的删除文件类samba服务请求的目标文件信息,所述一般差异文件列表用于记录客户端发起的新增或修改类samba服务请求的目标文件信息;步骤4)将所有的差异文件列表合并后得到合并后的删除差异文件列表以及一般差异文件列表。

如图3所示,本实施例步骤4)中将所有差异文件列表合并后还包括对列表中的项目进行排序、去重的过程。由于存在多个samba服务器节点,以及每一个samba服务器节点都会为登录到自身节点的用户创建差异文件列表,所以当执行备份任务前,需要把所有samba服务器节点上为每个客户端生成的差异文件列表进行合并、排序、去重,从而能够简化数据备份操作,提高数据备份的效率。

如图4所示,本实施例步骤5)的详细步骤包括:

5.1)将合并后的删除差异文件列表中的目标文件从备份设备b中删除;

5.2)针对合并后的一般差异文件列表中的每一个目标文件,将目标文件的存储数据划分为数据块,针对存储设备a和备份设备b中的数据块进行比较判断是否发生变动,且将发生变动的数据块从存储设备a复制到备份设备b,并在备份设备b中组合生成与目标文件相同的临时文件,并将该临时文件重命名覆盖目标文件对应的备份文件。

参见图4,本实施例中一次备份任务执行实际分两个阶段完成,第一阶段先对备份源端删除的文件进行同步,第二阶段则对备份源端有修改或新增的文件进行同步。删除文件同步则只需为备份目标端提供删除文件列表直接在备份目标端执行删除操作即可;对于其他差异文件同步充分考虑到文件可能只是部分块内容有变动,为了节约流量提高备份效率,将差异文件划分为指定大小的块,先根据备份算法找出备份源端和备份目标端待同步文件有差异的块,然后再把有差异的块进行传输,接着备份目标端把备份源端传送的差异块和本地保存的相同块组合成一个和备份源端相同的临时文件,最后把临时文件重命名为差异文件名把备份目标的待备份文件覆盖即完成了同步。

本实施例中,步骤5.2)的详细步骤包括:

5.2.1)存储设备a从合并后的一般差异文件列表中遍历选择一个当前目标文件a1;

5.2.2)存储设备a将当前目标文件a1的信息发送给备份设备b;

5.2.3)备份设备b找到当前目标文件a1对应的备份目标文件a2,并将备份目标文件a2划分为大小固定的数据块并编号,同时记录数据块的起始偏移地址以及数据块长度;

5.2.4)备份设备b将对备份目标文件a2划分的每个数据块根据其内容都计算crc32校验码,并将对备份目标文件a2计算出的所有数据块的crc32校验码跟随在对应的数据块序号后形成校验码集合,然后发送给存储设备a;

5.2.5)当存储设备a接收到备份目标文件a2的校验码集合后,对校验码集合中的每个数据块的crc32校验码计算一个哈希值,并以该哈希值做哈希索引放入一个哈希表中,哈希表中的每一个条目都指向校验码集合中它所对应的crc32校验码的数据块号码,对校验码集合根据哈希值进行排序,使得排序后的校验码集合中的顺序和哈希表中的顺序对应;

5.2.6)存储设备a主机将当前目标文件a1从第一个字节开始取相同的大小的数据块;针对取出的当前数据块,计算当前数据块的校验码并与校验码集合中的校验码进行匹配,如果当前数据块能够匹配上校验码集合中的某个数据块条目,则判定该数据块和备份目标文件a2中的数据块相同且不需要传输给备份设备b,存储设备a直接跳到该数据块的结尾偏移地址,从此偏移处继续取数据块进行匹配直至当前目标文件a1的尾部;如果当前数据块不能匹配上校验码集合中的任意数据条目,则判定该数据块是需要传输给备份设备b的非匹配数据块,存储设备a将跳转到当前数据块的下一个字节(匹配成功时跳过的是整个数据块,匹配不成功时跳过的仅是一个字节,以减少数据传输、提升备份效率),从当前数据块的下一个字节处继续取数据块进行匹配直至当前目标文件a1的尾部;

5.2.7)存储设备a针对所有匹配的数据块只发送匹配数据块的附加信息传输给备份设备b,如果两个匹配数据块之间有非匹配的数据则将非匹配的数据块及其附加信息传输给备份设备b,所述附加信息包括数据块的起始位置和偏移量;备份设备b收到所有的匹配数据块的附加信息以及非匹配的数据块及其附加信息后,将所有的数据块重组得到与当前目标文件a1内容相同的临时文件,并将临时文件重命名替换备份设备b上存储的备份目标文件a2;

5.2.8)存储设备a判断合并后的一般差异文件列表是否已经遍历完毕,如果尚未遍历完毕,则从合并后的一般差异文件列表中遍历选择下一个当前目标文件a1并跳转执行步骤5.2.2);如果已经遍历完毕,则结束并退出。

如图5所示,本实施例还包括各个samba服务器节点生成差异文件列表的步骤如下:

s1)各个samba服务器节点通过samba服务内置的hook程序截获每一个客户端的samba服务请求,并通过哈希表记录最近记录过的文件操作,为每一个连接的客户端生成一个独立的临时差异文件列表;当截获一个客户端的samba服务请求时跳转执行下一步;

s2)判断截获的samba服务请求的目标文件是否已经在哈希表中存在,如果已经在哈希表中存在则丢弃该截获的samba服务请求;否则,将该截获的samba服务请求的目标文件写入哈希表中,并将该截获的samba服务请求的目标文件写入临时差异文件列表;

s3)判断客户端是否退出登录或者登录超过指定时间,如果客户端退出登录或者登录超过指定时间,则将该客户端的临时差异文件列表重命名为正式的差异文件列表。

本实施例中,步骤s1)中产生的临时差异文件列表保存在以当前samba服务器节点名称命名的目录下面,以此来减少节点之间的缓存冲突以及分散全局文件系统对同一目录频繁访问带来的性能问题。

在samba集群环境中,客户端分散登录在集群中每个节点上,每个客户端挂载一个网盘来读写文件。用户对网盘中文件的操作:创建文件、修改文件、删除文件、重命名文件等都会使用cifs协议传送给服务端samba服务,本实施例中通过改造samba服务,在其置入hook点截获所有的文件操作。此外本实施例通过改造samba服务,增加一个哈希表,该哈希表用于记录最近记录过的文件操作,以尽量避免重复记录,哈希表大小可根据内存大小进行调整,当哈希表满时,采用最近最少使用的方式淘汰掉对应记录项。对截获的每个文件操作首先会在哈希表缓存中检测是否已经有该文件的操作记录,如果有,则表示最近已经记录了该事件,为了避免不必要的重复记录,丢弃截获的事件;否则则将该文件名写入哈希表缓存中,并将其记录到对应的差异文件列表(删除操作记录到文件删除操作差异文件列表,其他操作记录到一般文件操作差异文件列表)。参见图1,例如c1客户端进行文件操作后,节点001服务器上samba服务内置的hook程序将截获c1客户端的文件操作,最终节点001会根据c1用户id为c1用户创建两个独立的临时差异文件列表,当用户退出登录或连续登录指定时间后会将该临时差异文件重命名为正式差异文件列表。在多节点多用户的集群环境中差异文件列表会产生多份差异文件列表,由于哈希表缓存的大小限制,差异文件列表中的文件记录可能会有重复,所以需要对差异文件列表进行统一预处理。预处理阶段首先会对所有节点产生的差异文件列表进行汇总合并得到删除差异文件列表、一般差异文件列表,然后对这两份文件进行排序和去重。在某些特殊的业务系统中可能也可以在该阶段完成相应的特殊处理。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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