linux磁盘空间莫名占用

故障上报

今天收到某台机器的磁盘告警,用 df 检查发现 /data 可用空间为0,而用 du 检查发现占用的空间都很少,仅占用4.3G,大量空间被莫名占用了

[root@u-220112-app]# fdisk -l | grep dev
Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Disk /dev/vdb: 42.9 GB, 42949672960 bytes, 83886080 sectors

[root@u-220112-app]# df -Th | grep dev
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vda1      ext4       40G   18G   20G  48% /
/dev/vdb1      ext4       40G   40G     0 100% /data

[root@u-220112-app]# du -sh /data | grep G    
4.3G    /data

初步清理

使用 find 查找该目录超过500M的文件,先做初步的清理

#.查找所有大于500MB的文件
find /data/ -size +500M

#.找到60天以前、大于100MB、后缀为 .log的文件
find /data/ -name "*.log" –mtime +60 -typef -size +100M
#find /data/ -name "*.log" –mtime +60 -typef -size +100M | xargs rm –rf {};

执行 lsof 查找占用该目录空间的进程和文件

lsof +L1 /data/

解决办法

用lsof检查后才发现原因是,某个进程占用的日志文件被删除之后而未重启进程,比如通过 rm -f nohup.out 删除文件而非 echo > nohup.out 重置文件,从而造成空间无法释放。根据lsof列出的进程号,重启可疑进程之后空间就释放出来了

# yum install -y lsof
lsof | grep delete

lsof +L1 /data | grep delete

kill $pid

注:后面再次遇到同样的问题,根据 lsof | grep delete 返回的结果(如下图示),重启 tomcatGrowthStatistics8083 这个java进程就好了。

Copyright © www.sqlfans.cn 2024 All Right Reserved更新时间: 2024-09-23 10:22:27

results matching ""

    No results matching ""