一种解压qcow镜像文件中压缩数据的方法技术

技术编号:21034116 阅读:65 留言:0更新日期:2019-05-04 05:22
本发明专利技术公开了一种解压qcow镜像文件中压缩数据的方法,其特征在于包括以下步骤:S100:查找并解析磁盘中qcow镜像文件,获取所述qcow镜像文件中压缩数据;S200:获取zlib库中压缩数据的头部;S300:解压所述qcow镜像文件的压缩数据。本发明专利技术利用zlib库,对压缩的qcow1镜像文件及压缩的qcow2镜像文件能够进行无损解压,对应各个版本的zlib库适应性良好,解决了现有技术中尚无一种解压qcow镜像文件中压缩数据的方法的技术问题。

A method of decompressing compressed data in qcow image file

【技术实现步骤摘要】
一种解压qcow镜像文件中压缩数据的方法
本专利技术属于数据解压领域,涉及一种解压qcow镜像文件中压缩数据的方法。
技术介绍
Qemu发源码的模拟处理器,与其他模拟处理器相比有开源、可移植、仿真速度快的等优点,在GNU/Linux平台上使用广泛。qcow镜像文件包括qcow1、qcow2及qcow3三种版本,其中,qcow1、qcow2及qcow3是其扩展镜像文件的后缀。qcow2及qcow3镜像文件具有相同的数据结构,但又与qcow1镜像文件的数据结构不同,qcow2及qcow3文件系统不支持空洞,拥有更小的文件占用、支持写时拷贝、支持快照、可以选择基于zlib的压缩方式以及AES加密,目前,在现有技术中使用qcow镜像文件的同时,qcow2镜像文件及qcow3镜像文件正被越来越多地使用。在提取、解析qcow镜像文件过程中,还需要对压缩的qcow1、qcow2及qcow3镜像文件进行解压,以便正常地读取qcow1、qcow2及qcow3镜像文件。但是,qcow镜像文件是基于zlib的方式并以簇为单位分别进行压缩,而使用zlib库却不能直接解压,如果使用zlib库直接解压,将会出现本文档来自技高网...

【技术保护点】
1.一种解压qcow镜像文件中压缩数据的方法,其特征在于包括以下步骤:S100:查找并解析磁盘中qcow镜像文件,获取所述qcow镜像文件中压缩数据,包含以下步骤:S101:获取所述qcow镜像文件中头文件信息的第4至第7字节的内容作为版本,第32字节的内容0xXY作为簇位移数,其中,X、Y为大于零的自然数;S102:判断所述qcow镜像文件的版本是否为1,如果是,执行步骤S103,否则执行步骤S105;S103:解析对应的二级表中当前项的前8字节内容,判断最高bit位是否为1,如果是,执行步骤S104,否则,结束流程;S104:最高bit位后的连续0xXY bit位表示簇压缩后的大小,单位为...

【技术特征摘要】
1.一种解压qcow镜像文件中压缩数据的方法,其特征在于包括以下步骤:S100:查找并解析磁盘中qcow镜像文件,获取所述qcow镜像文件中压缩数据,包含以下步骤:S101:获取所述qcow镜像文件中头文件信息的第4至第7字节的内容作为版本,第32字节的内容0xXY作为簇位移数,其中,X、Y为大于零的自然数;S102:判断所述qcow镜像文件的版本是否为1,如果是,执行步骤S103,否则执行步骤S105;S103:解析对应的二级表中当前项的前8字节内容,判断最高bit位是否为1,如果是,执行步骤S104,否则,结束流程;S104:最高bit位后的连续0xXYbit位表示簇压缩后的大小,单位为byte,其余bit位表示簇地址,执行步骤S110;S105:解析对应的二级表中当前项的前8字节内容,判断次高bit位是否为1,如果是,执行步骤S106,否则,结束流程;S106:次高bit位后的连续0xXYbit位代表簇压缩后的大小,单位为扇区,其余bit位表示簇地址;S107:判断二级表中当前项的下一项表示的簇是否为压缩数据,如果是,执行步骤S108,否则,执行步骤S109;S108:当前地址减下一地址的差,与所述簇压缩后的大小乘以512的积进行比较,较大者的值加512的和作为簇压缩后的大小,其单位为byte,执行S110;S109:簇压缩后的大小等于所述簇压缩后的大小乘以512的积,再加512的和,其单位为byte,执行步骤S110;S110:根据获取到的簇地址及簇压缩后的大小,从所述qcow镜像文件中读取压缩数据,执行步骤S200;S200:获取z...

【专利技术属性】
技术研发人员:梁效宁许超明刘波朱星海董超
申请(专利权)人:四川巧夺天工信息安全智能设备有限公司
类型:发明
国别省市:四川,51

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

1