记一次 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
所以空间并没有还回来.
不知道是不是这个理论, 想着复现一下, 没有成功.
教训
能不能听听你的风扇正不正常!!!