#Linux服务器磁盘占满完整排查流程(宝塔环境)在用宝塔管理云服务器的时候,经常遇到磁盘使用率100%的告警,网站直接打不开。很多时候明明手动删了文件,空间还是不释放,这里整理一套完整排查步骤,适合自己日常运维查阅。##1、先区分两种情况:磁盘空间满还是inode耗尽很多人只看磁盘容量,忽略inode。inode耗尽的时候,磁盘还有剩余空间,但是无法新建文件、日志。```bash#查看磁盘容量df-h#查看inode使用情况df-i2、定位占用最大的目录
如果是 inode 满了,大多是大量小日志文件、缓存碎片堆积,需要批量清理过期小文件。
du-sh/*2>/dev/null|sort-hr这条命令会列出根目录下各个文件夹占用大小,从大到小排序。找到占用高的目录,继续往下一层排查。
如果是 /www 目录占用高,优先看站点日志、备份文件、数据库缓存。
如果是 /var 目录,基本是系统日志在疯狂写入。
3、坑点:文件删除但是空间不释放
这个问题非常常见:rm 删掉大日志文件,但是进程还持有这个文件句柄,磁盘空间不会释放。
lsof|grepdeleted执行这条命令,找到已经标记 deleted、但是还被进程占用的文件。
解决办法:重启对应的进程(Nginx、PHP、mysql 等),或者直接重启服务器释放句柄。
4、批量清理过期日志(谨慎操作)
清理 7 天之前的日志文件,不会影响业务
find/var/log-typef-mtime+7-name"*.log"-deletefind/www/server/nginx/logs-typef-mtime+7-delete⚠️不要直接执行 rm -rf,先 ls 预览确认文件再删除,避免误删站点数据。
5、宝塔自带方案
宝塔面板自带【硬盘分析】插件,可视化查看文件占用,新手不用敲命令,点几下就能定位大文件。
定期关闭不需要的站点日志、压缩自动备份、限制日志大小,从源头避免磁盘爆满。
总结
排查顺序:
- df -h /df -i 判断类型
- du 定位大目录
- lsof 检查已删未释放文件
- 清理日志 / 无用备份
- 优化日志轮转规则,预防再次爆满
参考资料
- 测试文档:www.lrpab.com