CN107918521A - 虚拟磁盘的缩减方法及装置 - Google Patents
虚拟磁盘的缩减方法及装置 Download PDFInfo
- Publication number
- CN107918521A CN107918521A CN201610883616.7A CN201610883616A CN107918521A CN 107918521 A CN107918521 A CN 107918521A CN 201610883616 A CN201610883616 A CN 201610883616A CN 107918521 A CN107918521 A CN 107918521A
- Authority
- CN
- China
- Prior art keywords
- cluster
- data
- tables
- virtual disk
- image file
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种虚拟磁盘的缩减方法,包括步骤:读取QCOW2格式的镜像文件中的数据信息;判断镜像文件中的数据是否为可删除特征数据;当镜像文件中的数据为可删除特征数据时,删除所述可删除特征数据。本发明还公开了一种虚拟磁盘的缩减装置。本发明不需要对虚拟磁盘镜像进行转换,在判断镜像文件中的数据为可删除特征数据时,直接对数据进行删减,方法简单,且大大提高了物理磁盘空间利用率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种虚拟磁盘的缩减方法及装置。
背景技术
随着计算机处理能力的快速增长,硬件资源的规模和种类也在不断扩展。与此同时,在数据中心内,应用和需求越来越复杂、灵活,传统服务器的利用效率日趋降低,因此,虚拟化技术成为了一个重要的解决方案。虚拟化技术能够在单个计算机上运行多个相互隔离的VM(Virtual Machine,虚拟机),动态提供透明化的可伸缩的计算机硬件资源,从而灵活构建满足需求的计算机软硬件环境。目前虚拟化技术已经成为数据中心的支撑性技术,出现了很多比较优秀的虚拟化平台和产品,如Xen、Vmware(Virtual Machine ware的简称,是一个“虚拟PC”软件公司,提供服务器、桌面虚拟化的解决方案)、KVM(Kernel-basedVirtual Machine的简称,是一个开源的系统虚拟化模块)和QEMU(Quick EMUlator的简称)等。
虚拟磁盘技术在数据安全方面的应用越来越普遍,目前映射虚拟磁盘的方式主要有将文件夹映射成虚拟磁盘和创建镜像文件并映射为虚拟磁盘两种。其中,将一个文件夹映射成一个虚拟磁盘的方式存在以下缺点:缺少保护或保护薄弱,在数据安全领域中,难以满足安全及隐私性的保护需求。因此使用创建虚拟磁盘镜像文件并映射成虚拟磁盘的方式是当前的主流,这种形式的虚拟磁盘的优点是:结合了虚拟磁盘驱动加解密,当未挂载虚拟磁盘时可以将用户文件隐于无痕,无法通过搜索文件、磁盘分析等获取到存放于其中的文件,但是也存在以下缺点:当要创建一个较大的虚拟磁盘时,需要同时创建一个同等大小的镜像文件,这导致了磁盘空间的闲置浪费,利用率不高。如何释放闲置磁盘空间,提高磁盘利用率,虚拟机的磁盘压缩显得尤为重要。
目前,对虚拟机的磁盘压缩采用将qcow2格式镜像转换成raw格式,在对数据进行删减后,再将raw格式镜像还原成qcow2格式。在删减数据的过程中需要对虚拟磁盘镜像需要多次转换。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种虚拟磁盘的缩减方法及装置,旨在解决现有对虚拟机的磁盘进行删减数据的过程中需要对虚拟磁盘镜像需要多次转换,过程复杂的问题。
为实现上述目的,本发明提供的一种虚拟磁盘的缩减方法,包括以下步骤:
读取QCOW2格式的镜像文件中的数据信息;
判断镜像文件中的数据是否为可删除特征数据;
当镜像文件中的数据为可删除特征数据时,删除所述可删除特征数据。
优选地,所述读取QCOW2格式的镜像文件中的数据信息的步骤包括:
通过QCOW2格式的镜像文件的文件头信息获取L1表的表项信息;
从L1表的表项信息中获取L2表的条目信息;
从L2表的条目信息中获取虚拟磁盘的镜像文件中每个簇cluster的偏移地址;
通过所述簇cluster的偏移地址读取所述簇cluster的数据信息。
优选地,所述判断镜像文件中的数据是否为可删除特征数据的步骤包括:
当簇cluster的数据全为二进制0时,判断该簇cluster的数据为可删除特征数据。
优选地,所述当镜像文件中的数据为可删除特征数据时,删除所述可删除特征数据的步骤之后,还包括:
将删除的簇cluster对应的L2表的条目信息置0,并将删除的簇cluster对应的引用计数块的条目值减1;
当L2表的全部条目信息均为0时,删除该L2表;
当引用计数块的条目值均为0时,删除该引用计数块。
优选地,所述方法还包括:
当检测到删除数据指令时,将删除数据指令指向的数据全部用二进制0替换。
此外,为实现上述目的,本发明还提供一种虚拟磁盘的缩减装置,包括:
读取模块,用于读取QCOW2格式的镜像文件中的数据信息;
判断模块,用于判断镜像文件中的数据是否为可删除特征数据;
删除模块,用于当镜像文件中的数据为可删除特征数据时,删除所述可删除特征数据。
优选地,所述读取模块包括:
获取单元,用于通过QCOW2格式的镜像文件的文件头信息获取L1表的表项信息;及
从L1表的表项信息中获取L2表的条目信息;及
从L2表的条目信息中获取虚拟磁盘的镜像文件中每个簇cluster的偏移地址;
读取单元,用于通过所述簇cluster的偏移地址读取所述簇cluster的数据信息。
优选地,所述判断模块,还用于当簇cluster的数据全为二进制0时,判断该簇cluster的数据为可删除特征数据。
优选地,所述虚拟磁盘的缩减装置还包括:设置模块;
所述设置模块,用于将删除的簇cluster对应的L2表的条目信息置0,并将删除的簇cluster对应的引用计数块的条目值减1;
所述删除模块,还用于当L2表的全部条目信息均为0时,删除该L2表;及
当引用计数块的条目值均为0时,删除该引用计数块。
优选地,所述设置模块,还用于当检测到删除数据指令时,将删除数据指令指向的数据全部用二进制0替换。
本发明通过读取QCOW2格式的镜像文件中的数据信息;判断镜像文件中的数据是否为可删除特征数据;当镜像文件中的数据为可删除特征数据时,删除所述可删除特征数据。在判断镜像文件中的数据为可删除特征数据时,直接对数据进行删减,不需要对虚拟磁盘镜像进行转换,方法简单。
附图说明
图1为本发明虚拟磁盘的缩减方法的第一实施例的流程示意图;
图2为预分配方式的模块示意图;
图3为动态分配方式的模块示意图;
图4为精简分配方式的模块示意图;
图5为本发明一实施例读取QCOW2格式的镜像文件中的数据信息的流程示意图;
图6为本发明虚拟磁盘的缩减方法的第二实施例的流程示意图;
图7为本发明虚拟磁盘的缩减方法的第三实施例的流程示意图;
图8为本发明虚拟磁盘的缩减装置的第一实施例的功能模块示意图;
图9为图8中读取模块一实施例的细化功能模块示意图;
图10为本发明虚拟磁盘的缩减装置的第二实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:通过读取QCOW2格式的镜像文件中的数据信息;判断镜像文件中的数据是否为可删除特征数据;当镜像文件中的数据为可删除特征数据时,删除所述可删除特征数据。在判断镜像文件中的数据为可删除特征数据时,直接对数据进行删减,不需要对虚拟磁盘镜像进行转换,方法简单。
由于现有对虚拟机的磁盘进行删减数据的过程中需要对虚拟磁盘镜像需要多次转换,过程复杂。
基于上述问题,本发明提供一种虚拟磁盘的缩减方法。
参照图1,图1为本发明虚拟磁盘的缩减方法的第一实施例的流程示意图。
在一实施例中,所述虚拟磁盘的缩减方法包括:
步骤S10,读取QCOW2格式的镜像文件中的数据信息;
首先,需要说明的是,虚拟磁盘作为虚拟机的存储文件有多种数据组织形式,即有多种虚拟磁盘格式,最普通的是原始的直读直写RAW格式,即虚拟磁盘内部没有特殊组织和结构,只是将虚拟磁盘文件看成物理磁盘使用,这种格式预先分配给虚拟机所有的空间,但虚拟机可能不能完全利用,从而造成空间的大量浪费。而其他格式,如VMware虚拟机的磁盘格式VMDK(VMWare Virtual Machine Disk Format,VMware虚拟机磁盘格式)和QEMU虚拟机的写时复制磁盘格式QCOW(QEMU Copy on Write,QEMU写时复制磁盘格式)都是内部有索引结构的虚拟磁盘格式,QCOW2格式的虚拟磁盘镜像提供三种分配方式:精简分配、动态分配及预分配。在QCOW2格式的虚拟磁盘层面,其大小随存储数据的增加而动态增加。但是在物理磁盘层面,QCOW2格式的虚拟磁盘所占的大小,根据QCOW2格式的虚拟磁盘镜像分配方式的不同而不同。QCOW2格式其内部主要包括文件头、L1表、引用计数表、L2表以及数据部分。其文件头包含了虚拟磁盘文件的基本性质,例如虚拟磁盘文件的版本信息;L1表和L2表是QCOW2格式的两级索引表,通过这两级索引表结构将数据组织起来,数据的查找也根据这两级索引表。不管是文件头、数据还是表,都是以簇cluster为单位存储的,按簇cluster对齐,通常1个簇cluster为64K。引用计数表通过引用记数块记录每个簇cluster的使用情况。预分配方式的模块示意图如图2所示,需要预先按照QCOW2格式的虚拟磁盘镜像文件布局方式将L1表、L2表以及数据部分全分配好,所以分配速度慢,且虚拟磁盘预分配多大,镜像文件占用的物理磁盘空间就多大,相当占用物理磁盘空间,但是当写磁盘的时候,由于预先分配好了L1表、L2表和数据部分等,所以省去了分配过程,性能最高。因此,在实际使用当中,为了提升虚拟磁盘写磁盘时的性能,通常会使用预分配方式。动态分配方式的模块示意图如图3所示,会分配L1表及L2表,但是不会对数据部分进行分配,只有在真正用到L1表及L2表对应数据的时候,才会对数据部分进行分配,所以分配速度较预分配方式的速度快,由于L1表及L2表占用空间小,所以占用磁盘空间也相当小,用动态分配方式分配一个20T的虚拟磁盘镜像文件占用的物理磁盘空间才32M。精简分配方式的模块示意图如图4所示,由于未分配L1、L2及数据部分,所以分配速度最快,最节省磁盘空间;精简分配方式,只需要填充好QCOW2布局方式中的文件头、L1表及引用计数表这3个簇cluster就可以了,在后续的使用过程中,用到多少,就分配相应的L1表、L2表、数据部分及引用记数块等。不管是精简分配、动态分配还是预分配,都可以通过扫描虚拟磁盘镜像文件信息,读取QCOW2格式的镜像文件中的数据信息。
本发明一实施例中,如图5所示,所述步骤S10具体为:
步骤S11,通过QCOW2格式的镜像文件的文件头信息获取L1表的表项信息;
文件头信息中包含虚拟磁盘文件的基本性质,例如,虚拟磁盘文件的版本信息,虚拟磁盘镜像分配方式,例如,为精简分配方式、动态分配方式或预分配方式,在确定虚拟磁盘镜像分配方式后可以获取L1表的表项信息,即通过QCOW2的文件头中的l1_table_offset字段获取L1表的地址;使用高(64-l2_bits-cluser_bits)位的地址来索引L1表;L1表是一个数组,数组元素是一个64位的数。
步骤S12,从L1表的表项信息中获取L2表的条目信息;
L1表和L2表是QCOW2格式的两级索引表,通过这两级索引表结构将数据组织起来,数据的查找也根据这两级索引表。L1表中的每条表项存储一个L2表在虚拟磁盘文件中的偏移地址,根据L2表在L1表中的偏移地址可以查找到L2表,进而获取L2表的条目信息。
步骤S13,从L2表的条目信息中获取虚拟磁盘的镜像文件中每个簇cluster的偏移地址;
步骤S14,通过所述簇cluster的偏移地址读取所述簇cluster的数据信息。
L2表的条目信息中包含一定数量的表项,每条表项存储一个数据簇cluster的偏移地址;根据数据簇cluster在L2表中的偏移地址可以查找到数据簇cluster,进而获取簇cluster中存储的数据信息。通过逐级索引查找的方法,可以遍历虚拟磁盘的镜像文件中每个簇cluster中存储的数据信息。
步骤S20,判断镜像文件中的数据是否为可删除特征数据;
以预分配方式为例,在生成虚拟磁盘时,虚拟磁盘预分配多大,镜像文件占用的物理磁盘空间就多大,是通过在虚拟磁盘中填充可删除特征数据,以占据物理磁盘空间的,而可删除特征数据中存储的都是无效数据,因此,可以通过检测镜像文件中的数据是否为无效数据来判断该数据是否为可删除特征数据。
本发明一实施例中,所述步骤S20具体为:
步骤S21,当簇cluster的数据全为二进制0时,判断该簇cluster的数据为可删除特征数据。
以预分配方式为例,在生成虚拟磁盘时,为了占据预分配的空间,在虚拟磁盘的镜像文件中写满二进制0,因此,当簇cluster的数据全为二进制0时,可以判断该簇cluster的数据为可删除特征数据。
步骤S30,当镜像文件中的数据为可删除特征数据时,删除所述可删除特征数据。
当镜像文件中的数据为可删除特征数据时,表示镜像文件中该部分数据所占用的物理磁盘空间为未使用空间,为释放该部分可删除特征数据所占用的物理磁盘空间,本发明一实施例将可删除特征数据删除的同时可以对文件头信息进行修改,例如,如图2和图3所示,当虚拟磁盘的镜像文件为将L1表、L2表以及数据部分全分配好的预分配方式,将数据部分的可删除特征数据全部删除,则在预分配方式中很多个占用512M物理磁盘空间的可删除特征数据变成了不占用物理磁盘空间的空洞,能大大释放物理磁盘空间,此时,虚拟磁盘的分配方式由预分配方式转换成动态分配方式。
本方法的验证结果如下,对于一个新分配的80G虚拟磁盘,以预分配方式进行分配,占用的物理磁盘空间即为80G,而通过本发明所述方法将可删除特征数据删除后,所占用的物理磁盘空间仅为164M;对预分配31G的虚拟磁盘安装windows Server 2008之后,将可删除特征数据删除后,所占用的物理磁盘空间仅为1.6G;当然,在正常场景中,虚拟磁盘分配之后会被使用,部分可删除特征数据将被非0数据占据,即使虚拟磁盘的全部空间被非0占用了,也会有许多连续大小为64K的零数据簇cluster,可以进行删除。
本实施例通过将可删除特征数据删除,使虚拟磁盘的镜像文件占用的物理磁盘空间大大减少,有效减少QCOW2格式虚拟磁盘文件实际占用的物理磁盘空间,从而将闲置的物理磁盘空间释放出来,大大提高物理磁盘空间利用率,同时,虚拟磁盘的I/O(input/output,输入输出)性能也得到保障。
参照图6,图6为本发明虚拟磁盘的缩减方法的第二实施例的流程示意图。基于上述虚拟磁盘的缩减方法的第一实施例,所述步骤S30之后,还包括:
步骤S40,将删除的簇cluster对应的L2表的条目信息置0,并将删除的簇cluster对应的引用计数块的条目值减1;
L2表的条目信息中包含一定数量的表项,每条表项存储一个数据簇cluster的偏移地址;根据数据簇cluster在L2表中的偏移地址可以查找到数据簇cluster,当簇cluster为可删除特征数据被删除后,L2表中对应该簇cluster的偏移地址成为无用数据,因此,将删除的簇cluster对应的L2表的条目信息置0;引用计数表通过引用记数块记录每个簇cluster的使用情况,将删除的簇cluster对应的引用计数块的条目值减1。
步骤S50,当L2表的全部条目信息均为0时,删除该L2表;
步骤S60,当引用计数块的条目值均为0时,删除该引用计数块。
当L2表的全部条目信息均为0时,表示该L2表中记录的信息均为无用信息,从节约物理磁盘空调的角度来说,该L2表也可以被删除;当某个簇cluster对应的引用计数表的引用记数块中的值为0时,证明该簇cluster已无用,当引用计数块的条目值均为0时,表示该引用记数块中记录的信息均为无用信息,从节约物理磁盘空调的角度来说,该引用计数块也可以被删除。如图2、图3及图4所示,如果在前一实施例的基础上,将全部条目信息均为0的L2表及条目值均为0的引用记数块也删除,还可以进一步释放占用的物理磁盘空间,此时,虚拟磁盘的分配方式转换成精简分配方式。
本实施例通过将可删除特征数据对应的L2表及引用记数块也删除,使虚拟磁盘的镜像文件占用的物理磁盘空间进一步减少,进一步提高物理磁盘空间利用率。
参照图7,图7为本发明虚拟磁盘的缩减方法的第三实施例的流程示意图。基于上述虚拟磁盘的缩减方法的第二实施例,所述方法还包括:
步骤S70,当检测到删除数据指令时,将删除数据指令指向的数据全部用二进制0替换。
虚拟磁盘中的数据,在执行删除操作后,虽然在虚拟磁盘层面看是被删除了,对应的虚拟磁盘空间也被释放出来了,但是在物理磁盘层面,数据并没有被删除,仍占用着相应的物理磁盘空间,导致在虚拟磁盘层面看还有空间时,却因物理磁盘空间被消耗完毕,而无法再进行写入等操作。虚拟磁盘中的数据,在执行删除操作后,即成为无用数据,本发明一实施例在检测到删除数据指令时,将删除数据指令指向的数据全部用二进制0替换。从前面的实施例可知,当簇cluster的数据全为二进制0时,判断该簇cluster的数据为可删除特征数据,进而删除所述可删除特征数据,释放该部分可删除特征数据所占用的物理磁盘空间。进一步地,还有类删除操作,例如,对软件进行升级,升级前的部分数据将不再使用,使得类删除操作指向的数据实际上成为无用数据,为释放该部分无用数据所占用的物理磁盘空间,本发明一实施例将对软件进行升级等类删除操作进行标记,将该操作对应的不再会被使用的数据标记为删除数据指令指向的数据,并将该部分数据全部用二进制0替换,进而作为可删除特征数据删除,将所占用的物理磁盘空间释放。当然,由于用户对数据进行删除,可能后续还会将该数据进行恢复,因此,对于用户删除的数据是否要从物理磁盘中删除,可以区别对待,例如,用户执行delete数据删除,该数据还存放在回收站中,是可以恢复的,对这样的数据删除不执行用二进制0替换的操作;对于用户执行shift+delete数据删除的,理解为用户希望彻底删除该数据,则用二进制0替换该部分数据;当然,也可以进行其它设置定义删除操作后是否执行用二进制0替换的操作,例如,在删除7天后数据没有被恢复,则执行用二进制0替换的操作。
本实施例通过将删除数据指令指向的数据全部用二进制0替换,使得该部分数据从物理磁盘中删除,保证虚拟磁盘实际可用空间与显示的可用空间相符。
本发明进一步提供一种虚拟磁盘的缩减装置。
参照图8,图8为本发明虚拟磁盘的缩减装置的第一实施例的功能模块示意图。
在一实施例中,所述虚拟磁盘的缩减装置包括:读取模块10、判断模块20及删除模块30。
所述读取模块10,用于读取QCOW2格式的镜像文件中的数据信息;
首先,需要说明的是,虚拟磁盘作为虚拟机的存储文件有多种数据组织形式,即有多种虚拟磁盘格式,最普通的是原始的直读直写RAW格式,即虚拟磁盘内部没有特殊组织和结构,只是将虚拟磁盘文件看成物理磁盘使用,这种格式预先分配给虚拟机所有的空间,但虚拟机可能不能完全利用,从而造成空间的大量浪费。而其他格式,如VMware虚拟机的磁盘格式VMDK(VMWare Virtual Machine Disk Format,VMware虚拟机磁盘格式)和QEMU虚拟机的写时复制磁盘格式QCOW(QEMU Copy on Write,QEMU写时复制磁盘格式)都是内部有索引结构的虚拟磁盘格式,QCOW2格式的虚拟磁盘镜像提供三种分配方式:精简分配、动态分配及预分配。在QCOW2格式的虚拟磁盘层面,其大小随存储数据的增加而动态增加。但是在物理磁盘层面,QCOW2格式的虚拟磁盘所占的大小,根据QCOW2格式的虚拟磁盘镜像分配方式的不同而不同。QCOW2格式其内部主要包括文件头、L1表、引用计数表、L2表以及数据部分。其文件头包含了虚拟磁盘文件的基本性质,例如虚拟磁盘文件的版本信息;L1表和L2表是QCOW2格式的两级索引表,通过这两级索引表结构将数据组织起来,数据的查找也根据这两级索引表。不管是文件头、数据还是表,都是以簇cluster为单位存储的,按簇cluster对齐,通常1个簇cluster为64K。引用计数表通过引用记数块记录每个簇cluster的使用情况。预分配方式的模块示意图如图2所示,需要预先按照QCOW2格式的虚拟磁盘镜像文件布局方式将L1表、L2表以及数据部分全分配好,所以分配速度慢,且虚拟磁盘预分配多大,镜像文件占用的物理磁盘空间就多大,相当占用物理磁盘空间,但是当写磁盘的时候,由于预先分配好了L1表、L2表和数据部分等,所以省去了分配过程,性能最高。因此,在实际使用当中,为了提升虚拟磁盘写磁盘时的性能,通常会使用预分配方式。动态分配方式的模块示意图如图3所示,会分配L1表及L2表,但是不会对数据部分进行分配,只有在真正用到L1表及L2表对应数据的时候,才会对数据部分进行分配,所以分配速度较预分配方式的速度快,由于L1表及L2表占用空间小,所以占用磁盘空间也相当小,用动态分配方式分配一个20T的虚拟磁盘镜像文件占用的物理磁盘空间才32M。精简分配方式的模块示意图如图4所示,由于未分配L1、L2及数据部分,所以分配速度最快,最节省磁盘空间;精简分配方式,只需要填充好QCOW2布局方式中的文件头、L1表及引用计数表这3个簇cluster就可以了,在后续的使用过程中,用到多少,就分配相应的L1表、L2表、数据部分及引用记数块等。不管是精简分配、动态分配还是预分配,都可以通过扫描虚拟磁盘镜像文件信息,读取QCOW2格式的镜像文件中的数据信息。
参照图9,所述读取模块10包括:
获取单元11,用于通过QCOW2格式的镜像文件的文件头信息获取L1表的表项信息;
文件头信息中包含虚拟磁盘文件的基本性质,例如,虚拟磁盘文件的版本信息,虚拟磁盘镜像分配方式,例如,为精简分配方式、动态分配方式或预分配方式,在确定虚拟磁盘镜像分配方式后可以获取L1表的表项信息,即通过QCOW2的文件头中的l1_table_offset字段获取L1表的地址;使用高(64-l2_bits-cluser_bits)位的地址来索引L1表;L1表是一个数组,数组元素是一个64位的数。
获取单元11,还用于从L1表的表项信息中获取L2表的条目信息;
L1表和L2表是QCOW2格式的两级索引表,通过这两级索引表结构将数据组织起来,数据的查找也根据这两级索引表。L1表中的每条表项存储一个L2表在虚拟磁盘文件中的偏移地址,根据L2表在L1表中的偏移地址可以查找到L2表,进而获取L2表的条目信息。
获取单元11,还用于从L2表的条目信息中获取虚拟磁盘的镜像文件中每个簇cluster的偏移地址;
读取单元12,用于通过所述簇cluster的偏移地址读取所述簇cluster的数据信息。
L2表的条目信息中包含一定数量的表项,每条表项存储一个数据簇cluster的偏移地址;根据数据簇cluster在L2表中的偏移地址可以查找到数据簇cluster,进而获取簇cluster中存储的数据信息。通过逐级索引查找的方法,可以遍历虚拟磁盘的镜像文件中每个簇cluster中存储的数据信息。
所述判断模块20,用于判断镜像文件中的数据是否为可删除特征数据;
以预分配方式为例,在生成虚拟磁盘时,虚拟磁盘预分配多大,镜像文件占用的物理磁盘空间就多大,是通过在虚拟磁盘中填充可删除特征数据,以占据物理磁盘空间的,而可删除特征数据中存储的都是无效数据,因此,可以通过检测镜像文件中的数据是否为无效数据来判断该数据是否为可删除特征数据。
本发明一实施例中,所述判断模块20,还用于当簇cluster的数据全为二进制0时,判断该簇cluster的数据为可删除特征数据。
以预分配方式为例,在生成虚拟磁盘时,为了占据预分配的空间,在虚拟磁盘的镜像文件中写满二进制0,因此,当簇cluster的数据全为二进制0时,可以判断该簇cluster的数据为可删除特征数据。
所述删除模块30,用于当镜像文件中的数据为可删除特征数据时,删除所述可删除特征数据。
当镜像文件中的数据为可删除特征数据时,表示镜像文件中该部分数据所占用的物理磁盘空间为未使用空间,为释放该部分可删除特征数据所占用的物理磁盘空间,本发明一实施例将可删除特征数据删除的同时可以对文件头信息进行修改,例如,如图2和图3所示,当虚拟磁盘的镜像文件为将L1表、L2表以及数据部分全分配好的预分配方式,将数据部分的可删除特征数据全部删除,则在预分配方式中很多个占用512M物理磁盘空间的可删除特征数据变成了不占用物理磁盘空间的空洞,能大大释放物理磁盘空间,此时,虚拟磁盘的分配方式由预分配方式转换成动态分配方式。
本方法的验证结果如下,对于一个新分配的80G虚拟磁盘,以预分配方式进行分配,占用的物理磁盘空间即为80G,而通过本发明所述方法将可删除特征数据删除后,所占用的物理磁盘空间仅为164M;对预分配31G的虚拟磁盘安装windows Server 2008之后,将可删除特征数据删除后,所占用的物理磁盘空间仅为1.6G;当然,在正常场景中,虚拟磁盘分配之后会被使用,部分可删除特征数据将被非0数据占据,即使虚拟磁盘的全部空间被非0占用了,也会有许多连续大小为64K的零数据簇cluster,可以进行删除。
本实施例通过将可删除特征数据删除,使虚拟磁盘的镜像文件占用的物理磁盘空间大大减少,有效减少QCOW2格式虚拟磁盘文件实际占用的物理磁盘空间,从而将闲置的物理磁盘空间释放出来,大大提高物理磁盘空间利用率,同时,虚拟磁盘的I/O(input/output,输入输出)性能也得到保障。
参照图10,图10为本发明虚拟磁盘的缩减装置的第二实施例的功能模块示意图。所述虚拟磁盘的缩减装置还包括设置模块40。
所述设置模块40,用于将删除的簇cluster对应的L2表的条目信息置0,并将删除的簇cluster对应的引用计数块的条目值减1;
L2表的条目信息中包含一定数量的表项,每条表项存储一个数据簇cluster的偏移地址;根据数据簇cluster在L2表中的偏移地址可以查找到数据簇cluster,当簇cluster为可删除特征数据被删除后,L2表中对应该簇cluster的偏移地址成为无用数据,因此,将删除的簇cluster对应的L2表的条目信息置0;引用计数表通过引用记数块记录每个簇cluster的使用情况,将删除的簇cluster对应的引用计数块的条目值减1。
所述删除模块30,还用于当L2表的全部条目信息均为0时,删除该L2表;及
当引用计数块的条目值均为0时,删除该引用计数块。
当L2表的全部条目信息均为0时,表示该L2表中记录的信息均为无用信息,从节约物理磁盘空调的角度来说,该L2表也可以被删除;当某个簇cluster对应的引用计数表的引用记数块中的值为0时,证明该簇cluster已无用,当引用计数块的条目值均为0时,表示该引用记数块中记录的信息均为无用信息,从节约物理磁盘空调的角度来说,该引用计数块也可以被删除。如图2、图3及图4所示,如果在前一实施例的基础上,将全部条目信息均为0的L2表及条目值均为0的引用记数块也删除,还可以进一步释放占用的物理磁盘空间,此时,虚拟磁盘的分配方式转换成精简分配方式。
本实施例通过将可删除特征数据对应的L2表及引用记数块也删除,使虚拟磁盘的镜像文件占用的物理磁盘空间进一步减少,进一步提高物理磁盘空间利用率。
进一步的,所述设置模块40,还用于当检测到删除数据指令时,将删除数据指令指向的数据全部用二进制0替换。
虚拟磁盘中的数据,在执行删除操作后,虽然在虚拟磁盘层面看是被删除了,对应的虚拟磁盘空间也被释放出来了,但是在物理磁盘层面,数据并没有被删除,仍占用着相应的物理磁盘空间,导致在虚拟磁盘层面看还有空间时,却因物理磁盘空间被消耗完毕,而无法再进行写入等操作。虚拟磁盘中的数据,在执行删除操作后,即成为无用数据,本发明一实施例在检测到删除数据指令时,将删除数据指令指向的数据全部用二进制0替换。从前面的实施例可知,当簇cluster的数据全为二进制0时,判断该簇cluster的数据为可删除特征数据,进而删除所述可删除特征数据,释放该部分可删除特征数据所占用的物理磁盘空间。进一步地,还有类删除操作,例如,对软件进行升级,升级前的部分数据将不再使用,使得类删除操作指向的数据实际上成为无用数据,为释放该部分无用数据所占用的物理磁盘空间,本发明一实施例将对软件进行升级等类删除操作进行标记,将该操作对应的不再会被使用的数据标记为删除数据指令指向的数据,并将该部分数据全部用二进制0替换,进而作为可删除特征数据删除,将所占用的物理磁盘空间释放。当然,由于用户对数据进行删除,可能后续还会将该数据进行恢复,因此,对于用户删除的数据是否要从物理磁盘中删除,可以区别对待,例如,用户执行delete数据删除,该数据还存放在回收站中,是可以恢复的,对这样的数据删除不执行用二进制0替换的操作;对于用户执行shift+delete数据删除的,理解为用户希望彻底删除该数据,则用二进制0替换该部分数据;当然,也可以进行其它设置定义删除操作后是否执行用二进制0替换的操作,例如,在删除7天后数据没有被恢复,则执行用二进制0替换的操作。
本实施例通过将删除数据指令指向的数据全部用二进制0替换,使得该部分数据从物理磁盘中删除,保证虚拟磁盘实际可用空间与显示的可用空间相符。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种虚拟磁盘的缩减方法,其特征在于,包括以下步骤:
读取QCOW2格式的镜像文件中的数据信息;
判断镜像文件中的数据是否为可删除特征数据;
当镜像文件中的数据为可删除特征数据时,删除所述可删除特征数据。
2.如权利要求1所述的虚拟磁盘的缩减方法,其特征在于,所述读取QCOW2格式的镜像文件中的数据信息的步骤包括:
通过QCOW2格式的镜像文件的文件头信息获取L1表的表项信息;
从L1表的表项信息中获取L2表的条目信息;
从L2表的条目信息中获取虚拟磁盘的镜像文件中每个簇cluster的偏移地址;
通过所述簇cluster的偏移地址读取所述簇cluster的数据信息。
3.如权利要求2所述的虚拟磁盘的缩减方法,其特征在于,所述判断镜像文件中的数据是否为可删除特征数据的步骤包括:
当簇cluster的数据全为二进制0时,判断该簇cluster的数据为可删除特征数据。
4.如权利要求3所述的虚拟磁盘的缩减方法,其特征在于,所述当镜像文件中的数据为可删除特征数据时,删除所述可删除特征数据的步骤之后,还包括:
将删除的簇cluster对应的L2表的条目信息置0,并将删除的簇cluster对应的引用计数块的条目值减1;
当L2表的全部条目信息均为0时,删除该L2表;
当引用计数块的条目值均为0时,删除该引用计数块。
5.如权利要求1至4任一项所述的虚拟磁盘的缩减方法,其特征在于,所述方法还包括:
当检测到删除数据指令时,将删除数据指令指向的数据全部用二进制0替换。
6.一种虚拟磁盘的缩减装置,其特征在于,包括:
读取模块,用于读取QCOW2格式的镜像文件中的数据信息;
判断模块,用于判断镜像文件中的数据是否为可删除特征数据;
删除模块,用于当镜像文件中的数据为可删除特征数据时,删除所述可删除特征数据。
7.如权利要求6所述的虚拟磁盘的缩减装置,其特征在于,所述读取模块包括:
获取单元,用于通过QCOW2格式的镜像文件的文件头信息获取L1表的表项信息;及
从L1表的表项信息中获取L2表的条目信息;及
从L2表的条目信息中获取虚拟磁盘的镜像文件中每个簇cluster的偏移地址;
读取单元,用于通过所述簇cluster的偏移地址读取所述簇cluster的数据信息。
8.如权利要求7所述的虚拟磁盘的缩减装置,其特征在于,所述判断模块,还用于当簇cluster的数据全为二进制0时,判断该簇cluster的数据为可删除特征数据。
9.如权利要求8所述的虚拟磁盘的缩减装置,其特征在于,所述虚拟磁盘的缩减装置还包括:设置模块;
所述设置模块,用于将删除的簇cluster对应的L2表的条目信息置0,并将删除的簇cluster对应的引用计数块的条目值减1;
所述删除模块,还用于当L2表的全部条目信息均为0时,删除该L2表;及
当引用计数块的条目值均为0时,删除该引用计数块。
10.如权利要求6至9任一项所述的虚拟磁盘的缩减装置,其特征在于,所述设置模块,还用于当检测到删除数据指令时,将删除数据指令指向的数据全部用二进制0替换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610883616.7A CN107918521A (zh) | 2016-10-09 | 2016-10-09 | 虚拟磁盘的缩减方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610883616.7A CN107918521A (zh) | 2016-10-09 | 2016-10-09 | 虚拟磁盘的缩减方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107918521A true CN107918521A (zh) | 2018-04-17 |
Family
ID=61891876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610883616.7A Pending CN107918521A (zh) | 2016-10-09 | 2016-10-09 | 虚拟磁盘的缩减方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107918521A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032841A (zh) * | 2018-07-04 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种文件修复方法和装置 |
CN109298894A (zh) * | 2018-09-26 | 2019-02-01 | 四川巧夺天工信息安全智能设备有限公司 | 一种提取qcow镜像文件的方法 |
CN114035897A (zh) * | 2021-11-10 | 2022-02-11 | 北京天融信网络安全技术有限公司 | 虚拟机镜像文件安全删除方法、装置及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101794232A (zh) * | 2009-06-23 | 2010-08-04 | 深圳市朗科科技股份有限公司 | 快速启动系统的方法 |
CN101986284A (zh) * | 2010-11-04 | 2011-03-16 | 华中科技大学 | 一种虚拟机镜像文件的废弃空间动态回收系统 |
CN102929884A (zh) * | 2011-08-10 | 2013-02-13 | 阿里巴巴集团控股有限公司 | 一种收缩虚拟磁盘镜像文件的方法及装置 |
CN102999433A (zh) * | 2012-11-21 | 2013-03-27 | 北京航空航天大学 | 一种虚拟磁盘的冗余数据删除方法及系统 |
CN103019802A (zh) * | 2012-11-20 | 2013-04-03 | 中标软件有限公司 | 一种虚拟机管理方法及平台 |
US8805788B2 (en) * | 2009-05-04 | 2014-08-12 | Moka5, Inc. | Transactional virtual disk with differential snapshots |
-
2016
- 2016-10-09 CN CN201610883616.7A patent/CN107918521A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8805788B2 (en) * | 2009-05-04 | 2014-08-12 | Moka5, Inc. | Transactional virtual disk with differential snapshots |
CN101794232A (zh) * | 2009-06-23 | 2010-08-04 | 深圳市朗科科技股份有限公司 | 快速启动系统的方法 |
CN101986284A (zh) * | 2010-11-04 | 2011-03-16 | 华中科技大学 | 一种虚拟机镜像文件的废弃空间动态回收系统 |
CN102929884A (zh) * | 2011-08-10 | 2013-02-13 | 阿里巴巴集团控股有限公司 | 一种收缩虚拟磁盘镜像文件的方法及装置 |
CN103019802A (zh) * | 2012-11-20 | 2013-04-03 | 中标软件有限公司 | 一种虚拟机管理方法及平台 |
CN102999433A (zh) * | 2012-11-21 | 2013-03-27 | 北京航空航天大学 | 一种虚拟磁盘的冗余数据删除方法及系统 |
Non-Patent Citations (3)
Title |
---|
LIUKUAN73: "虚拟机内删除文件后减少qcow2虚拟磁盘文件实际占用的存储空间", 《CSDN》 * |
廖常瑞: "云桌面虚拟镜像文件qcow2的探究与进步", 《有线电视技术》 * |
高煜: "《操作系统原理》", 31 December 2006, 海洋出版社 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032841A (zh) * | 2018-07-04 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种文件修复方法和装置 |
CN109298894A (zh) * | 2018-09-26 | 2019-02-01 | 四川巧夺天工信息安全智能设备有限公司 | 一种提取qcow镜像文件的方法 |
CN109298894B (zh) * | 2018-09-26 | 2022-03-04 | 四川巧夺天工信息安全智能设备有限公司 | 一种提取qcow镜像文件的方法 |
CN114035897A (zh) * | 2021-11-10 | 2022-02-11 | 北京天融信网络安全技术有限公司 | 虚拟机镜像文件安全删除方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3035197B1 (en) | File migration method and apparatus and storage device | |
US7464189B2 (en) | System and method for creation/deletion of linear block address table entries for direct I/O | |
US7502872B2 (en) | Method for out of user space block mode I/O directly between an application instance and an I/O adapter | |
CN101986285B (zh) | 虚拟机存储空间管理方法、系统及物理主机 | |
CN103092678B (zh) | 一种多增量虚拟机内存管理系统和方法 | |
CN104021145B (zh) | 一种混合业务并发访问的方法和装置 | |
CN103984599B (zh) | 一种提高操作系统大页使用率的方法 | |
JP2017091545A (ja) | 多重モード格納管理装置、多重モード格納装置、及びその選別潜在露出(sue)マッピング動作方法 | |
JP2007200314A (ja) | 隠蔽領域管理装置および方法 | |
CN115168259B (zh) | 一种数据存取方法、装置、设备和计算机可读存储介质 | |
CN107918521A (zh) | 虚拟磁盘的缩减方法及装置 | |
US20200218573A1 (en) | Memory management method, electronic apparatus, and storage device | |
CN104794024A (zh) | 一种数据恢复方法 | |
WO2016123748A1 (zh) | 一种闪存存储系统及其读写、删除方法 | |
CN108073352A (zh) | 虚拟磁盘处理方法及装置 | |
CN104751076A (zh) | 一种恢复磁盘数据的方法 | |
US20070005815A1 (en) | System and method for processing block mode I/O operations using a linear block address translation protection table | |
US7552240B2 (en) | Method for user space operations for direct I/O between an application instance and an I/O adapter | |
CN114327917A (zh) | 内存管理方法、计算设备及可读存储介质 | |
WO2024099448A1 (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
US20240338135A1 (en) | Storage space allocation method, terminal device and storage medium | |
US7502871B2 (en) | Method for query/modification of linear block address table entries for direct I/O | |
CN113835639B (zh) | 一种i/o请求处理方法、装置、设备及可读存储介质 | |
CN109062516B (zh) | 一种windows虚拟机备份过程中无效数据排除方法 | |
US20110296135A1 (en) | System and method for freeing memory |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180417 |