KVM虚拟机应用层无代理CDP方法、系统及存储介质技术方案

技术编号:37669626 阅读:37 留言:0更新日期:2023-05-26 04:30
本发明专利技术涉及一种KVM虚拟机应用层无代理CDP方法、系统及存储介质,属于计算机数据恢复技术领域。所述方法包括:获取libc.so动态链接库地址和磁盘格式步骤、获取dlopen函数地址步骤、分配dlopen函数调用栈空间和参数字符串空间步骤、调用dlopen函数加载so文件步骤、替换I/O写函数步骤、备份I/O写数据步骤。所述系统包括:获取libc.so动态链接库地址和磁盘格式模块、获取dlopen函数地址模块、分配dlopen函数调用栈空间和参数字符串空间模块、调用dlopen函数加载so文件模块、替换I/O写函数模块、备份I/O写数据模块。本发明专利技术通过在QEMU应用层对I/O进行捕获,适用于所有格式的磁盘,能够将KVM虚拟机数据恢复到任意时间点,从而实现了连续数据保护,使CDP技术在虚拟化中良好运用。用。用。

【技术实现步骤摘要】
KVM虚拟机应用层无代理CDP方法、系统及存储介质


[0001]本专利技术属于数据恢复
,涉及一种KVM虚拟机应用层无代理CDP方法、系统及存储介质。

技术介绍

[0002]近年来,在数字经济全球化的浪潮下,云计算发展迅猛,已经得到各大政府部门和企业的大力支持,云计算技术的基础与核心就是虚拟化,而市场上开源的虚拟化方案有很多种,其中基于内核的虚拟机(Kernel

based Virtual Machine,KVM)是最流行的一种方案。而在数据恢复领域,针对KVM虚拟机数据备份的研究是十分重要的课题。
[0003]传统备份技术一般都是采取定时或者手动备份,当数据损坏或者丢失时只能恢复到备份时指定的时间点,而不在该时间点的数据就会存在损坏或者丢失的风险,故连续数据保护技术(continuous data protection,CDP)是针上述风险提出来的一种技术方案,该技术方案一般是通过捕获目标数据的变化,使得当数据发生损坏或者丢失时,可以将数据恢复到任意时间点,提高备份的效率。
[0004]目前,针对KV本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种KVM虚拟机应用层无代理CDP方法,其特征在于,所述方法包括步骤:读取proc文件系统,获取目标QEMU进程依赖的libc.so动态链接库地址和目标虚拟机的磁盘格式;通过ELF文件格式和所述libc.so动态链接库地址解析所述libc.so动态链接库,获取dlopen函数地址;向所述libc.so动态链接库的ELF头部第9至第16字节地址空间填入系统调用机器码,再调用sys_mmap系统调用分配预定大小的物理内存映射到所述目标QEMU进程的地址空间,其中所述物理内存是dlopen函数的调用栈空间和dlopen函数参数所需要的字符串空间,其中所述sys_mmap系统调用通过所述系统调用机器码进行调用;向所述libc.so动态链接库的ELF头部第9至第16字节地址空间填入函数调用机器码,配置dlopen函数调用栈和dlopen函数参数对应的字符串,再调用dlopen函数将so文件加载到所述目标QEMU进程的地址空间,其中所述dlopen函数通过所述函数调用机器码进行调用;通过所述磁盘格式在所述目标QEMU进程的地址空间寻找目标磁盘结构体BlockDriver,再使用so文件的hook函数替换所述目标磁盘结构体BlockDriver的I/O写函数;通过所述hook函数截获I/O写数据并备份截获的I/O写数据。2.根据权利要求1所述的KVM虚拟机应用层无代理CDP方法,其特征在于,所述通过ELF文件格式和所述libc.so动态链接库地址解析所述libc.so动态链接库,获取dlopen函数地址步骤,包括:通过ELF文件格式读取libc.so动态链接库,获取所述libc.so动态链接库的ELF头部信息;解析所述ELF头部信息,获取libc.so动态链接库的节区头部表信息,所述节区头部表存放着所有节区的信息;解析所述节区头部表信息,获取存放函数地址信息的节区,所述存放函数地址信息的节区包括:dynsym节区、dynstr节区、rela.pl节区和rela.dyn节区;遍历所述存放函数地址信息的节区,获取dlopen函数地址。3.根据权利要求1所述的KVM虚拟机应用层无代理CDP方法,其特征在于,所述向所述libc.so动态链接库的ELF头部第9至第16字节地址空间填入系统调用机器码,再调用sys_mmap系统调用分配预定大小的物理内存映射到所述目标QEMU进程的地址空间步骤,包括:选取libc.so动态链接库的ELF头部第9至第16字节地址空间作为机器码存放地址;向所述机器码存放地址填入系统调用机器码,所述系统调用机器码为syscall指令和、int3指令和nop指令;调用sys_mmap系统调用分配预定大小的物理内存映射到所述目标QEMU进程的地址空间,其中所述物理内存是dlopen函数的调用栈空间和dlopen函数参数所需要的字符串空间,其中所述sys_mmap系统调用通过所述系统调用机器码进行调用。4.根据权利要求3所述的KVM虚拟机应用层无代理CDP方法,其特征在于,所述调用sys_mmap系统调用分配预定大小的物理内存映射到所述目标QEMU进程的地址空间步骤,还包括:
所述dlopen函数的调用栈空间大小为S,所述S≧8兆字节;以字节为单位分配dlopen函数参数所需要的字符串空间,不足一内存页按一内存页处理,所述内存页大小为4096字节。5.根据权利要求1所述的KVM虚拟机应用层无代理CDP方法,其特征在于,所述向所述libc.so动态链接库的ELF头部第9至第16字节地址空间填入函数调用机器码,配置dlopen函数调用栈和dlopen函数参数对应的字符串,再调用dlopen函数将so文件加载到所述目标QEMU进程的地址空间步骤,包括:向libc.so动态链接库的ELF头部第9至第16字节地址空间填入函数调用机器码,所述函数调用机器码为callq *%rax指令、int3指令和nop指令;在RAX寄存器、RBP寄存器、RSP寄存器、RDI寄存器中依次存放dlopen函数地址、dlopen函数调用栈空间的栈底地址、dlopen函数调用栈空间的栈顶地址、dlopen函数参数对应的字符串空间地址;调用dlopen函数将so文件加载到所述目标QEMU进程的地址空间,其中所述dlopen函数通过所述函数调用机器码进行...

【专利技术属性】
技术研发人员:黄传波谢俊峰陈翰霖钱禹航谢卓伟涂磊
申请(专利权)人:成都云祺科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1