btrfs 文件系统已满,但删除文件没有释放空间

btrfs 文件系统已满,但删除文件没有释放空间

在我的系统上df -h报告根文件系统已满(100%可用0),并且还btrfs fi usage /告诉我所有空间都已分配。重新启动后,它甚至无法启动必要的服务,所以我现在处于恢复模式。

我尝试平衡系统,如下所示btrfs 错误:平衡期间出错 - 设备上没有剩余空间。因为btrfs balance start -dusage=27 /我得到:

Done, had to relocate 0 out of 56 chunks`

因为btrfs balance start -dusage=28 /我得到:

ERROR: error during balancing '/': No space left on device

因此,我开始删除其中的文件,/var/log/但即使删除了几个 100 MB 的文件,df -h报告也没有任何可用的位。

我怀疑,一旦空间空闲,就会有一些服务填补该空间。但由于我处于恢复模式,所以不应该有这么多服务。

我怎样才能知道删除文件后立即填充空间的是什么?

如何确保有可用空间供 btrfs 用来重新平衡?

我的系统是 debian 10.3 (buster),文件系统 btrfs 并且安装了 docker,我怀疑这是问题的一部分,但它没有在恢复模式下运行,所以......

答案1

从历史上看,btrfs 上的一些空间不足的情况需要临时向卷添加额外的磁盘,因为 btrfs 的 COW 性质可能需要一些临时空间来保存块的修改版本,然后才能释放旧版本。不过,据我所知,其中许多情况已由 btrfs 开发人员修复。

对于 btrfs 卷上的紧急磁盘使用情况分析,我想推荐 btdu,这是我编写的一个工具:

https://github.com/Cyber​​Shadow/btdu

由于它只需要收集 100 个样本即可获得 1% 的分辨率,因此能够在几秒钟内识别出大型太空猪。

相关内容