记一次 Ubuntu 磁盘空间消失

某天晚上, 我正在冲浪, 突然系统提示我磁盘空间没了. 我寻思这咋可能. 明明不久前我还刚删了一堆东西. 然后 df 一下, 好家伙, 真没了.

感觉可能是啥东西一直往在写文件, 把硬盘占满了. 本着这个原理, 想 du / + sort 看最大的文件. 结果, sort 要用到 /tmp, 而磁盘空间不够. 上网搜了一些搜索文件的工具, 没有一个是装在这个机器上的. 之后尝试删除一些文件, 然后安装工具, 结果抢不过他, 没下成功. 遂放弃.

sort 不行, du 还是可以用的, 就手动猜可能是啥东西, 看看大小. 第一感觉应该是某个程序挂了, 然后一直在输出日志. 上网搜了一下, 还真有这种情况. 可惜我遇到的不是这个问题. du 了一下 /var/log 很小. 难不成是什么软件把 log 丢在了 home 下的隐藏文件里? 本着这个想法又 du 了一下 home. 可是除了 Android Studio 相关的东西大一点, 其他都很小. 离了谱了.

后来想到一种方法. 既然这个进程向我磁盘里写了这么多东西, 并且一直在写, 那我只要找到 io 最大的那个进程就好了吧. 之后跑到 /proc 下. 因为 sort 用不了, 所以一顿手动操作, cat */io | grep -E "write_bytes: [1234567890]{1, }". 二分数字的长度, 最后确定了最大的 io. 然后一顿乱操作找到了对应的 pid. 一看, 好家伙, 系统进程, 用的都是系统库. 人彻底傻了.

不敢 kill 系统进程, 不敢重启.

正当我毫无头绪时, 我在终端里随便打可以查看系统信息的命令, 打了一个 top, 发现了猫腻. WTF?! bitwarden 咋在吃我 cpu? 唔, 难道是 bitwarden 的锅? 把它 kill 了, 1s 后. 世界突然安静了.

我才反应过来, 之前风扇转的不正常, 只不过被我当成白噪了. 离谱.

我想可能 bitwarden 就是罪魁祸首, df 一下, 终于磁盘可用空间多了 77M, 并且没有消失.

正当我想松一口气, 发现他没把空间还给我! 既然不是系统问题, 那重启应该没啥关系吧. 重启后, 空间回来了.

仔细想想我对 bitwarden 干了啥. 之前突然发现 bitwarden 打不开了, 在 terminal 中运行了一下, 报错了, nodejs 相关. 想起来之前好像确实更新了一下 nodejs. 然后我就把 bitwarden 卸了, 打算重装. 之前是装载 snap 里的, 不是很喜欢. 于是在 github 上找到了 deb 包. 重装了一下(哦提一句, snap 里装的那玩意, 暗色主题 menu bar 还是白色的, 特别难受. 用 deb 包装在系统里的就没这个问题).

后来我注意到了多了个奇怪的挂载, 点开一看, 里面有 bitwarden 二进制程序. 我猜可能是某种安装过程需要挂载吧(毕竟 windows 下某些程序是这么装的), 也没多管他.

想想这一切好像稍微能够说得通了. 因为出错的挂载导致挂载的空间占满了 / 的空间, 并且持续抢占空间. 所以我手动的方式 df /var/home 等找不到大文件. 并且 io 最大的进程是系统进程(主要是那个进程调用的系统库太多了我不想搜他们是干啥的, 就没发现问题). kill 了之后并没有 unmount 所以空间并没有还回来.

不知道是不是这个理论, 想着复现一下, 没有成功.

能不能听听你的风扇正不正常!!!