评论: VirtualBox收缩虚拟磁盘映像vdi文件

SSD硬盘的话,虚拟机以Ubuntu为例,多次执行fstrim命令
sudo fstrim -av
/: 366.4 GiB (393387335680 bytes) trimmed on /dev/sda2
sudo fstrim -av
/: 0 B (0 bytes) trimmed on /dev/sda2

直到出现 0 B (0 bytes) trimmed on xxx
此时虚拟机磁盘应该收缩了,如果还没有再执行
vboxmanage modifyhd ubuntu-xxx.vdi --compact

如果fstrim执行提示不支持的话需要确定是否启用TRIM设置。

还需要在虚拟机分区挂载时启用了discard,看/etc/fstab文件或使用mount命令来检查当前挂载选项。
/dev/sda2 / ext4 defaults,discard 0 1
mount
/dev/sda2 on / type ext4 (rw,relatime,discard)
cat /sys/block/sda/queue/discard_max_bytes这个非0
满足这个就支持。如果不满足,修改mount配置加上discard并且保证vbox正确配置启用了discard。

VBoxManage showvminfo "ubuntu-xxx" --machinereadable |grep discard
"SATA-discard-0-0"="on"
如果off就是没启用,需要用下面命令修改
VBoxManage storageattach "ubuntu-xxx" --storagectl "SATA" --port 0 --device 0 --discard on
这个里面的有几个信息需要从
VBoxManage showvminfo "ubuntu-xxx" --machinereadable这个命令输出里面看看,其中storagectl参数后名字是下面这个
storagecontrollername1="SATA"
--port 0 --device 0 两个0是下面挂载的磁盘的SATA-0-0
"SATA-0-0"="C:\\Users\\admin\\VirtualBox VMs\\ubuntu-xxx\\ubuntu-xxx.vdi"
保证你挂载点系统虚拟磁盘启用discard。
注意虚拟机和宿主机都需要配置支持,二者缺一不可。

Posted by vitter at November 18, 2025 12:12 PM
发表评论













记住个人信息?