哪些目录最大
只读df -h /
du -xh / --max-depth=2 2>/dev/null | sort -h | tail -n 15跑完应看到: 最后几行就是根分区上最大的目录。
03 / FIELD NOTES
先找出谁占了空间,再清理日志、apt 缓存和不用的 Docker 镜像。
小硬盘 VPS 上常见的元凶是 systemd 日志、Docker 镜像和构建缓存、容器日志。先量一量,只清真正大的。
出现 “No space left on device”,或 df 显示根分区接近 100%。
不要手动删 /var/lib/docker 下的文件,用 docker 命令清理。
df -h /
du -xh / --max-depth=2 2>/dev/null | sort -h | tail -n 15跑完应看到: 最后几行就是根分区上最大的目录。
journalctl --disk-usage
docker system df跑完应看到: 清理前先和 du 的结果对比。
journalctl --vacuum-size=200M
apt-get clean跑完应看到: 保留最新 200 MB 日志,删除已下载的安装包。Rocky / AlmaLinux 用 dnf clean all;Alpine 用 apk cache clean(Alpine 没有 journal)。
docker image prune -a
docker builder prune跑完应看到: 删除前都会确认。任何容器(含已停止的)在用的镜像会保留。
后两步会删除旧日志、软件包缓存和不用的镜像,不会动数据卷。
{
"slug": "disk-full",
"risk": "caution",
"tags": [
"disk",
"docker",
"logs",
"linux"
],
"updated": "2026-10-30",
"pathIndex": null,
"why": "小硬盘 VPS 上常见的元凶是 systemd 日志、Docker 镜像和构建缓存、容器日志。先量一量,只清真正大的。",
"steps": [
{
"command": "df -h /\ndu -xh / --max-depth=2 2>/dev/null | sort -h | tail -n 15",
"risk": "safe"
},
{
"command": "journalctl --disk-usage\ndocker system df",
"risk": "safe"
},
{
"command": "journalctl --vacuum-size=200M\napt-get clean",
"risk": "caution"
},
{
"command": "docker image prune -a\ndocker builder prune",
"risk": "caution"
}
]
}