服务器磁盘满了怎么办?零基础排查清理与扩容完整教程

一、为什么服务器磁盘会突然爆满?

很多新手站长遇到网站突然打不开、SSH 登录报错 "No space left on device",第一反应是服务器坏了。
其实八成原因是磁盘空间占满了。
日常积累的日志、临时文件、过期备份、Docker 镜像、数据库 Binlog 等都会不知不觉吃掉磁盘。
本文从零带你排查、清理、扩容,全程可落地。

二、先摸清家底:查看磁盘使用情况

不管是阿里云、腾讯云还是自建服务器,第一步永远是用命令查看整体占用。

SSH 登录后执行:

df -h

你会看到类似输出:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G   38G  2.1G  95% /
  • Use% 超过 90% 就要处理了。
  • 如果根目录 / 接近满,赶紧释放空间。

如果你用宝塔面板:

登录面板 → 左侧“监控” → 查看“磁盘”图表,或者直接看首页顶部的实时磁盘剩余。

三、找出“吃空间”的元凶

知道根目录满了之后,需要定位哪个目录或文件最大。

方法1:逐层扫描(推荐新手)

cd /
sudo du -sh * | sort -rh | head -10

这会列出根目录下占用最大的前十个目录。
重点关注 /var(日志)、/tmp(临时文件)、/opt(第三方软件)、/home(用户数据)等。

方法2:一键查找大文件(>1GB)

sudo find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null

如果找到的是日志或缓存文件,基本可以安全删除。

宝塔用户可视化操作:

宝塔左侧“文件” → 进入根目录 → 点击右上角“大小排序”,手动查看大文件夹。
还可以用“工具箱”里的“磁盘占用分析”功能,直接显示每个目录的占比。

四、安全清理:哪些能删,哪些别动

1. 清理系统日志(最有效)

sudo journalctl --vacuum-time=3d    # 只保留3天日志,大幅释放
du -sh /var/log/journal             # 确认释放前/后

如果用 rsyslog,删除 /var/log 下的老文件(注意不要删 .log 正在写入的文件)。

2. 清理包管理器缓存

# CentOS/RHEL
sudo yum clean all
# Ubuntu/Debian
sudo apt-get clean

3. 删除过期备份和无用 Docker 镜像

如果装了 Docker:

docker system prune -af    # 清理未使用镜像、容器、网络

宝塔用户: 左侧“软件商店” → “已安装” → 对应软件设置里可以清理日志。
例如 Nginx 日志可在配置中设置自动切割。

4. 清理回收站与临时文件

sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*

特别注意: 不要删除 /bin/sbin/lib/etc 等系统目录下的任何文件。
如果不确定,先备份再删。

五、如果清理不够,如何扩容?

清理后若依然空间紧张(比如网站数据持续增长),建议直接扩容云硬盘。

以腾讯云 / 阿里云为例:

  1. 在云控制台找到服务器,点击“磁盘” → “扩容”。
  2. 调整到所需大小(例如从40G扩到80G),付费后等待几分钟。
  3. SSH 登录执行扩容命令让系统识别新空间:
# 查看磁盘分区号,假设是 /dev/vda1
sudo growpart /dev/vda 1
sudo resize2fs /dev/vda1

查看确认:df -h 应该看到新容量。

宝塔用户注意: 扩容后需要在面板左侧“软件商店” → “系统工具” → 安装“磁盘扩容”插件,按提示执行。

六、避坑与高频问题

Q:删了日志后服务会异常吗?
不会。日志文件是持续写入的,删除老文件后新日志会继续生成。保险起见,建议先备份再删。

Q:du 命令卡住怎么办?
可以用 timeout 30 du -sh /var 设置超时,或者先从最可能的目录开始查。

Q:云盘扩容后 df 没变化?
可能是忘记执行 resize2fs 或分区号不对。先执行 lsblk 确认设备名,再重试。

Q:宝塔清除缓存会误删网站文件吗?
宝塔“缓存清理”只清理面板自身的临时文件,不影响网站。如果使用“文件管理”手动删除,请确认路径。

七、验证清理效果

执行完上述操作后,再次运行:

df -h

对比之前的 Use% 数值,可用空间应该明显增加。
建议监控一周,观察磁盘增长趋势。
如果空间依然快速减少,可能是程序有 bug 写死循环日志,检查 web 服务日志大小。

长期建议: 设置日志自动轮转(logrotate)、定期清理任务、或购买云监控报警,磁盘使用率超过 80% 时就收到提醒,避免再次爆满。

按照上面的步骤操作,绝大多数磁盘满问题都能解决。
遇到异常时,优先回看避坑和高频问题部分,或者用 df -i 检查 inode 是否占满(小文件过多)。
希望这篇教程能帮你顺利腾出空间,服务器稳定运行。

分享到:
上一篇
服务器内存爆满怎么办?从排查到解决一步到位
下一篇
服务器带宽跑满怎么办?零基础排查与急救指南
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意