captain

服务器磁盘满了解决记录

N 人看过

磁盘满了!

这个问题确实以前没有遇到过,不过解决方法也很简单粗暴,就是删文件,但是是因为数据库报错了,才知道磁盘满了,系统盘只有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命令关掉。然后我们再是第一步使用的命令查看磁盘情况,磁盘就会恢复空间。

文章观点并不客观,仅供阅读。