VPS磁盘满了怎么清理?du和ncdu快速找到吃空间的大文件

du逐层定位大目录、ncdu可视化扫描、Docker日志/系统日志/旧内核清理
发布于
1

VPS磁盘满了最常见的表现:网站打不开(MySQL写不进去)、Docker容器启动失败(没空间写日志)、SSH登录巨慢。本文用du和ncdu两个命令找到谁在吃空间,再针对Docker日志、系统日志和旧备份三类大户下手清理。

第一步:确认磁盘使用情况

df -h
# 看Use%列。如果根分区/的Use%超过90%,就是危险了
# 超过95%,MySQL和Docker随时可能挂

如果显示用了90%以上但你觉得不应该有这么多数据——进入第二步找元凶。

第二步:du定位大目录

# 从根目录开始,看每个一级目录各占多少
cd /
du -sh * 2>/dev/null | sort -hr | head -20

# 这样会输出占用最大的20个目录,类似:
# 12G  var
# 8.2G home
# 3.1G usr
# ...

然后对最大的目录逐层深入——cd /var、du -sh * | sort -hr | head -10——一层一层找到具体是哪个子目录在吃空间。

第三步:ncdu可视化更直观

du的输出是数字列表,ncdu提供交互式界面:

apt install ncdu -y
ncdu /
# 方向键上下移动,回车进入子目录,d删除文件
# 按?看所有快捷键

ncdu扫描整个磁盘后会用树状结构展示每个目录的大小,一眼看到最大的几个是哪些。比du一层层查快得多。按d直接删除目录——但要确认好了再删。

常见吃空间大户和处理方法

Docker容器日志:/var/lib/docker/containers/ 下每个容器的xxxx-json.log可能占到几个G。Docker默认不限制日志大小。

# 查看各容器日志大小
docker ps -q | xargs -I {} sh -c 'echo {}; docker inspect --format='"{{.LogPath}}"' {} | xargs ls -lh'

# 限制日志大小(在docker run或compose里加)
--log-opt max-size=10m --log-opt max-file=3
# 意思是每个日志文件最大10MB,最多保留3个

系统日志:/var/log/journal/ 可能大到几个G。限制大小:nano /etc/systemd/journald.conf,设SystemMaxUse=500M,systemctl restart systemd-journald。

旧内核:每次更新系统可能留下旧内核,占用/boot空间。apt autoremove –purge自动清理旧内核。

备份文件:之前写的备份脚本如果没加删除旧文件的逻辑——/backup或/tmp目录里可能堆了一堆过期备份。find /backup -name “*.tar.gz” -mtime +7 -delete删除7天前的。

雨云VPS入门套餐硬盘20GB起步,日常注意清理Docker日志和旧备份基本够用。优惠码 admin01 首月五折。

清理完了加个监控

清完不等于不用管了。加个简单的磁盘监控脚本,磁盘超过85%自动告警:

#!/bin/bash
USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ $USAGE -gt 85 ]; then
    echo "VPS磁盘使用率${USAGE}%!" | mail -s "磁盘告警" your@email.com
fi
# 加到crontab,每天检查一次
0 8 * * * /root/scripts/check_disk.sh

常见问题

删了大文件但df -h显示空间没释放?

文件被某个进程占着(文件句柄没释放)。lsof | grep deleted找到占着已删除文件的进程,restart那个进程空间就释放了。常见凶手:nginx的access.log被删了但nginx还在往旧句柄写。

du显示占了10G但df显示占了20G?

差额通常是:du不统计已经被删但没释放的文件(上面说的句柄问题)、不统计挂载点下的内容、不统计某些隐藏的metadata。先解决句柄问题再重新对比。

能不能直接把整个/var/log删了?

不能。日志目录本身有权限和上下文设置,直接删目录可能导致服务找不到日志路径启动失败。正确做法是清空文件内容不删文件——echo “” > /var/log/syslog把文件内容置空但保留文件本身。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600

VPS用着用着突然变卡,网站打开要好几秒、SSH敲命令有明显延迟——这种情况比完全断连更难排查。不是挂了,是慢了。本文用四个命令分别定位CPU、内存、磁盘IO和网络的瓶颈,告诉你性能卡在哪个环节。 排查前的第一步:确认不是自己的网络问题 很

VPS突然抽风——SSH连不上、控制台显示”Unknown”、机房通知物理机故障。慌的时候容易把本来就复杂的事情搞得更乱。本文是一份冷静状态下写好的恢复清单——按步骤走,二十分钟内把服务迁到新机器上。 第一步:确认挂到什么程度 先别急着重建

VPS突然连不上,SSH断掉、网站打不开、面板也进不去——如果你正在经历这个,大概率是被DDoS了。这时候慌没用,按下面的步骤走,先止血再恢复。 怎么判断是不是DDoS攻击 不是所有的连不上都是DDoS。先排除几个常见情况:服务器欠费被停了