服务器磁盘满了解决记录
磁盘满了!
这个问题确实以前没有遇到过,不过解决方法也很简单粗暴,就是删文件,但是是因为数据库报错了,才知道磁盘满了,系统盘只有40g,log很快就占满了,但是有些文件确实不敢随意删,你也不知道他会出什么问题,所以只好删nginx和tomcat日志。
排查方法
第一步:查看磁盘情况
我们需要知道哪个磁盘占用的空间最多,然后再按照占用大小来依次清除,可以使用以下命令:
#查看磁盘状态
df -h
命令解释:
df: 用于显示目前在Linux系统上的文件系统的磁盘使用情况统计。
-h:以K,M,G为单位,提高信息的可读性。
第二步:查看文件夹下面的磁盘使用情况
我们最需要的就是知道当前的文件夹下的磁盘使用情况,这样好知道在哪个文件夹里下手:
#需要进入跟路径
cd /
du --max-depth=1 -h
命令解释:
du:会显示指定的目录或文件所占用的磁盘空间。
–max-depth-1:–max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
-h:以K,M,G为单位,提高信息的可读性。
查询到大文件不要着急删除,需要看一下文件有没有被其他应用程序正在使用,比如nginx的日志文件,肯定是一直在使用的,这个时候要么删除后重启nginx,要么直接复写这个文件不用重启。
查看文件是否有程序正在使用:
lsof fileName
复写日志文件命令:
echo " " > /usr/local/nginx/logs/access.log
按照以上方法循环可以清除大部分不用的文件。
删除后没有释放磁盘空间
原因:有进程正在使用该文件,但是已被删除
可以使用以下命令
lsof -n | grep deleted
解释一下:
lsof:列出当前系统打开文件的工具
然后我们找到我们已经开始删除的文件,将这个进程使用kill命令关掉。然后我们再是第一步使用的命令查看磁盘情况,磁盘就会恢复空间。
文章观点并不客观,仅供阅读。