Linux文件系统的多点备份和实时保护方法

文档序号:6437852阅读:248来源:国知局

专利名称::Linux文件系统的多点备份和实时保护方法
技术领域
:本发明涉及计算机数据安全领域,特别是涉及一种Linux文件系统的多点备份和实时保护方法。
背景技术
:Linux文件系统作为一种高效、开放的操作系统,广泛应用于服务器、桌面和嵌入式领域,当前Linux文件系统的备份主要是使用完整备份技术和RAID(RedundantArrayofIndependentDisk,独立冗余磁盘阵列)。完整备份技术不仅数据量大、备份还原时间长、不能在线备份,而且不能实现数据的实时保护;RAID磁盘阵列适合当硬盘发生物理损坏及数据逻辑损坏时的恢复。
发明内容本发明的目的是为了克服上述
背景技术
的不足,提供一种Linux文件系统的多点备份和实时保护方法,不仅能够快速备份、快速还原Linux文件系统到任意备份版本,而且还能够实时保护Linux文件系统不被修改。本发明提供的Linux文件系统的多点备份和实时保护方法,包括以下步骤A、在Linux文件系统存储介质的未使用空间上建立备份区,对Linux文件系统的读写操作进行实时监控,将修改Linux文件系统的数据存储到备份区,并标记为备份版本,对Linux文件系统进行备份;B、备份区支持保存多个备份版本,还原Linux文件系统时,按照所选择的备份版本对Linux文件系统进行还原;C、拦截对Linux文件系统存储介质的读写请求,防止未授权的读写操作,实时保护Linux文件系统和备份区。在上述技术方案中,步骤A中建立备份区的过程如下A101、将Linux文件系统的存储介质连续划分为固定大小的块,并顺次对块进行编号;A102、在保存Linux文件系统的存储介质上划分一块未被Linux文件系统使用的空闲区域作为备份区;A103、在备份区建立参数区,保存块引用计数表、备份版本信息表、映射数据缓冲区信息表和备份版本描述信息区;A104、在备份版本描述信息区,保存每个备份版本的块类型表和块映射表,块的类型包括有效数据、空闲、临时有效数据、正式映射源、临时映射源,块映射表中包括映射源块号src和映射目标块号dst;A105、在备份区建立映射数据缓冲区,保存每个备份版本中产生的映射目标块,缓冲区的参数由映射数据缓冲区信息表维护;A106、初始化备份区,自动创建Linux文件系统的初始备份版本;A107、自动创建临时备份版本。在上述技术方案中,步骤A103中的备份版本信息表中的每条记录包括以下字段唯一id、备份版本类型type、备份版本的描述信息desc、备份版本的块类型表在备份版本描述信息区的偏移位置blk_type_table、备份版本的块映射表在备份版本描述信息区的偏移位置blk_redir_table;映射数据缓冲区信息表记录了预分配的缓冲区的属性信息,包括以下字段缓冲区的起始位置begin、缓冲区的结束位置end、缓冲区中首个未分配的空闲块在缓冲区的偏移位置free_offset。在上述技术方案中,步骤A106中创建Linux文件系统的初始备份版本的过程如下A1061、扫描Linux文件系统,识别Linux文件系统的有效数据,修改块引用计数表,有效数据占用的块计为1,其他块计为0;A1062、修改备份版本信息表的第一条记录,设置唯一id,修改type为正式备份版本,设置blk_type_table指向备份版本描述信息区的第一条记录的块类型表存储地址,设置blk_redir_table指向备份版本描述信息区的第一条记录的块映射表存储地址;A1063、修改备份版本描述信息区的第一条记录的块类型表,将有效数据占用块设置为有效数据,将其他块设置为空闲;A1064、修改备份版本描述信息区的第一条记录的块映射表,将所有记录清0;A1065、修改映射数据缓冲区信息表,设置free_offset设为0。在上述方案中,步骤A107中创建临时备份版本的过程如下A1071、复制备份版本描述信息区的第一条记录的块类型表和块映射表到第二条记录;A1072、修改备份版本信息表的第二条记录,设置id为0,设置type为临时备份版本,设置blk_type_table指向备份版本描述信息区的第二条记录的块类型表,设置blk_redir_table指向备份版本描述信息区的第二条记录的块映射表。在上述技术方案中,步骤A中对Linux文件系统进行备份的过程如下A201、查询备份版本信息表,找到第一个临时备份版本的记录,称为BPl;A202、遍历BPl的块类型表,找到类型为“临时有效数据”和“临时映射源”的块,在块引用计数表中将对应块的引用计数加1;A203JfSBPl的块类型表,将类型“临时有效数据”改为“有效数据”,将类型“临时映射源”改为“正式映射源”;A204、修改BP1,设置type为正式备份版本,设置唯一id;A205、复制BPl在备份版本描述信息区中的记录,称为BD2;A206、查询备份版本信息表,找到第一个id为0的备份版本记录,称为BP2,修改BP2,设置blk_type_table指向BD2的块类型表,设置blk_redir_table指向BD2的块映射表。在上述技术方案中,步骤B中还原Linux文件系统的过程如下B1、选择待还原的备份版本,作为源备份版本;B2、查询备份版本信息表中源备份版本的记录SRC-BP;B3、查询备份版本信息表中的临时备份版本记录,如果不存在,查询第一个id为0的备份版本记录,被查询到的记录称为TMP-BP,修改该记录的类型为临时版本;B4、用SRC-BP的块类型表覆盖TMP-BP的块类型表;B5、回收TMP-BP映射数据占用的缓冲块;B6、用SRC-BP的块映射表覆盖TMP-BP的块映射表。在上述技术方案中,步骤C中拦截对Linux文件系统存储介质的读写请求的实现过程如下实模式环境下,通过拦截htl3实现过滤读写操作;Linux系统环境下,通过拦截存储设备类驱动提供给上层通用块设备驱动的接口函数实现过滤读写操作。在上述技术方案中,步骤C中实时保护备份区的过程如下拦截对Linux文件系统存储介质的读写请求后,若判定被读写块属于备份区的空间范围,则只向调用者返回成功状态,不执行I/O操作。在上述技术方案中,步骤C中实时保护Linux文件系统的过程如下Cl、查询备份版本信息表中临时版本的备份版本记录BP2;C2、拦截到对Linux文件系统的读操作请求后,以被请求块的块号为索引,在BP2的块类型表中查询被请求块的类型,如果被请求块的类型为“有效数据”、“空闲”或“临时有效数据”,则直接读被请求块的数据;如果被请求块的类型为“正式映射源”或“临时映射源”,则以被请求块号为索引,在BP2的块映射表中查找块的映射关系记录,根据记录的dst字段,获得映射目标块号,从映射数据缓冲区读取映射目标块的内容;C3、拦截到对Linux文件系统的写操作请求后,以被请求块的块号为索引,在BP2的块类型表中查询被请求块的类型,C301、如果被请求块的类型为“空闲”且块的引用计数为0,则直接修改被请求块的数据,然后在BP2的块类型表中将块类型“空闲”改为“临时有效数据”;C302、如果被请求块的类型为“空闲”且块的引用计数大于0,则执行以下步骤C3021、从映射数据缓冲区申请一个缓冲块;C3022、申请一个内存缓冲区,从被请求块读取块的原始内容到内存缓冲区;C3023、将写请求的内容写入内存缓冲区;C3024、将内存缓冲区的内容写入缓冲块;C3025、在BP2的块映射表中增加一条记录,记录的src字段是被请求块的块号,记录的dst字段是缓冲块的块号;C3026、修改BP2的块类型表,将被请求块的类型“空闲”改为“临时映射源”;C303、如果被请求块的类型为“临时有效数据”,则直接修改被请求块的内容;C304、如果被请求块的类型为“有效数据”,则执行以下步骤C3041、从映射数据缓冲区申请一个缓冲块;C3042、申请一个内存缓冲区,从被请求块读取块的原始内容到内存缓冲区;C3043、将写请求的内容写入内存缓冲区;C3044、将内存缓冲区的内容写入缓冲块;C3045、修改BP2的块映射表,增加一条新记录,src字段是被请求块的块号,dst字段是缓冲块的块号;C3046、修改BP2的块类型表,将被请求块的类型“有效数据”改为“临时映射源”;C305、如果被请求块的类型为“临时映射源”,则以被请求块的块号为索引,查询BP2的块映射表,根据记录的dst字段,获得映射目标块号,用写请求的内容修改映射目标块;C306、如果被请求块的类型为“正式映射源”,则执行以下步骤C3061、从映射数据缓冲区申请一个缓冲块;C3062、申请一个内存缓冲区,以被请求块的块号为索引,查询BP2的映射表获得映射目标块号,读取映射目标块的内容到内存缓冲区;C3063、将写请求的内容写入内存缓冲区;C3064、将内存缓冲区的内容写入缓冲块;C3065、修改BP2的块映射表,将被请求块的记录的dst字段改为缓冲块的块号;C3066、修改BP2的块类型表,将被请求块的类型“正式映射源”改为“临时映射源”。与现有技术相比,本发明的优点如下(1)本发明能够实现Linux文件系统变化数据的在线增量备份,由于备份时只备份变化数据,因此备份效率高,对Linux文件系统的I/O性能影响小。(2)还原Linux文件系统时,不需要复制数据,因此还原速度快,解决用户因为误操作或恶意软件破坏造成的文件系统数据被修改,而无法快速恢复的问题。(3)本发明支持保存多个增量备份版本,还原时可以选择恢复Linux文件系统到任意备份版本。(4)本发明能够实时保护Linux文件系统不被修改,所有的修改内容被转储到缓冲区,原始数据不被修改,提高了Linux文件系统的安全性。图1是本发明实施例中硬盘分区布局的示意图;图2是本发明实施例中备份区的结构示意图3是本发明实施例中备份版本描述信息区的结构示意图;图4是本发明实施例中备份区初始化完成后硬盘分区布局的示意图。具体实施例方式下面结合附图及实施例对本发明作进一步的详细描述。参见图1所示,硬盘上有A、B两个分区,Linux操作系统占用的分区A和B的文件系统需要备份和保护,默认保护策略为每次还原,即每次引导Linux操作系统前,自动还原操作系统到最近一次的备份版本。针对硬盘分区结构和文件系统的备份保护需求,本发明实施例提供的Linux文件系统的多点备份和实时保护方法,包括以下步骤A、在Linux文件系统存储介质的未使用空间上建立备份区,对Linux文件系统的读写操作进行实时监控,将修改Linux文件系统的数据存储到备份区,并标记为备份版本,对Linux文件系统进行备份;B、备份区支持保存多个备份版本,还原Linux文件系统时,按照所选择的备份版本对Linux文件系统进行还原;C、拦截对Linux文件系统存储介质的读写请求,防止未授权的读写操作,实时保护Linux文件系统和备份区。步骤A中建立备份区的过程如下A101、将Linux文件系统的存储介质连续划分为固定大小的块,从零开始顺次对块进行编号;A102、参见图1所示,在保存Linux文件系统的存储介质上划分一块未被Linux文件系统使用的空闲区域作为备份区;A103、参见图2所示,在备份区建立参数区,保存块引用计数表、备份版本信息表、映射数据缓冲区信息表和备份版本描述信息区,具体步骤如下A1031、建立“块引用计数表”,块引用计数表记录了每个块被多少个备份版本使用,每个块的初始引用计数为0;A1032、建立“备份版本信息表”,备份版本信息表记录了每个备份版本的属性信息,表中包含256个记录,表示最多支持256个备份版本。每个记录的初始id字段为0,表示备份版本还未使用,每条记录对应一个备份版本,每条记录包括以下字段_权利要求1.一种Linux文件系统的多点备份和实时保护方法,其特征在于包括以下步骤A、在Linux文件系统存储介质的未使用空间上建立备份区,对Linux文件系统的读写操作进行实时监控,将修改Linux文件系统的数据存储到备份区,并标记为备份版本,对Linux文件系统进行备份;B、备份区支持保存多个备份版本,还原Linux文件系统时,按照所选择的备份版本对Linux文件系统进行还原;C、拦截对Linux文件系统存储介质的读写请求,防止未授权的读写操作,实时保护Linux文件系统和备份区。2.如权利要求1所述的Linux文件系统的多点备份和实时保护方法,其特征在于步骤A中建立备份区的过程如下A101、将Linux文件系统的存储介质连续划分为固定大小的块,并顺次对块进行编号;A102、在保存Linux文件系统的存储介质上划分一块未被Linux文件系统使用的空闲区域作为备份区;A103、在备份区建立参数区,保存块引用计数表、备份版本信息表、映射数据缓冲区信息表和备份版本描述信息区;A104、在备份版本描述信息区,保存每个备份版本的块类型表和块映射表,块的类型包括有效数据、空闲、临时有效数据、正式映射源、临时映射源,块映射表中包括映射源块号src和映射目标块号dst;A105、在备份区建立映射数据缓冲区,保存每个备份版本中产生的映射目标块,缓冲区的参数由映射数据缓冲区信息表维护;A106、初始化备份区,自动创建Linux文件系统的初始备份版本;A107、自动创建临时备份版本。3.如权利要求2所述的Linux文件系统的多点备份和实时保护方法,其特征在于步骤A103中的备份版本信息表中的每条记录包括以下字段唯一id、备份版本类型type、备份版本的描述信息desc、备份版本的块类型表在备份版本描述信息区的偏移位置blk_typejable、备份版本的块映射表在备份版本描述信息区的偏移位置blk_redir_table;映射数据缓冲区信息表记录了预分配的缓冲区的属性信息,包括以下字段缓冲区的起始位置begin、缓冲区的结束位置end、缓冲区中首个未分配的空闲块在缓冲区的偏移位置free_offsetο4.如权利要求2所述的Linux文件系统的多点备份和实时保护方法,其特征在于步骤A106中创建Linux文件系统的初始备份版本的过程如下A1061、扫描Linux文件系统,识别Linux文件系统的有效数据,修改块引用计数表,有效数据占用的块计为1,其他块计为0;A1062、修改备份版本信息表的第一条记录,设置唯一id,修改type为正式备份版本,设置blk_type_table指向备份版本描述信息区的第一条记录的块类型表存储地址,设置blk_redir_table指向备份版本描述信息区的第一条记录的块映射表存储地址;A1063、修改备份版本描述信息区的第一条记录的块类型表,将有效数据占用块设置为有效数据,将其他块设置为空闲;A1064、修改备份版本描述信息区的第一条记录的块映射表,将所有记录清0;A1065、修改映射数据缓冲区信息表,设置free_0ffset设为0。5.如权利要求2所述的Linux文件系统的多点备份和实时保护方法,其特征在于步骤A107中创建临时备份版本的过程如下A1071、复制备份版本描述信息区的第一条记录的块类型表和块映射表到第二条记录;A1072、修改备份版本信息表的第二条记录,设置id为0,设置type为临时备份版本,设置blk_type_table指向备份版本描述信息区的第二条记录的块类型表,设置blk_redir_table指向备份版本描述信息区的第二条记录的块映射表。6.如权利要求1所述的Linux文件系统的多点备份和实时保护方法,其特征在于步骤A中对Linux文件系统进行备份的过程如下A201、查询备份版本信息表,找到第一个临时备份版本的记录,称为BPl;A202、遍历BPl的块类型表,找到类型为“临时有效数据”和“临时映射源”的块,在块引用计数表中将对应块的引用计数加1;A203JfSBPl的块类型表,将类型“临时有效数据”改为“有效数据”,将类型“临时映射源”改为“正式映射源”;A204、修改BP1,设置type为正式备份版本,设置唯一id;A205、复制BPl在备份版本描述信息区中的记录,称为BD2;A206、查询备份版本信息表,找到第一个id为0的备份版本记录,称为BP2,修改BP2,设置blk_type_table指向BD2的块类型表,设置blk_redir_table指向BD2的块映射表。7.如权利要求1所述的Linux文件系统的多点备份和实时保护方法,其特征在于步骤B中还原Linux文件系统的过程如下Bi、选择待还原的备份版本,作为源备份版本;B2、查询备份版本信息表中源备份版本的记录SRC-BP;B3、查询备份版本信息表中的临时备份版本记录,如果不存在,查询第一个id为0的备份版本记录,被查询到的记录称为TMP-BP,修改该记录的类型为临时版本;B4、用SRC-BP的块类型表覆盖TMP-BP的块类型表;B5、回收TMP-BP映射数据占用的缓冲块;B6、用SRC-BP的块映射表覆盖TMP-BP的块映射表。8.如权利要求1所述的Linux文件系统的多点备份和实时保护方法,其特征在于步骤C中拦截对Linux文件系统存储介质的读写请求的实现过程如下实模式环境下,通过拦截htl3实现过滤读写操作;Linux系统环境下,通过拦截存储设备类驱动提供给上层通用块设备驱动的接口函数实现过滤读写操作。9.如权利要求1所述的Linux文件系统的多点备份和实时保护方法,其特征在于步骤C中实时保护备份区的过程如下拦截对Linux文件系统存储介质的读写请求后,若判定被读写块属于备份区的空间范围,则只向调用者返回成功状态,不执行I/O操作。10.如权利要求1至9中任一项权利要求所述的Linux文件系统的多点备份和实时保护方法,其特征在于步骤C中实时保护Linux文件系统的过程如下Cl、查询备份版本信息表中临时版本的备份版本记录BP2;C2、拦截到对Linux文件系统的读操作请求后,以被请求块的块号为索引,在BP2的块类型表中查询被请求块的类型,如果被请求块的类型为“有效数据”、“空闲”或“临时有效数据”,则直接读被请求块的数据;如果被请求块的类型为“正式映射源”或“临时映射源”,则以被请求块号为索引,在BP2的块映射表中查找块的映射关系记录,根据记录的dst字段,获得映射目标块号,从映射数据缓冲区读取映射目标块的内容;C3、拦截到对Linux文件系统的写操作请求后,以被请求块的块号为索引,在BP2的块类型表中查询被请求块的类型,C301、如果被请求块的类型为“空闲”且块的引用计数为0,则直接修改被请求块的数据,然后在BP2的块类型表中将块类型“空闲”改为“临时有效数据”;C302、如果被请求块的类型为“空闲”且块的引用计数大于0,则执行以下步骤C3021、从映射数据缓冲区申请一个缓冲块;C3022、申请一个内存缓冲区,从被请求块读取块的原始内容到内存缓冲区;C3023、将写请求的内容写入内存缓冲区;C3024、将内存缓冲区的内容写入缓冲块;C3025、在BP2的块映射表中增加一条记录,记录的src字段是被请求块的块号,记录的dst字段是缓冲块的块号;C3026、修改BP2的块类型表,将被请求块的类型“空闲”改为“临时映射源”;C303、如果被请求块的类型为“临时有效数据”,则直接修改被请求块的内容;C304、如果被请求块的类型为“有效数据”,则执行以下步骤C3041、从映射数据缓冲区申请一个缓冲块;C3042、申请一个内存缓冲区,从被请求块读取块的原始内容到内存缓冲区;C3043、将写请求的内容写入内存缓冲区;C3044、将内存缓冲区的内容写入缓冲块;C3045、修改BP2的块映射表,增加一条新记录,src字段是被请求块的块号,dst字段是缓冲块的块号;C3046、修改BP2的块类型表,将被请求块的类型“有效数据”改为“临时映射源”;C305、如果被请求块的类型为“临时映射源”,则以被请求块的块号为索引,查询BP2的块映射表,根据记录的dst字段,获得映射目标块号,用写请求的内容修改映射目标块;C306、如果被请求块的类型为“正式映射源”,则执行以下步骤C3061、从映射数据缓冲区申请一个缓冲块;C3062、申请一个内存缓冲区,以被请求块的块号为索引,查询BP2的映射表获得映射目标块号,读取映射目标块的内容到内存缓冲区;C3063、将写请求的内容写入内存缓冲区;C3064、将内存缓冲区的内容写入缓冲块;C3065、修改BP2的块映射表,将被请求块的记录的dst字段改为缓冲块的块号;C3066、修改BP2的块类型表,将被请求块的类型“正式映射源”改为“临时映射源”。全文摘要本发明公开了一种Linux文件系统的多点备份和实时保护方法,包括步骤在Linux文件系统存储介质的未使用空间上建立备份区,对Linux文件系统的读写操作进行实时监控,将修改Linux文件系统的数据存储到备份区,并标记为备份版本,对Linux文件系统进行备份;备份区支持保存多个备份版本,还原Linux文件系统时,按照所选择的备份版本对Linux文件系统进行还原;拦截对Linux文件系统存储介质的读写请求,防止未授权的读写操作,实时保护Linux文件系统和备份区。本发明能够快速备份、快速还原Linux文件系统到任意备份版本、实时保护Linux文件系统不被修改。文档编号G06F11/14GK102508743SQ20111035379公开日2012年6月20日申请日期2011年11月10日优先权日2011年11月10日发明者刘奇,曾丽星,邹新宇申请人:武汉噢易科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1