Linux 磁盘空间入门:df、du 查满盘,删之前先定位再动手
很多新手第一次遇到满盘,表现都一样:网站报错、后台进不去,第一反应是重启服务器。重启完还是不行,才发现磁盘已经 100% 了。磁盘满了之后,数据库写不进数据、日志写不进文件、上传也存不下来,服务看着像挂了,其实根子在空间上。所以排查的第一步永远是先看空间,而不是先重启。
先用 df -h 看整盘。-h 是按 G、M 这种人能读的单位显示,重点看 Use% 和挂载点那一列:根目录 / 到了 90% 以上就要警惕,100% 就是已经满了。还有一个容易漏的指标是 inode,用 df -i 看:磁盘空间明明还有,文件却写不进去,多半是小文件太多把 inode 占满了,日志碎片、缓存碎片都可能造成这种情况。
知道盘满了,接下来用 du 找是谁占的。du -sh /var/log/* 是看某个目录下各子项各占多少,-s 是只汇总一层,别一上来就 du 整盘,那样要扫很久。从根目录一层层往下钻最快:先看 /var、/home、/www 哪个大,再进那个目录继续看子目录,两三层就能定位到罪魁祸首。想直接看最大的十个,可以用 du -sh 目录/* | sort -rh | head -10 排个序,大的排在前面,一眼就能看到。
新手最常见的三类大户,处理方法各不一样。第一是日志:网站访问日志、错误日志、系统日志,跑久了不清理会越滚越大。清理前先看一眼是不是还在疯狂增长——如果错误日志每分钟都在涨,删了还会再涨,要先修掉报错的源头。已经确认没用的旧日志可以直接删,但正在被程序写着的日志文件别直接 rm:程序还握着文件句柄,删了空间也不释放,正确做法是清空内容(echo > 文件名),或者重启对应服务后再删。
第二是备份和上传文件:站点备份、数据库备份、用户上传的图片和附件,都是越攒越多的东西。备份的原则是只留最近几份、并且至少一份放在服务器之外——只放本机的备份,服务器一挂备份也跟着没了,等于没备。上传目录里先按时间和大小排,确认是废弃的旧文件再删,别按目录一锅端。
第三是缓存和临时文件:包管理缓存、程序缓存、/tmp 下的临时文件,删之前先确认程序不在用它们。正在运行的服务依赖的缓存删了可能要重启才能恢复,动手前先停掉相关服务或者选业务低峰期操作。
最后说一个好习惯,和前面几篇是连着的:日志那篇讲了日志长什么样、服务管理那篇讲了怎么重启服务、Cron 那篇讲了怎么定时做重复的事——把“每天凌晨查一次磁盘、超过 85% 就发提醒、每周清一次旧日志”写成 Cron 任务,满盘就从救火变成了例行检查。清理完别忘了再跑一次 df -h,确认 Use% 真的降下来了,再顺手打开网站、登录后台看一次,都正常才算收尾。
总结一下:满盘排查就是三句话,df 看整盘、du 往下钻、删之前先确认这东西是不是在用、是不是唯一一份。先定位再动手,比上来就删快得多,也安全得多。
- 点赞
- 收藏
- 关注作者
评论(0)