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

whi*_*cko 4 btrfs docker

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

\n\n

我尝试平衡系统,如下所示btrfs ERROR: error duringbalancing - No space left on device。因为btrfs balance start -dusage=27 /我得到:

\n\n
Done, had to relocate 0 out of 56 chunks`\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
ERROR: error during balancing \'/\': No space left on device\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

\n\n

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

\n\n

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

\n\n

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

\n

Vla*_*eev 6

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

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

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

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