虚拟磁盘的空间回收: Virtual Disk UNMAP/Shrink

本文详细探讨了虚拟磁盘的空间回收,包括离线和在线的可回收空间获取方法,以及如何在QEMU下实现在线空间回收。离线回收可通过挂载虚拟磁盘并填充全零文件,而在线回收可利用全零气球文件或文件删除感知。文章强调了TRIM和UNMAP命令在空间回收中的作用,并指出支持这些命令的文件系统和驱动是关键。最后,介绍了QEMU中的在线空间回收实现及其在Windows和Linux环境下的应用限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

同时发布于: http://leiqzhang.com/2013/08/2013-08-07-virtual-disk-unmap-shrink/


虚拟磁盘的空间回收: Virtual Disk UNMAP/Shrink

问题

在虚拟化场景下,瘦分配(Thin-provisioning)磁盘应用场景非常广泛。目前主流的虚拟磁盘镜像格式,如Dynamic VHD、Sparse Raw、Qcow2、VMDK等均只具有随着虚拟机读写而动态增长的能力,一般来说是按需每次分配一个固定大小的块,如VHD的块是2M为单位。

当Guest OS删除了文件,已经分配的空间在虚拟磁盘上可否进行空间回收呢?

空间回收主要包括两步,一是获取到可以回收的空间,二是在虚拟磁盘文件中对相应空间进行回收。

根据获取所需回收空间时虚拟磁盘的IO情况来讲,回收主要有在线回收和离线回收,在线和离线的区别在于虚拟磁盘是否在有Guest持续写IO的情况下进行空间回收。也即离线回收不单单指虚拟机关机情形下的回收,也包括虚拟磁盘只有读IO的情况(如虚拟磁盘为某个ROW快照的父镜像)。

就虚拟磁盘文件来说,空间回收的结果可以是如下两种

  1. 在Host上实际占用的空间减少
  2. 在Host上实际占用的空间减少,但是后续Guest的写入可以复用之前需要回收的空间,从而使得虚拟磁盘文件不会随着Guest的写入立即分配新块

下文首先分别对离线和在线可回收空间获取方法进行讨论,然后对虚拟磁盘文件的空间回收方式进行讨论,最后以Qemu当前的实现为例进行说明。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值