SWE / SRE / Frontend · System Design / 基础

TikTok Linux 磁盘满:块、Inode 与已删未关文件

用只读检查定位容量来源,再按保留策略释放或扩容,验证写入恢复。

题目重点:用只读检查定位容量来源,再按保留策略释放或扩容,验证写入恢复。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 讨论Linux服务节点;文件删除/截断需按服务日志与数据保留政策,不能随意删数据库文件。

解题路线

  1. 先看df -h与df -i,区分字节耗尽和inode耗尽,核对真正报错的mount;容器/卷/配额也可能与主机磁盘不同。
  2. 用du在目标文件系统内定位大目录,查看日志增长与临时文件;注意挂载点、权限和硬链接造成读数差异。
  3. df高du低时查已删除但仍打开文件(如lsof +L1),空间要等最后句柄释放;重启或重开日志必须评估服务影响。
  4. 止损降低写入/轮转日志、清理已确认可删项或扩容。保留故障证据,对数据库/WAL/包管理数据遵守应用清理方式。
  5. 恢复后实际做应用可控写入与健康检查,建立容量/增长速率告警和留存策略,不只看free数字下降。

手动走一遍

百万个小文件可能inode耗尽,删一个大文件不解决;反过来大日志占块则需容量治理。已删日志仍被进程持有,du看不到但df仍满,直接继续删除其他目录不是根因修复。

规模与取舍

du/lsof全量扫描有I/O/权限成本,故障中限定范围;预测剩余时间约剩余字节/增长率,增长不稳定需余量。

易错点与追问

容易失分的边界

  • rm未知大文件。
  • 只看df忽略inode/配额。
  • 删除文件保证立刻回收空间。

继续深挖

  • 只读文件系统与磁盘满怎样区分?
  • 如何处理持续高速日志增长?
✓已复制微信号!