更新于
磁盘占用突然飙升:先分清 inode、容器日志还是业务数据
应用写入失败、数据库报 disk full,或监控显示根分区接近 100%,都不必先删文件。先确认是容量还是 inode 耗尽,再判断占用来自容器日志、业务数据,还是已被删除但仍被进程占用的文件。以下适用于常见 Linux VPS;路径与包管理器因发行版而异,请按本机实际替换。
若证据已指向容器 json-file 日志,请转到 Docker 日志占满磁盘 做轮转配置;本文负责第一轮分流。
1. 先看容量、inode 与最近写入热点
df -h
df -i
sudo du -xhd1 / 2>/dev/null | sort -h
sudo du -xhd1 /var /home /opt /tmp 2>/dev/null | sort -h
df -h 看容量,df -i 看 inode。容量仍充足但 inode 用尽时,常见于大量小文件(缓存、上传碎片、构建产物)。du 用于找目录级热点;若根分区已满,大目录的 du 可能变慢,可先对可疑挂载点分别执行。记录观察时间与业务是否同时发布或导入数据。
2. 按来源分流,不要一上来清空
A. 容器日志
docker system df
docker info --format '{{.DockerRootDir}}'
docker ps -a --format 'table {{.Names}}\t{{.Status}}'
若 Docker 数据目录所在分区告警,再检查单个容器的日志路径与驱动(见 Docker 日志占满磁盘)。不要直接截断 Docker 管理的日志文件;先保留故障窗口内的错误证据。
B. 业务数据与数据库
sudo du -sh /var/lib/docker/volumes 2>/dev/null
sudo du -sh /var/lib/postgresql /var/lib/mysql /var/lib/mongo 2>/dev/null
sudo find /var/www /srv /data -xdev -type f -size +100M 2>/dev/null | head
路径仅为常见示例。上传目录、备份落盘、数据库膨胀、未清理的导出文件都会表现为「某业务路径突然变大」。确认增长是否与导入任务、备份失败重试或用户上传峰值一致,再决定是扩容、归档还是修应用逻辑。
C. 系统日志、包缓存与临时文件
journalctl --disk-usage
sudo du -sh /var/log /var/cache /tmp /var/tmp 2>/dev/null
journal、apt/yum/dnf 缓存、临时目录异常增长时,优先查是否有服务在刷错误,而不是先 rm -rf。清理缓存前确认没有依赖本地缓存的安装/回滚流程。
D. 文件已删但仍占空间
sudo lsof +L1 2>/dev/null | head -n 40
进程仍打开已删除文件时,df 显示空间未释放,du 却看不到对应文件。定位到进程后,优先在维护窗口重启该服务或按厂商文档轮转,而不是杀死未知进程。
3. 变更前:最小动作、验证与回退
在负责人批准前,只做只读排查。确需释放空间时:
- 优先删除已确认可丢弃的缓存/过期备份,并保留操作记录
- 容器日志问题:用轮转配置控制后续增长,而不是反复手动清空
- 业务数据:先备份或快照,再归档;不要在未确认归属时批量删除
- 每次变更后复查
df -h、df -i、关键服务健康与告警是否复发
说明性示例
这是说明性示例,不是真实客户案例:根分区 df -h 显示 98% 已用,df -i 正常;du 显示 /var/lib/docker 最大,但 docker system df 中 Images/Containers 并不突出。进一步检查发现某应用容器的 json-file 日志达数十 GB,且错误为数据库连接拒绝的高频重复。只删日志会再次告警;应先修复连接或限流日志,再配置 max-size / max-file。若同一场景下 df -i 先耗尽而 du 看不到特大文件,则应转向小文件目录与上传/缓存路径,而不是假定「又是 Docker 日志」。
AI 排查提示词
请只读检查磁盘容量与 inode、最大目录、Docker 数据目录与最近错误日志趋势。判断证据更支持「容器日志」「业务数据」「系统缓存」还是「已删除仍占用」,并列出仍缺少的信息。不要删除文件、截断日志或重启服务;如需变更,先给出最小步骤、风险、验证与回退供我确认。
试用
- 官网:https://www.itops.sh/?utm_source=guide&utm_medium=cta&utm_campaign=sprint_w1&utm_content=disk_spike
- 控制台注册:https://app.itops.sh/login?screen=register&utm_source=guide&utm_medium=cta&utm_campaign=sprint_w1&utm_content=disk_spike
每月免费 500 次 AI;服务器数量不限。桌面端可将 SSH 凭证默认保留在本机,云端托管需你显式选择。
需要帮助理解排查结果?
OpsMate 把 SSH 终端和 AI 放在同一页,由你核对证据。点「需要分析」后,命令输出会发到云端 AI,请先去除敏感信息。
免费开始 本地凭证桌面端