CN117724905A - Linux下文件系统的实时复制方法、系统及恢复方法 - Google Patents
Linux下文件系统的实时复制方法、系统及恢复方法 Download PDFInfo
- Publication number
- CN117724905A CN117724905A CN202410160347.6A CN202410160347A CN117724905A CN 117724905 A CN117724905 A CN 117724905A CN 202410160347 A CN202410160347 A CN 202410160347A CN 117724905 A CN117724905 A CN 117724905A
- Authority
- CN
- China
- Prior art keywords
- file
- data
- kernel driver
- replication
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000011084 recovery Methods 0.000 title abstract description 6
- 230000010076 replication Effects 0.000 claims abstract description 72
- 230000005540 biological transmission Effects 0.000 claims abstract description 54
- 238000001914 filtration Methods 0.000 claims abstract description 18
- 238000012544 monitoring process Methods 0.000 claims abstract description 16
- 238000005538 encapsulation Methods 0.000 claims abstract description 6
- 230000006870 function Effects 0.000 claims description 56
- 230000008569 process Effects 0.000 claims description 21
- 238000004519 manufacturing process Methods 0.000 claims description 19
- 239000004744 fabric Substances 0.000 claims description 10
- 230000011218 segmentation Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种Linux下文件系统的实时复制方法、系统及恢复方法,属于数据容灾备份领域。所述方法包括:初始化步骤;系统调用函数获取步骤;框架注册步骤;监控步骤;同步步骤;截获步骤;文件I/O数据过滤步骤;文件I/O数据封装步骤;传输步骤;传输判断步骤。所述系统包括:初始化模块;系统调用函数获取模块;框架注册模块;监控模块;同步模块;截获模块;文件I/O数据过滤模块;文件I/O数据封装模块;传输模块;传输判断模块。本发明通过Linux内核驱动在操作前截获文件级I/O事件,将I/O数据封装成特定结构传输至复制端进行复现,实现了Linux上基于文件系统的实时复制,复制效率高,且损耗存储资源较低。
Description
技术领域
本发明属于数据容灾备份技术领域,涉及一种Linux下文件系统的实时复制方法、系统及恢复方法。
背景技术
实时复制技术(Real-Time Replication)是一种数据备份和同步的方法,它允许在源数据发生变化时立即将这些变化复制到目标位置。这种技术的目的是保持源和目标之间的数据同步,并且在源数据发生更改时,尽可能快地将这些变化反映到目标位置。实时复制通常用于关键系统和应用,以确保在发生故障或灾难时能够快速切换到备份系统,并且几乎没有数据丢失。Linux文件系统是用于组织和管理计算机上文件和目录的一种结构化方式。它定义了文件的命名规则、组织方式、存储方式以及访问权限等相关规范。Linux支持多种文件系统,其中一些常见的包括Ext4、Btrfs、XFS等。
目前,在Linux系统中,现有技术有使用rsync结合inotify的方式来实现实时复制,该组合方式具有一些优点和缺点。该组合方式利用了rsync的文件同步能力以及inotify的实时文件系统事件监测功能,以提供更快速的、实时的数据同步。此外,rsync和inotify都是Linux系统中经过充分验证和广泛应用的稳定工具,具有可靠性和稳定性。然而,这种方法是基于轮询(polling)机制实现的,这意味着它需要定期检查文件系统的变化,可能引起一定的系统开销。对于极高要求实时性的场景,这组合种方式可能不够满足需求。并且,其是在文件I/O操作之后才能同步,同步性不强。
因此,如何实现强同步的基于Linux文件系统的实时复制,是目前亟需解决的问题。
发明内容
本发明为了解决上述背景技术中的技术问题,提供一种Linux下文件系统的实时复制方法、系统及恢复方法,所述技术方案如下:
第一个方面,提供了一种Linux下文件系统的实时复制方法,具有设置在生产端用户层的客户程序、设置在生产端内核层的内核驱动和设置在复制端的复制程序,所述方法包括步骤:
客户程序和内核驱动初始化配置文件,两者分别连接复制程序;
内核驱动实时监控目标目录;
客户程序将目标目录同步至复制程序;
当客户端产生文件I/O时,内核驱动截获文件系统调用函数;
内核驱动根据文件系统调用函数,获取文件I/O绝对路径,再过滤获取目标目录的文件I/O数据;
内核驱动按照I/O结构体封装文件I/O数据,I/O结构体包括:文件I/O操作的类型、文件I/O绝对路径、数据写入的偏移量、数据写入的长度、写入的数据、文件I/O操作的时间戳和发送校验码;
内核驱动将封装的I/O结构体发送至复制程序;
复制程序接收并根据封装的I/O结构体判断数据传输是否成功,若是,则执行操作复现;若否,则通知内核驱动进行数据重传。
在其中一个实施例中,所述内核驱动将封装的I/O结构体发送至复制程
序的步骤,包括:
内核驱动根据写入数据的大小决定传输的方法,若写入的数据大小超过4096字节,则将写入的数据分段发送,分段默认值为4096字节;若写入数据不足4096字节,则直接发送。
在其中一个实施例中,所述复制程序接收并根据封装的I/O结构体判断数据传输是否成功步骤,包括:
复制程序接收封装的I/O结构,并从封装的I/O结构中读取写入的数据和发送校验码,再将写入的数据转化为接收校验码 与发送校验码进行比对;
复制程序根据比对结果判断是否传输成功,若是,读取文件I/O操作的类型,根据文件I/O操作的类型调用复现函数,并将I/O结构体作为参数传入复现函数进行操作复现;若否,则通知内核驱动进行数据重传。
在其中一个实施例中,所述内核驱动根据文件系统调用函数,获取文件I/O绝对路径,再过滤获取目标目录的文件I/O数据步骤,包括:
内核驱动获取文件系统调用参数;
内核驱动通过文件系统调用参数中文件描述符或进程ID获取当前目录;
内核驱动将当前目录和文件系统调用参数中的用户空间路径结合得到文件I/O绝对路径;
在其中一个实施例中,所述内核驱动实时监控目标目录步骤之前,还包括:
内核驱动获取当前Linux内核源码中涉及目标目录下的I/O操作的文件系统调用函数名称及其参数,文件系统调用参数包括:文件描述符、进程ID和用户空间的路径;
内核驱动将系统调用函数注册入截获框架,再注册截获框架,其中截获框架为:Kprobe框架或者eBPF框架。
第二个方面,提供了一种Linux下文件系统的实时复制系统,具有设置在生产端用户层的客户程序、设置在生产端内核层的内核驱动和设置在复制端的复制程序,所述系统包括:
初始化模块,用于客户程序和内核驱动初始化配置文件,两者分别连接复制程序;
系统调用函数获取模块,用于内核驱动获取当前Linux内核源码中涉及目标目录下的I/O操作的文件系统调用函数名称和参数,文件系统调用参数包括:文件描述符、进程ID和用户空间的路径;
框架注册模块,用于内核驱动将系统调用函数注册入截获框架,再注册截获框架,其中截获框架包括:Kprobe框架或者eBPF框架。
监控模块,用于内核驱动实时监控目标目录;
同步模块,用于客户程序将目标目录同步至复制程序;
截获模块,用于当客户端产生文件I/O时,内核驱动截获文件系统调用函数;
文件I/O数据过滤模块,用于内核驱动根据文件系统调用函数,获取文件I/O绝对路径,再过滤获取目标目录的文件I/O数据;
文件I/O数据封装模块,用于内核驱动按照I/O结构体封装文件I/O数据,I/O结构体包括:文件I/O操作的类型、文件I/O绝对路径、数据写入的偏移量、数据写入的长度、写入的数据、文件I/O操作的时间戳和发送校验码;
传输模块,用于内核驱动将封装的I/O结构体发送至复制程序;
传输判断模块,用于复制程序接收并根据封装的I/O结构体判断数据传输是否成功,若是,则执行操作复现;若否,则通知内核驱动进行数据重传。
在其中一个实施例中,所述传输判断模块,包括:
文件I/O数据接收单元,用于复制程序接收封装的I/O结构,并从封装的I/O结构中读取写入的数据和发送校验码,再将写入的数据转化为接收校验码与发送校验码进行比对;
传输判断单元,用于复制程序根据比对结果判断是否传输成功,若是,读取文件I/O操作的类型,根据文件I/O操作的类型调用复现函数,并将I/O结构体作为参数传入复现函数进行操作复现;若否,则通知内核驱动进行数据重传。
在其中一个实施例中,在所述监控模块之前,还包括:
系统调用函数获取模块,用于内核驱动获取当前Linux内核源码中涉及目标目录下的I/O操作的文件系统调用函数名称和参数,文件系统调用参数包括:文件描述符、进程ID和用户空间的路径;
框架注册模块,用于内核驱动将系统调用函数注册入截获框架,再注册截获框架,其中截获框架包括:Kprobe框架或者eBPF框架。
在其中一个实施例中,所述文件I/O数据过滤模块,包括:
文件系统调用函数参数获取单元,用于内核驱动获取文件系统调用参数;
当前目录获取单元,用于内核驱动通过文件系统调用参数中的文件描述符或进程ID获取当前目录;
文件I/O绝对路径获取单元,用于内核驱动将当前目录和文件系统调用参数中的用户空间路径结合得到文件I/O绝对路径;
文件I/O数据过滤单元,用于内核驱动根据文件I/O绝对路径过滤出目标目录下的文件I/O数据。
第三个方面,一种Linux下文件系统的恢复方法,利用上述Linux下文件系统的实时复制方法,还包括步骤:
复制程序根据当前的系统时间判断是否需要创建新日志文件,如果是,则创建新日志文件,并将文件I/O数据写入新日志文件;如果否,直接将文件I/O数据写入原有日志文件末尾;
复制程序获取目标目录的时间戳和路径;
复制程序根据目标目录的时间戳和路径,查找目标日志文件,再从目标日志文件中获取目标文件I/O数据,恢复出目标目录。
本发明的有益效果是:
(1)本发明通过Kprobe和eBPF截获文件系统调用,由于Kprobe和eBPF是Linux内核自带框架,本身安全性较高,提升了系统复制安全性;
(2)本发明通过系统调用进行截获,实现了截获所有文件I/O操作,系统具有普遍性和可移植性;
(3)本发明数据结构清晰,分段处理大文件,保证了大文件的传输效率和完整性;
(4)本发明内核驱动截获文件系统调用函数,截获点位于文件I/O操作数据落盘前,即在操作真正实施之前实现截获,并将其发送至复制程序,同步时的实时性更强。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下, 还可以根据这些附图获得其他的附图。
图1为本发明实施例1中Linux下文件系统的实时复制方法流程示意图。
图2为本发明实施例1中总体逻辑结构布局示意图。
图3为本发明实施例1中I/O数据结构图。
图4为本发明实施例2中Linux下文件系统的实时复制系统结构图。
图5为本发明实施例2中文件I/O数据过滤模块结构图。
图6为本发明实施例2中传输判断模块结构图。
图7为本发明实施例3中Linux下文件系统的恢复方法流程示意图。
附图中,各标号所代表的部件列表如下:
201、初始化模块,202、系统调用函数获取模块,203、框架注册模块,204、监控模块,205、同步模块,206、截获模块,207、文件I/O数据过滤模块,208、文件I/O数据封装模块,209、传输模块,210、传输判断模块,2071、文件系统调用函数参数获取单元,2072、当前目录获取单元,2073、文件I/O绝对路径获取单元,2074、文件I/O数据过滤单元,2101、文件I/O数据接收单元,2102、传输判断单元。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
术语解释:
文件I/O操作:即文件输入/输出操作,是指在程序中对文件进行读取和写入的过程;
目标目录:需要实时复制的文件、分区或者文件夹;
原有的日志文件:运行复制程序开始就创建的日志文件。
实施例1
在本实施例中,如图1所示,提供了一种Linux下文件系统的实时复制方法,具有设置在生产端用户层的客户程序、设置在生产端内核层的内核驱动和设置在复制端的复制程序,该方法包括:
步骤S101.客户程序和内核驱动初始化配置文件,两者分别连接复制程序。
值得说明的是,在本实施例的实时复制过程中,会按如图2所示的总体逻辑结构布局进行以下过程:1.生产应用操作生产端文件;2.生产端用户层客户程序同步目标目录到复制端的复制程序;3.生产端内核层内核驱动截获文件系统调用;4.生产应用对磁盘继续操作,同时复制程序对磁盘进行复现操作。
步骤S102.内核驱动获取当前Linux内核源码中涉及目标目录下的I/O操作的文件系统调用函数名称及其参数,文件系统调用参数包括:文件描述符、进程ID和用户空间的路径。
步骤S103.内核驱动将系统调用函数注册入截获框架,再注册截获框架,其中截获框架为Kprobe框架。
值得说明的是,本实施例采用的Kprobe框架和eBPF框架,它们都允许在内核运行时动态加载、更新和运行用户定义的代码,都是通过捕获系统调用来截获文件I/O操作;其中,Kprobe对内核执行流程影响小,操作更方便,而eBPF提供了更多样化的框架用于追踪和可观测性,并且在内核中运行的安全虚拟机中,确保安全性,防止崩溃或安全漏洞。
步骤S104.内核驱动实时监控目标目录。
值得说明的是,所述内核驱动实时监控目标目录,本发明可以实时监控整个文件系统的所有文件I/O操作,因此可以获得文件I/O操作所有的信息,以此为基础,本发明可以扩展至多个不同的Linux文件系统。
步骤S105.客户程序将目标目录同步至复制程序。
步骤S106.当客户端产生文件I/O时,内核驱动截获文件系统调用函数。
值得说明的是,所述内核驱动截获文件系统调用函数,截获点位于文件I/O操作数据落盘前,即在操作真正实施之前实现截获,并将其发送至复制程序,同步时的实时性更强。
步骤S107.内核驱动根据文件系统调用函数,获取文件I/O绝对路径,再过滤获取目标目录的文件I/O数据。
可选的,所述步骤S107,包括:
步骤S1071.内核驱动获取文件系统调用参数;
步骤S1072.内核驱动通过文件系统调用参数中文件描述符或进程ID获取当前目录;
步骤S1073.内核驱动将当前目录和文件系统调用参数中的用户空间路径结合得到文件I/O绝对路径;
值得说明的是,内核驱动识别进程ID,访问其进程控制块以获取当前工作目录,调用涉及文件操作,内核会使用文件描述符,所述文件描述符是一个指向进程打开文件表的索引,来获取关于打开文件的具体信息,结合这些信息,内核驱动解析出完整的文件路径。
步骤S1074.内核驱动根据文件I/O绝对路径过滤出目标目录下的文件I/O数据。
步骤S108.内核驱动按照I/O结构体封装文件I/O数据,I/O结构体包括:文件I/O的操作类型、文件I/O绝对路径、数据写入的偏移量、数据写入的长度、写入的数据、文件I/O操作的时间戳和发送校验码。
值得说明的是,内核驱动对捕获的I/O数据进行了如图3的构造,构造结构为步骤S108中的I/O结构体,另外其中文件I/O的操作类型包括:写文件、创建文件、删除文件、创建文件夹、删除文件夹和文件/文件夹重命名,通过精确地定义所需的数据结构,可以减少不必要的数据传输,从而提高传输效率。
步骤S109.内核驱动将封装的I/O结构体发送至复制程序。
可选的,所述步骤S109,包括:
S1091.内核驱动根据写入数据的大小决定传输的方法,若写入的数据大小超过4096字节,则将写入的数据分段发送,分段默认值为4096字节;若写入数据不足4096字节,则直接发送。
值得说明的是,基于上述文件I/O数据获取过程和发送逻辑,I/O结构体的写入的数据设置为4096字节,通常是4KB,即一个标准页面大小,大多数现代文件系统的块大小也是4KB,意味着4KB的数据块可以有效地映射到文件系统的一个块上,减少了磁盘访问次数,并提高了数据读写的效率,整个I/O结构体固定大小,方便进行分段传输和接收。
步骤S110.复制程序接收并根据封装的I/O结构体判断数据传输是否成功,若是,则执行操作复现;若否,则通知内核驱动进行数据重传。
可选的,所述步骤S110,包括:
步骤S1101.复制程序接收封装的I/O结构,并从封装的I/O结构中读取写入的数据和发送校验码,再将写入的数据转化为接收校验码与发送校验码进行比对;
步骤S1102.复制程序根据比对结果判断是否传输成功,若是,读取文件I/O操作的类型,根据文件I/O操作的类型调用复现函数,并将I/O结构体作为参数传入复现函数进行操作复现;若否,则通知内核驱动进行数据重传。
本实施例实现了对于Linux文件系统调用的截获和数据的实时复制,当生产端发生文件操作时,在I/O数据真正落盘前截获,将截获的I/O操作数据封装发送至复制程序,复制程序复现操作和生产端操作几乎同时发生,实现了真正的实时同步。
实施例2
在本实施例中,如图4所示,提供了一种Linux下文件系统的实时复制系统,该系统包括:
初始化模块201,用于客户程序和内核驱动初始化配置文件,两者分别连接复制程序;
系统调用函数获取模块202,用于内核驱动获取当前Linux内核源码中涉及目标目录下的I/O操作的文件系统调用函数名称和参数,文件系统调用参数包括:文件描述符、进程ID和用户空间的路径;
框架注册模块203,用于内核驱动将系统调用函数注册入截获框架,再注册截获框架,其中截获框架为Kprobe框架;
监控模块204,用于内核驱动实时监控目标目录;
同步模块205,用于客户程序将目标目录同步至复制程序;
截获模块206,用于当客户端产生文件I/O时,内核驱动截获文件系统调用函数;
文件I/O数据过滤模块207,用于内核驱动根据文件系统调用函数,获取文件I/O绝对路径,再过滤获取目标目录的文件I/O数据;
文件I/O数据封装模块208,用于内核驱动按照I/O结构体封装文件I/O数据,I/O结构体包括:文件I/O操作的类型、文件I/O绝对路径、数据写入的偏移量、数据写入的长度、写入的数据、文件I/O操作的时间戳和发送校验码;
传输模块209,用于内核驱动将封装的I/O结构体发送至复制程序;
传输判断模块210,用于复制程序接收并根据封装的I/O结构体判断数据传输是否成功,若是,则执行操作复现;若否,则通知内核驱动进行数据重传。
可选的,如图5所示,所述文件I/O数据过滤模块207,包括:
文件系统调用函数参数获取单元2071,用于内核驱动获取文件系统调用参数;
当前目录获取单元2072,用于内核驱动通过文件系统调用参数中的文件描述符或进程ID获取当前目录;
文件I/O绝对路径获取单元2073,用于内核驱动将当前目录和文件系统调用参数中的用户空间路径结合得到文件I/O绝对路径;
文件I/O数据过滤单元2074,用于内核驱动根据文件I/O绝对路径过滤出目标目录下的文件I/O数据。
可选的,如图6所示,所述传输判断模块210,包括:
文件I/O数据接收单元2101,用于复制程序接收封装的I/O结构,并从封装的I/O结构中读取写入的数据和发送校验码,再将写入的数据转化为接收校验码与发送校验码进行比对;
传输判断单元2102,用于复制程序根据比对结果判断是否传输成功,若是,读取文件I/O操作的类型,根据文件I/O操作的类型调用复现函数,并将I/O结构体作为参数传入复现函数进行操作复现;若否,则通知内核驱动进行数据重传。
本实施例提供的Linux基于文件系统的实时复制系统实现了目标目录的实时监控和数据同步,确保了数据的即时备份和一致性,通过高效地截获和过滤文件I/O操作,系统只关注重要数据,减少了不必要的处理和存储开销,提供了一个高效、可靠且自动化的数据实时复制解决方案,适用于对数据安全和实时性有高要求的场景。
实施例3
在本实施例中,如图7所示,提供了一种Linux下文件系统的恢复方法,利用实施例1所述的Linux下文件系统的实时复制方法,该方法包括:
步骤S301.客户程序和内核驱动初始化配置文件,两者分别连接复制程序;
步骤S302.内核驱动获取当前Linux内核源码中涉及目标目录下的I/O操作的文件系统调用函数名称及其参数,文件系统调用参数包括:文件描述符、进程ID和用户空间的路径;
步骤S303.内核驱动将系统调用函数注册入截获框架,再注册截获框架,其中截获框架为eBPF框架;
步骤S304.内核驱动实时监控目标目录;
步骤S305.客户程序将目标目录同步至复制程序;
步骤S306.当客户端产生文件I/O时,内核驱动截获文件系统调用函数;
步骤S307.内核驱动根据文件系统调用函数,获取文件I/O绝对路径,再过滤获取目标目录的文件I/O数据;
步骤S308.内核驱动按照I/O结构体封装文件I/O数据,I/O结构体包括:文件I/O操作的类型、文件I/O绝对路径、数据写入的偏移量、数据写入的长度、写入的数据、文件I/O操作的时间戳和发送校验码;
步骤S309.内核驱动将封装的I/O结构体发送至复制程序;
步骤S310.复制程序接收并根据封装的I/O结构体判断数据传输是否成功,若是,则执行操作复现;若否,则通知内核驱动进行数据重传;
步骤S311.复制程序根据当前的系统时间判断是否需要新建日志文件,如果是,则新建日志文件,并将文件I/O数据写入;如果否,直接将文件I/O数据写入原有的日志文件末尾;
步骤S312.复制程序获取目标目录的时间戳和路径;
步骤S313.复制程序再根据目标目录的时间戳和路径,查找目标日志文件,获取目标文件I/O数据,恢复出目标目录。
另外,在步骤S312中,更具体的可以为:根据获取的目标目录的时间戳和路径,若用户未输入路径,则判断进行整个目标目录的恢复,若未输入时间戳,则判断使用默认的初始化配置文件中的时间戳;若输入时间戳和路径,则进行步骤S313。
值得说明的是,本发明中的日志文件分天存放,方便日志进行回收;每个日志文件有相应日志索引文件,可以根据存储的日志索引快速定位至日志记录,极大的加快了恢复速度。
面对生产端系统崩溃、文件损坏等情况,本实施例通过目标的时间戳和路径,快速查找日志记录数据,读取数据后,可以快速恢复受损的文件,并将生产端和复制端进行同步,保证系统的正常运行。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++、Ruby、Go,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种Linux下文件系统的实时复制方法,其特征在于,具有设置在生产端用户层的客户程序、设置在生产端内核层的内核驱动和设置在复制端的复制程序,所述方法包括步骤:
客户程序和内核驱动初始化配置文件,两者分别连接复制程序;
内核驱动实时监控目标目录;
客户程序将目标目录同步至复制程序;
当客户端产生文件I/O时,内核驱动截获文件系统调用函数;
内核驱动根据文件系统调用函数,获取文件I/O绝对路径,再过滤获取目标目录的文件I/O数据;
内核驱动按照I/O结构体封装文件I/O数据,I/O结构体包括:文件I/O操作的类型、文件I/O绝对路径、数据写入的偏移量、数据写入的长度、写入的数据、文件I/O操作的时间戳和发送校验码;
内核驱动将封装的I/O结构体发送至复制程序;
复制程序接收并根据封装的I/O结构体判断数据传输是否成功,若是,则执行操作复现;若否,则通知内核驱动进行数据重传。
2.根据权利要求1所述的Linux下文件系统的实时复制方法,其特征在于,所述内核驱动将封装的I/O结构体发送至复制程序的步骤,包括:
内核驱动根据写入数据的大小决定传输的方法,若写入的数据大小超过4096字节,则将写入的数据分段发送,分段默认值为4096字节;若写入数据不足4096字节,则直接发送。
3.根据权利要求1所述的Linux下文件系统的实时复制方法,其特征在于,所述复制程序接收并根据封装的I/O结构体判断数据传输是否成功步骤,包括:
复制程序接收封装的I/O结构,并从封装的I/O结构中读取写入的数据和发送校验码,再将写入的数据转化为接收校验码与发送校验码进行比对;
复制程序根据比对结果判断是否传输成功,若是,读取文件I/O操作的类型,根据文件I/O操作的类型调用复现函数,并将I/O结构体作为参数传入复现函数进行操作复现;若否,则通知内核驱动进行数据重传。
4.根据权利要求1所述的Linux下文件系统的实时复制方法,其特征在于,在所述内核驱动实时监控目标目录步骤之前,还包括:
内核驱动获取当前Linux内核源码中涉及目标目录下的I/O操作的文件系统调用函数名称及其参数,文件系统调用参数包括:文件描述符、进程ID和用户空间的路径;
内核驱动将系统调用函数注册入截获框架,再注册截获框架,其中截获框架为:Kprobe框架或者eBPF框架。
5.根据权利要求4所述的Linux下文件系统的实时复制方法,其特征在于,所述内核驱动根据文件系统调用函数,获取文件I/O绝对路径,再过滤获取目标目录的文件I/O数据步骤,包括:
内核驱动获取文件系统调用参数;
内核驱动通过文件系统调用参数中的文件描述符或进程ID获取当前目录;
内核驱动将当前目录和文件系统调用参数中的用户空间路径结合得到文件I/O绝对路径;
内核驱动根据文件I/O绝对路径过滤出目标目录下的文件I/O数据。
6.一种Linux下文件系统的实时复制系统,其特征在于,具有设置在生产端用户层的客户程序、设置在生产端内核层的内核驱动和设置在复制端的复制程序,所述系统包括:
初始化模块,用于客户程序和内核驱动初始化配置文件,两者分别连接复制程序;
监控模块,用于内核驱动实时监控目标目录;
同步模块,用于客户程序将目标目录同步至复制程序;
截获模块,用于当客户端产生文件I/O时,内核驱动截获文件系统调用函数;
文件I/O数据过滤模块,用于内核驱动根据文件系统调用函数,获取文件I/O绝对路径,再过滤获取目标目录的文件I/O数据;
文件I/O数据封装模块,用于内核驱动按照I/O结构体封装文件I/O数据,I/O结构体包括:文件I/O操作的类型、文件I/O绝对路径、数据写入的偏移量、数据写入的长度、写入的数据、文件I/O操作的时间戳和发送校验码;
传输模块,用于内核驱动将封装的I/O结构体发送至复制程序;
传输判断模块,用于复制程序接收并根据封装的I/O结构体判断数据传输是否成功,若是,则执行操作复现;若否,则通知内核驱动进行数据重传。
7.根据权利要求6所述的Linux下文件系统的实时复制系统,其特征在于,所述传输判断模块,包括:
文件I/O数据接收单元,用于复制程序接收封装的I/O结构,并从封装的I/O结构中读取写入的数据和发送校验码,再将写入的数据转化为接收校验码与发送校验码进行比对;
传输判断单元,用于复制程序根据比对结果判断是否传输成功,若是,读取文件I/O操作的类型,根据文件I/O操作的类型调用复现函数,并将I/O结构体作为参数传入复现函数进行操作复现;若否,则通知内核驱动进行数据重传。
8.根据权利要求6所述的Linux下文件系统的实时复制系统,其特征在于,在所述监控模块之前,还包括:
系统调用函数获取模块,用于内核驱动获取当前Linux内核源码中涉及目标目录下的I/O操作的文件系统调用函数名称和参数,文件系统调用参数包括:文件描述符、进程ID和用户空间的路径;
框架注册模块,用于内核驱动将系统调用函数注册入截获框架,再注册截获框架,其中截获框架包括:Kprobe框架或者eBPF框架。
9.根据权利要求8所述的Linux下文件系统的实时复制系统,其特征在于,所述文件I/O数据过滤模块,包括:
文件系统调用函数参数获取单元,用于内核驱动获取文件系统调用参数;
当前目录获取单元,用于内核驱动通过文件系统调用参数中的文件描述符或进程ID获取当前目录;
文件I/O绝对路径获取单元,用于内核驱动将当前目录和文件系统调用参数中的用户空间路径结合得到文件I/O绝对路径;
文件I/O数据过滤单元,用于内核驱动根据文件I/O绝对路径过滤出目标目录下的文件I/O数据。
10.一种Linux下文件系统的恢复方法,其特征在于,利用权利要求1至5任一项所述Linux下文件系统的实时复制方法,还包括步骤:
复制程序根据当前的系统时间判断是否需要创建新日志文件,如果是,则创建新日志文件,并将文件I/O数据写入新日志文件;如果否,直接将文件I/O数据写入原有日志文件末尾;
复制程序获取目标目录的时间戳和路径;
复制程序根据目标目录的时间戳和路径,查找目标日志文件,再从目标日志文件中获取目标文件I/O数据,恢复出目标目录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410160347.6A CN117724905B (zh) | 2024-02-05 | 2024-02-05 | Linux下文件系统的实时复制方法、系统及恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410160347.6A CN117724905B (zh) | 2024-02-05 | 2024-02-05 | Linux下文件系统的实时复制方法、系统及恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117724905A true CN117724905A (zh) | 2024-03-19 |
CN117724905B CN117724905B (zh) | 2024-04-19 |
Family
ID=90205646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410160347.6A Active CN117724905B (zh) | 2024-02-05 | 2024-02-05 | Linux下文件系统的实时复制方法、系统及恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117724905B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810056A (zh) * | 2012-11-06 | 2014-05-21 | 南京壹进制信息技术有限公司 | 一种在Linux平台上获得一致性备份的方法 |
US20150213051A1 (en) * | 2014-01-24 | 2015-07-30 | Ca, Inc. | System and method for high availability data replication |
US9384253B1 (en) * | 2013-03-13 | 2016-07-05 | Ca, Inc. | System and method for multiple-layer data replication in a Linux architecture |
US20190324882A1 (en) * | 2018-04-20 | 2019-10-24 | Draios, Inc. | Programmatic container monitoring |
CN111966529A (zh) * | 2020-07-14 | 2020-11-20 | 上海浩霖汇信息科技有限公司 | 一种数据库文件实时增量同步备份的方法及系统 |
CN112905391A (zh) * | 2021-05-07 | 2021-06-04 | 南京云信达科技有限公司 | 一种基于页写时复制的数据同步方法及系统 |
CN113568788A (zh) * | 2021-09-26 | 2021-10-29 | 成都云祺科技有限公司 | Linux非逻辑卷块设备的快照方法、系统及存储介质 |
CN114090072A (zh) * | 2022-01-21 | 2022-02-25 | 成都云祺科技有限公司 | Windows用户文件系统开发框架搭建方法、系统及其应用 |
CN114398318A (zh) * | 2022-03-25 | 2022-04-26 | 广东统信软件有限公司 | 用户空间文件系统的文件操作方法及用户空间文件系统 |
CN114880290A (zh) * | 2022-05-26 | 2022-08-09 | 统信软件技术有限公司 | 一种虚拟文件系统的监控方法、监控装置及计算设备 |
CN115617263A (zh) * | 2022-09-20 | 2023-01-17 | 浪潮云信息技术股份公司 | 块设备的自动发现及实时复制变化数据的方法及存储介质 |
CN115686932A (zh) * | 2022-09-07 | 2023-02-03 | 安徽鼎甲计算机科技有限公司 | 备份集文件恢复方法、装置和计算机设备 |
-
2024
- 2024-02-05 CN CN202410160347.6A patent/CN117724905B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810056A (zh) * | 2012-11-06 | 2014-05-21 | 南京壹进制信息技术有限公司 | 一种在Linux平台上获得一致性备份的方法 |
US9384253B1 (en) * | 2013-03-13 | 2016-07-05 | Ca, Inc. | System and method for multiple-layer data replication in a Linux architecture |
US20150213051A1 (en) * | 2014-01-24 | 2015-07-30 | Ca, Inc. | System and method for high availability data replication |
US20190324882A1 (en) * | 2018-04-20 | 2019-10-24 | Draios, Inc. | Programmatic container monitoring |
CN111966529A (zh) * | 2020-07-14 | 2020-11-20 | 上海浩霖汇信息科技有限公司 | 一种数据库文件实时增量同步备份的方法及系统 |
CN112905391A (zh) * | 2021-05-07 | 2021-06-04 | 南京云信达科技有限公司 | 一种基于页写时复制的数据同步方法及系统 |
CN113568788A (zh) * | 2021-09-26 | 2021-10-29 | 成都云祺科技有限公司 | Linux非逻辑卷块设备的快照方法、系统及存储介质 |
CN114090072A (zh) * | 2022-01-21 | 2022-02-25 | 成都云祺科技有限公司 | Windows用户文件系统开发框架搭建方法、系统及其应用 |
CN114398318A (zh) * | 2022-03-25 | 2022-04-26 | 广东统信软件有限公司 | 用户空间文件系统的文件操作方法及用户空间文件系统 |
CN114880290A (zh) * | 2022-05-26 | 2022-08-09 | 统信软件技术有限公司 | 一种虚拟文件系统的监控方法、监控装置及计算设备 |
CN115686932A (zh) * | 2022-09-07 | 2023-02-03 | 安徽鼎甲计算机科技有限公司 | 备份集文件恢复方法、装置和计算机设备 |
CN115617263A (zh) * | 2022-09-20 | 2023-01-17 | 浪潮云信息技术股份公司 | 块设备的自动发现及实时复制变化数据的方法及存储介质 |
Non-Patent Citations (3)
Title |
---|
00000928: "【Linux驱动】用户控件程序与内核模块交互--IOCTL和Netlink", pages 1 - 7, Retrieved from the Internet <URL:《https://blog.csdn.net/eidolon_foot/article/details/135575367》> * |
SUJIN PARK等: "Application-Informed Kernel Synchronization Primitives", 《16TH USENIX SYMPOSIUM ON OPERATING SYSTEMS DESIGN AND IMPLEMENTATION》, 13 July 2022 (2022-07-13), pages 667 - 682 * |
苏冠群: "Linux平台远程数据容灾系统的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 10, 15 October 2012 (2012-10-15), pages 138 - 2062 * |
Also Published As
Publication number | Publication date |
---|---|
CN117724905B (zh) | 2024-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6566330B2 (ja) | 映像編集方法 | |
US11977511B2 (en) | Synthesizing fully hydrated cloud snapshots | |
US7890551B2 (en) | Active file change notification | |
US9031997B2 (en) | Log file compression | |
US20070294310A1 (en) | Method and apparatus for storing and recovering fixed content | |
CN110162517A (zh) | 数据迁移方法、装置、设备及计算机可读存储介质 | |
CN104216806A (zh) | 一种文件系统序列化操作日志的捕获与传输方法及其装置 | |
CN111240892B (zh) | 数据备份方法及装置 | |
CN104899111A (zh) | 一种处理家庭网关系统内核崩溃的方法及系统 | |
US9817834B1 (en) | Techniques for performing an incremental backup | |
EP0325777A2 (en) | A distributed auditing subsystem for an operating system | |
CN101216794A (zh) | 改进的Server-Less备份方法、存储设备及备份服务器 | |
CN104750741A (zh) | 一种无效链接处理方法及装置 | |
WO2021254214A1 (zh) | 安卓应用程序迁移的方法和装置 | |
CN113157487A (zh) | 数据恢复方法及其设备 | |
CN117724905B (zh) | Linux下文件系统的实时复制方法、系统及恢复方法 | |
CN112925676B (zh) | 一种基于wal实现分布式数据库集群任意时间点恢复的方法 | |
CN110109780A (zh) | 一种用于nas服务的文件级数据备份和恢复方法 | |
CN116132625A (zh) | 交易流程的监管方法和装置 | |
CN111581016B (zh) | 一种现代应用的副本数据管理系统及方法 | |
CN112199329B (zh) | 基于堡垒机的双机运维数据归档清理方法与设备 | |
TWI503695B (zh) | 封包資料提取裝置、封包資料提取裝置之控制方法、控制程式及電腦可讀取之儲存媒體 | |
CN111611107A (zh) | 获取数据库日志的方法及装置 | |
CN113127261A (zh) | 文件处理方法、装置、设备及存储介质 | |
CN112217881B (zh) | 基于运维审计系统的文件同步方法与设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |