是否可以调整 qemu/libvirt 映像的大小,同时保持虚拟大小,并且不丢失数据?我解释得更好:
当您创建虚拟磁盘时
qemu-img create -f qcow2 debian-GEN.qcow2 60G
虚拟机看到60G的磁盘,但是使用的空间是虚拟机已经使用过的空间(此例子是在安装了一些软件之后)
qemu-img info debian-GEN.qcow2
image: debian-GEN.qcow2
file format: qcow2
virtual size: 60 GiB (64424509440 bytes)
disk size: 3.1 GiB
cluster_size: 65536
Format specific information:
compat: 1.1
compression type: zlib
lazy refcounts: false
refcount bits: 16
corrupt: false
extended l2: false
Child node '/file':
filename: debian-GEN.qcow2
protocol type: file
file length: 4.61 GiB (4948164608 bytes)
disk size: 3.1 GiB
现在问题来了。假设我写入了 20GB 的额外数据,磁盘大小变为 23GB(3.1+20),假设我删除了 20GB 的数据(使用 rm -fr 甚至 shred),磁盘大小仍然是 23GB!我的问题是:有没有办法从虚拟磁盘中删除 20GB 未使用的数据?那么镜像返回 3.1GB(但虚拟机仍然看到 60GB 空间)?