服务器磁盘满了怎么办——网站打不开、数据库写不进的排查与清理

王尘宇 问题解答 10

服务器磁盘满了怎么办——网站打不开、数据库写不进的排查与清理-第1张图片-王尘宇

「网站突然打不开」「数据库报磁盘已满」「日志疯狂报错」,遇到这几个症状,八成是磁盘满了。磁盘满是很常见的服务器故障,但好排查也好解决,别慌,按下面的步骤来。

第一步,先确认是不是磁盘满。登录服务器跑 df -h,看根目录和挂载盘的Use%。超过90%就要警惕,98%以上基本就写不进文件了,网站、数据库、邮件都可能罢工。

第二步,定位是什么占的空间。跑 du -sh /* 看根目录下每个目录多大,一层层往下钻。常见的大户是:日志文件(nginx、php-fpm、mysql的log)、备份文件、网站上传目录、临时文件、还有被攻击写入的恶意文件。

第三步,分清「能删」和「不能删」。日志能清理能轮转,但别直接rm(可能正被进程占用)。正确做法是清空:truncate -s 0 /var/log/nginx/access.log。备份文件确认没用了再删,或者转移到别的盘或对象存储。数据库文件别手贱删,那是要命的。

第四步,处理常见元凶。nginx日志天天涨,关掉access log或加日志轮转(logrotate);php-fpm慢日志和错误日志设个最大大小;mysql的binlog会无限增长,配置里设 expire_logs_days=7 自动清理;上传目录里堆积的临时图片定期清。

第五步,治本。日志加轮转、监控磁盘使用率(到85%就告警)、把大文件目录(图片、备份)迁移到数据盘或对象存储。我自己给客户的服务器都加了cron脚本,每天检查磁盘,超过阈值自动清理老日志,再没出过磁盘满的事。

最后,如果是被黑导致磁盘满(常见是挖矿程序疯狂写日志),先把进程kill、清除恶意文件、改密码,再谈清理。处理完顺手把SSH登录限制、端口白名单做了,防止二次入侵。

标签: 服务器 磁盘满 日志 mysql 运维

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~