一种收缩虚拟磁盘镜像文件的方法及装置制造方法及图纸

技术编号:8323447 阅读:201 留言:0更新日期:2013-02-14 00:47
本申请提供了一种收缩虚拟磁盘镜像文件的方法及装置,以解决目前的虚拟磁盘镜像文件即使删除数据也不会使文件减小,从而浪费存储空间的问题。所述方法包括:查找文件中的垃圾数据块,并修改所述垃圾数据块在块分配表中的相应记录,其中所述垃圾数据块为不保存有效数据的数据块;将位于垃圾数据块后面的有效数据块迁移至垃圾数据块的位置,并修改迁移后的有效数据块在块分配表中的相应记录;在完成数据块迁移后,将所述文件进行截短。本申请使得虚拟磁盘镜像文件删除某些数据后,镜像文件的大小也可以减小,从而节省文件所需的存储空间。

【技术实现步骤摘要】

本申请涉及计算机文件处理技术,特别是涉及一种收缩虚拟磁盘镜像文件的方法及装置
技术介绍
镜像文件其实和ZIP压缩包类似,它将特定的一系列文件按照一定的格式制作成单一的文件,以方便用户下载和使用,例如一个测试版的操作系统、游戏等。它最重要的特点是可以被特定的软件识别并可直接刻录到光盘上。其实通常意义上的镜像文件可以再扩展一下,在镜像文件中可以包含更多的信息。比如说系统文件、引导文件、分区表信息等,这样镜像文件就可以包含一个分区甚至是一块硬盘的所有信息。VHD (Virtual Hard Disk)是一种虚拟磁盘的镜像文件格式。VHD格式的文件可以 作为一种虚拟磁盘,进行文件系统格式化、存储虚拟机的数据。VHD包括三种类型固定(fixed)磁盘镜像、动态(dynamic)磁盘镜像、增量(differencing)磁盘镜像。固定磁盘镜像文件的大小在创建时就确定了下来,在它上面格式化文件系统、写入数据、删除数据都不会改变镜像文件的大小。动态磁盘镜像文件和增量磁盘镜像文件会随着写入数据的增加而增长,但当数据被删除后,镜像文件的大小不会减小。例如,创建一个2GB的动态磁盘镜像文件,它的最初大小仅为十几KB,随着写入的数据不断增加,它的大小最多可以增长到约2GB,但删除数据并不会使它的大小减少。基于这种特性,所述动态磁盘镜像文件和增量磁盘镜像文件一旦写入数据,其文件大小就会增长,即使以后删除数据也不会使文件减小,因此这部分删除的数据相当于仍在占用VHD的存储空间,造成了存储空间的浪费。
技术实现思路
本申请提供了一种收缩虚拟磁盘镜像文件的方法及装置,以解决目前的虚拟磁盘镜像文件即使删除数据也不会使文件减小,从而浪费存储空间的问题。为了解决上述问题,本申请公开了一种收缩虚拟磁盘镜像文件的方法,其中所述文件包含数据块和用于记录每个数据块信息的块分配表;所述方法包括查找文件中的垃圾数据块,并修改所述垃圾数据块在块分配表中的相应记录,其中所述垃圾数据块为不保存有效数据的数据块;将位于垃圾数据块后面的有效数据块迁移至垃圾数据块的位置,并修改迁移后的有效数据块在块分配表中的相应记录;在完成数据块迁移后,将所述文件进行截短。优选的,每个数据块包含扇区和用于记录每个扇区信息的扇区位图;所述查找文件中的垃圾数据块之前,还包括查找文件数据块中的垃圾扇区,并修改所述垃圾扇区在扇区位图中的相应记录。优选的,所述查找文件中的垃圾数据块,包括查找文件数据块中的扇区位图,将扇区位图中对应所有扇区的记录都表示为垃圾扇区的数据块作为垃圾数据块。优选的,所述查找文件数据块中的垃圾扇区,包括查找文件数据块中的扇区位图,如果扇区位图中对应某个扇区的记录表示该扇区中存储着数据,则继续进行以下判断如果所述文件是动态磁盘镜像文件,则判断该扇区中存储的数据是否全为0,如果是,则将该扇区作为垃圾扇区;如果所述文件是增量磁盘镜像文件,则判断该扇区中存储的数据是否与父镜像文件中相同扇区位置的数据一致,如果一致,则将该扇区作为垃圾扇区。优选的,所述查找文件数据块中的垃圾扇区,包括如果所述文件是动态磁盘镜像文件,则获取文件数据块的原始扇区位图和表示对应扇区是否存储有效数据的反演扇区位图;对比所述原始扇区位图和反演扇区位图的每一位如果原始扇区位图中对应某个扇区的记录表示该扇区中存储着数据,并且该扇区在反演扇区位图中的相应记录表示该扇区中 没有存储数据,则将该扇区作为垃圾扇区。优选的,所述查找文件数据块中的垃圾扇区,包括如果所述文件是增量磁盘镜像文件,则获取文件数据块的原始扇区位图和表示对应扇区是否存储有效数据的反演扇区位图以及祖先镜像文件中相同数据块的扇区位图;对比所述原始扇区位图、反演扇区位图和祖先镜像扇区位图的每一位如果原始扇区位图中对应某个扇区的记录表示该扇区中存储着数据,并且该扇区在祖先镜像扇区位图中的相应记录表示该扇区中没有存储数据,并且该扇区在反演扇区位图中的相应记录表示该扇区中没有存储数据,则将该扇区作为垃圾扇区。优选的,在完成数据块迁移后,将所述文件进行截短,包括在完成数据块迁移后,文件末尾形成一块等于所有垃圾数据块大小的无用区域,将所述无用区域截断,得到截短之后的文件。本申请还提供了一种收缩虚拟磁盘镜像文件的装置,其中所述文件包含数据块和用于记录每个数据块信息的块分配表;所述装置包括垃圾数据块查找模块,用于查找文件中的垃圾数据块,并修改所述垃圾数据块在块分配表中的相应记录,其中所述垃圾数据块为不保存有效数据的数据块;数据迁移模块,用于将位于垃圾数据块后面的有效数据块迁移至垃圾数据块的位置,并修改迁移后的有效数据块在块分配表中的相应记录;文件截短模块,用于在完成数据块迁移后,将所述文件进行截短。优选的,每个数据块包含扇区和用于记录每个扇区信息的扇区位图;所述装置还包括垃圾扇区查找模块,用于查找文件数据块中的垃圾扇区,并修改所述垃圾扇区在扇区位图中的相应记录。优选的,所述垃圾数据块查找模块通过查找文件数据块中的扇区位图,将扇区位图中对应所有扇区的记录都表示为垃圾扇区的数据块作为垃圾数据块。优选的,所述垃圾扇区查找模块包括扇区位图查找子模块,用于查找文件数据块中的扇区位图,如果扇区位图中对应某个扇区的记录表示该扇区中存储着数据,则触发判断子模块;判断子模块,用于进行以下判断如果所述文件是动态磁盘镜像文件,则判断该扇区中存储的数据是否全为0,如果是,则将该扇区作为垃圾扇区;如果所述文件是增量磁盘镜像文件,则判断该扇区中存储的数据是否与父镜像文件中相同扇区位置的数据一致,如果一致,则将该扇区作为垃圾扇区。优选的,如果所述文件是动态磁盘镜像文件,则所述垃圾扇区查找模块包括第一获取子模块,用于获取文件数据块的原始扇区位图和表示对应扇区是否存储有效数据的反演扇区位图;第一对比子模块,用于对比所述原始扇区位图和反演扇区位图的每一位如果原 始扇区位图中对应某个扇区的记录表示该扇区中存储着数据,并且该扇区在反演扇区位图中的相应记录表示该扇区中没有存储数据,则将该扇区作为垃圾扇区。优选的,如果所述文件是增量磁盘镜像文件,则所述垃圾扇区查找模块包括第二获取子模块,用于获取文件数据块的原始扇区位图和表示对应扇区是否存储有效数据的反演扇区位图以及祖先镜像文件中相同数据块的扇区位图;第二对比子模块,对比所述原始扇区位图、反演扇区位图和祖先镜像扇区位图的每一位如果原始扇区位图中对应某个扇区的记录表示该扇区中存储着数据,并且该扇区在祖先镜像扇区位图中的相应记录表示该扇区中没有存储数据,并且该扇区在反演扇区位图中的相应记录表示该扇区中没有存储数据,则将该扇区作为垃圾扇区。与现有技术相比,本申请包括以下优点首先,本申请通过查找虚拟磁盘镜像文件中的垃圾数据块,并将垃圾数据块后面的有效数据块迁移至垃圾数据块的位置,使文件末尾形成一块无用的区域,最后再将这部分无用的区域截断,就可以清除文件中的垃圾数据块,进而收缩文件的大小。本申请使得VHD格式的动态磁盘镜像文件和增量磁盘镜像文件删除某些数据后,镜像文件的大小也可以减小,从而节省文件所需的存储空间。其次,本申请在查找垃圾数据块的过程中,提出一种快速计算垃圾扇区的方法,可以更加快速地识别出数据块中哪些扇区是垃圾扇区,进而将所有扇区都是垃圾扇本文档来自技高网...

【技术保护点】
一种收缩虚拟磁盘镜像文件的方法,其特征在于:所述文件包含数据块和用于记录每个数据块信息的块分配表;所述方法包括:查找文件中的垃圾数据块,并修改所述垃圾数据块在块分配表中的相应记录,其中所述垃圾数据块为不保存有效数据的数据块;将位于垃圾数据块后面的有效数据块迁移至垃圾数据块的位置,并修改迁移后的有效数据块在块分配表中的相应记录;在完成数据块迁移后,将所述文件进行截短。

【技术特征摘要】
1.一种收缩虚拟磁盘镜像文件的方法,其特征在于 所述文件包含数据块和用于记录每个数据块信息的块分配表; 所述方法包括 查找文件中的垃圾数据块,并修改所述垃圾数据块在块分配表中的相应记录,其中所述垃圾数据块为不保存有效数据的数据块; 将位于垃圾数据块后面的有效数据块迁移至垃圾数据块的位置,并修改迁移后的有效数据块在块分配表中的相应记录; 在完成数据块迁移后,将所述文件进行截短。2.根据权利要求I所述的方法,其特征在于 每个数据块包含扇区和用于记录每个扇区信息的扇区位图; 所述查找文件中的垃圾数据块之前,还包括 查找文件数据块中的垃圾扇区,并修改所述垃圾扇区在扇区位图中的相应记录。3.根据权利要求2所述的方法,其特征在于,所述查找文件中的垃圾数据块,包括 查找文件数据块中的扇区位图,将扇区位图中对应所有扇区的记录都表示为垃圾扇区的数据块作为垃圾数据块。4.根据权利要求2所述的方法,其特征在于,所述查找文件数据块中的垃圾扇区,包括 查找文件数据块中的扇区位图,如果扇区位图中对应某个扇区的记录表示该扇区中存储着数据,则继续进行以下判断 如果所述文件是动态磁盘镜像文件,则判断该扇区中存储的数据是否全为O,如果是,则将该扇区作为垃圾扇区; 如果所述文件是增量磁盘镜像文件,则判断该扇区中存储的数据是否与父镜像文件中相同扇区位置的数据一致,如果一致,则将该扇区作为垃圾扇区。5.根据权利要求2所述的方法,其特征在于,所述查找文件数据块中的垃圾扇区,包括 如果所述文件是动态磁盘镜像文件,则获取文件数据块的原始扇区位图和表示对应扇区是否存储有效数据的反演扇区位图; 对比所述原始扇区位图和反演扇区位图的每一位 如果原始扇区位图中对应某个扇区的记录表示该扇区中存储着数据,并且该扇区在反演扇区位图中的相应记录表示该扇区中没有存储数据,则将该扇区作为垃圾扇区。6.根据权利要求2所述的方法,其特征在于,所述查找文件数据块中的垃圾扇区,包括 如果所述文件是增量磁盘镜像文件,则获取文件数据块的原始扇区位图和表示对应扇区是否存储有效数据的反演扇区位图以及祖先镜像文件中相同数据块的扇区位图; 对比所述原始扇区位图、反演扇区位图和祖先镜像扇区位图的每一位 如果原始扇区位图中对应某个扇区的记录表示该扇区中存储着数据,并且该扇区在祖先镜像扇区位图中的相应记录表示该扇区中没有存储数据,并且该扇区在反演扇区位图中的相应记录表示该扇区中没有存储数据,则将该扇区作为垃圾扇区。7.根据权利要求I所述的方法,其特征在于,在完成数据块迁移后,将所述文件进行截短,包括 在完成数据块迁移后,文件末尾形成一块等于所有垃圾数据块大小的无用区域,将所述无用区域截断...

【专利技术属性】
技术研发人员:宋振华陈伟才王倩万佳
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

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

1