【技术实现步骤摘要】
KVM虚拟机应用层无代理CDP方法、系统及存储介质
[0001]本专利技术属于数据恢复
,涉及一种KVM虚拟机应用层无代理CDP方法、系统及存储介质。
技术介绍
[0002]近年来,在数字经济全球化的浪潮下,云计算发展迅猛,已经得到各大政府部门和企业的大力支持,云计算技术的基础与核心就是虚拟化,而市场上开源的虚拟化方案有很多种,其中基于内核的虚拟机(Kernel
‑
based Virtual Machine,KVM)是最流行的一种方案。而在数据恢复领域,针对KVM虚拟机数据备份的研究是十分重要的课题。
[0003]传统备份技术一般都是采取定时或者手动备份,当数据损坏或者丢失时只能恢复到备份时指定的时间点,而不在该时间点的数据就会存在损坏或者丢失的风险,故连续数据保护技术(continuous data protection,CDP)是针上述风险提出来的一种技术方案,该技术方案一般是通过捕获目标数据的变化,使得当数据发生损坏或者丢失时,可以将数据恢复到任意时间点,提高备份的效率。
[00 ...
【技术保护点】
【技术特征摘要】
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函数通过所述函数调用机器码进行...
【专利技术属性】
技术研发人员:黄传波,谢俊峰,陈翰霖,钱禹航,谢卓伟,涂磊,
申请(专利权)人:成都云祺科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。