Btrfs使用72%空间后提示空间不足

我的 / 和 /home 都是 btrfs 分区,安装时使用自定义分区分的,安装好后没有进行过改动。今天突然提示不能保存文件,说是没有空间了,我用 df 查看的时候发现才使用了 72% 的空间,总大小是 210G,使用大小是 151G 多,然后就是各种放狗,总算找到了 btrfs 命令的用法,使用
btrfs filesystem show /home
查看是显示如下:


我的问题是 devid 行代表什么?为什么 Total 行显示 used 是 149.84G,devid 行显示是 210G?
(第二块,第一块 /dev/sda2 是跟,/dev/sda3 是 home)

之前有人遇到过这个问题,据说 btrfs 不能用 df 查看,那个是不准的。

系统说没有了,那就是你的硬盘不够大了。也可能你有很多备份文件没有清理。

我也看见说 df 不准的说法了,就是不知道 btrfs 应该用哪个命令来看准确使用容量

btrfs 会在每次根分区改变时(由 zypper 或 yast 触发)创建两个快照,这种快照分别保存改变之前和之后。另一种是独立快照,默认每天创建一个,你也可以设置为每小时自动创建一个, 独立快照刚开始占用空间为 0, 但随着系统改变越大,它占的空间也就越大。关于 btrfs 快照的具体使用可以使用下面的命令查看:

sudo snappper --help

需要注意的是快照是需要经常清理的,否则便会出现你现在遇到的情况。系统默认的快照清理是可以自动清理的,但需要你设置清理规则,另外你也可以手动清理:
查看快照:

sudo snapper list

删除快照:

sudo snapper delete num1 num2 num3

num 指的是快照编号

当然,如果你觉得上边的清理方法太麻烦(快照编号往往是不连续的),你也可以使用我写的一个清理脚本。
脚本说明在这里:forum.suse.org.cn/t/btrfs/2978/2

PS:话说昨天晚上我刚用 Ruby 把那个脚本给重写了一下,添加了点功能,因此建议使用 Ruby 版 ](GitHub - gmg137/bsc at ruby)

1赞

刚发现,你这个系统自动分区怎么没给 home 分成 XFS ???
如果是清理 home 分区的快照,需要用下边的方法:

1、查看快照配置文件

snapper list-configs

这时候应该能看到 root、home 之类的东西.
如果有 home 配置文件,那么就可以进行下一步。

2、清理全部快照

sudo ./bsc -c home -d -a

我已经用你的脚本进行清理了,home 的文件格式是我在安装的时候更改的。
谢谢了。