大家好,祝大家一切顺利。
所以最近我正在研究一个曼扎罗 21.2.5托管最新更新视窗11来宾虚拟机运行于qemu/kvm和库虚拟机和一个动态大小虚拟磁盘,在来宾(Win 11)中安装一些重型软件后,我注意到我的磁盘空间已满我只有 14mb 可用空间,所以我用 libvirt 的 GUI 删除了虚拟机,然后我注意到我没有拿回我的可用空间我确认我删除了虚拟磁盘。 Vm使用的主机分区格式为Btrfs。
谢谢大家!谢谢。
答案1
Linux 上的 btrfs 不释放磁盘空间的方式主要有以下三种:
您删除的文件仍然打开。这并非特定于 btrfs,而是大多数 Unix 风格的操作系统。 Linux 允许您继续使用已删除的文件。当最后一个用户消失时它将被完全释放。我不确定使用 libvirt 删除虚拟机是否容易出现这种情况。您可以通过以下方式检查是否属于这种情况:
lsof full/path/imagefile
btrfs 目前还没有机会释放这些块。这可能需要一些时间,但通常不会超过几分钟。如果您已经用完磁盘空间,此后台操作也可能会受到干扰。您可以尝试
btrfs fi sync .
在映像文件所在的目录中运行,如果没有帮助,您可能需要删除其他文件并运行平衡操作。
在极少数情况下,您可能需要首先使用-musage0
和/或-dusage0
选项(对于两个单独的命令)来为“真正的”平衡操作创建空间,例如:
btrfs balance start -musage=0 .
btrfs balance start -dusage=0 .
btrfs balance start .
- 最后,您可能在同一卷上有一个 btrfs 快照,这意味着该卷的状态是安全的,因此无论您删除多少文件,快照仍将引用您要删除的文件。在这种情况下,您将需要删除快照(并考虑您还可以删除哪些快照)。检查
btrfs subv list .
和btrfs subv del (snapshotname)
命令。