openSUSE Btrfs文件系统的硬盘清理

买了一个硬盘只有20G的VPS,装的是openSUSE 15.0,11G给了/根目录,1G给了/swap,剩下的给了/home,默认安装的时候磁盘是Btrfs文件系统。安装好基本配置好服务器之后,/用了3G多,估摸这硬盘大概也是够用了。后来系统更新到15.1之后,用df -h命令发现:
Shengtong:/ # df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/sda2 11G 8.6G 763M 92% /
/dev/sda3 7.6G 40M 7.6G 1% /home
/dev/sda2 11G 8.6G 763M 92% /.snapshots
...
/根目录消耗的硬盘空间之快超乎我的想象。研究后发现,openSUSE默认使用Btrfs文件系统之后,有一个系统快照功能,每次系统有一次更新(zypper up)或对系统有什么更改,她都会在/.snapshots/生成一个系统快照,方便用户把系统搞崩溃之后可以回滚。用snapper list命令可以查看系统有多少个快照可以回滚:
Shengtong:/ # snapper list
# | Type | Pre # | Date | User | Used Space | Cleanup | Description | Userdata
----+--------+-------+--------------------------+------+------------+---------+------------------+--------------
0 | single | | | root | | | current |
1* | single | | Sun Aug 11 20:26:39 2019 | root | 67.48 MiB | | 第一个根文件系统 |
13 | pre | | Sun Aug 11 20:55:34 2019 | root | 1.47 GiB | number | zypp(zypper) | important=yes
14 | post | 13 | Sun Aug 11 21:09:25 2019 | root | 55.07 MiB | number | | important=yes
19 | pre | | Sun Aug 11 21:17:35 2019 | root | 66.70 MiB | number | zypp(zypper) | important=yes
20 | post | 19 | Sun Aug 11 21:32:05 2019 | root | 83.90 MiB | number | | important=yes
21 | pre | | Sun Aug 11 21:55:10 2019 | root | 504.00 KiB | number | zypp(zypper) | important=no
22 | post | 21 | Sun Aug 11 21:55:17 2019 | root | 1.42 MiB | number | | important=no
23 | pre | | Sun Aug 11 21:56:48 2019 | root | 144.00 KiB | number | zypp(zypper) | important=no
24 | post | 23 | Sun Aug 11 21:57:01 2019 | root | 1.42 MiB | number | | important=no
25 | pre | | Sun Aug 11 21:57:24 2019 | root | 128.00 KiB | number | zypp(zypper) | important=no
26 | post | 25 | Sun Aug 11 21:57:36 2019 | root | 1.70 MiB | number | | important=no
对于我这样的情况,执行下面的命令即可,里面的数字就是上面的第一列数字,数字代表期对应的快照,切忌不要把0和1写进去:
snapper delete 13 14 19 20 21 22 23 24 25 26
然后再df -h看看:
Shengtong:/ # df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/sda2 11G 3.7G 5.4G 41% /
/dev/sda3 7.6G 40M 7.6G 1% /home
/dev/sda2 11G 3.7G 5.4G 41% /.snapshots
...
瞬间就空出来接近5G多的硬盘空间。对于我这种基本不会回滚的用户来说,快照真的伤害到了我,找到配置文件,对于openSUSE来说,/etc/snapper/configs/root就是了,里面有两个配置,默认情况下是这样的:
NUMBER_LIMIT="2-10"
NUMBER_LIMIT_IMPORTANT="4-10"
对应的意思是对于一般的快照,保存2~10个;对于重要的快照,保存4~10个。多了多了,对于我来说,一个就够,因此:
NUMBER_LIMIT="1"
NUMBER_LIMIT_IMPORTANT="1"
然后用:
systemctl | grep snapper
命令查到有关snapper的两个服务,把这两个服务重启一下就好了。