Btrfs Quota 以及 Timeshift 导致的系统无响应问题解决过程记录

记录一下之前困扰我近一年的 Btrfs 快照导致的系统无响应问题

系统无响应的具体表现

每次整点时有概率出现在一分钟左右的时间内和磁盘写入相关的操作都会卡死例如直接和文件操作相关的保存文件或者会写入 ~/.zsh_history 的在终端输入命令以及打开新的 GUI 应用等等基本上就是整个系统完全卡死

另外我有观察到在笔记本不使用外接电源时这一问题表现地更为严重即更容易被察觉到每次卡住的时间更长

最初解决问题的尝试

遇到问题后不久我就怀疑上了一些每小时自动运行的任务包括 Timeshift 的快照以及一些自己写的 crontab

最值得怀疑的就是 Timeshift 的快照了然而当时我曾经尝试过暂时关闭自动快照但问题似乎没有得到解决具体原因已不可考了当时我还在一个群里提出了这个猜想然后群友说快照是原子级操作不应该卡住我感觉很有道理就在很长时间内没有怀疑自动快照的问题了

后来我又尝试着关闭各种 crontab当然也没有解决问题

有想过在整点时用 htop 查看进程信息但由于卡住时运行不了命令当然可以关闭终端的历史记录但关了也不见得不卡而且我懒啊x需要提前打开 htop而且也不是每小时都会遇到这个问题看到了进程信息也不一定能找到问题所在最后也没有成功

当时自然也尝试过各种搜索至于为什么没有搜索到或者注意到 Freeze issues with BTRFS and Timeshift 也不可考了可能是搜索关键词不对吧毕竟当时我一定程度上排除了对快照的怀疑

由于问题的严重程度和是否外接电源有关我甚至一度怀疑过是硬件问题想换电脑

最终问题的解决

在被这一问题困扰了大半年后我又忍不住想搜索解决方法这一次很快就搜到了 Freeze issues with BTRFS and Timeshift然后按里面说的禁用了 quota: sudo btrfs quota disable /

但过了几天我发现问题又出现了以为这个方法不管用

后来又过了一段时间我又忍不了了再仔细阅读了一下发现这个 thread 里有提到 Timeshift 会自动打开 quota要修改 Timeshift 的设置才行至此问题解决

后记: Timeshift 已修复此问题

实际上Timeshift 已在我自己解决问题前不久就修复了这一问题: Fix #865, #839, #680: Do not create or remove Qgroups when snapshots are created or removed

虽然 Timeshift 在 5 月 29 日就发布了修复但是 archlinuxcn 在 7 月 1 日才更新于是我有幸在 Timeshift 更新的前一天自己解决了问题 🙃...

消息记录,发于 6 月 30 日: 前段时间听说关 quota 可以解决这个问题,但关了之后还是经常卡。今天才发现 timeshift 里设置了开 quota,得把 timeshift 的自动开 quota 关了才行 🌚 需要观察几天是否还会整点卡

其实我还是写这篇博客的时候想看一眼 Timeshift 的 quota 设置发现没有这个设置项了才知道 Timeshift 已经修了...