Linux磁盘满问题分析

线上一台Linux服务器最近经常磁盘根分区满告警,
但不是普通的日志文件或数据文件过多过大,现象如下:

1)执行“df -h”查看各分区空间的使用情况
[root@XEN64 /]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       9.8G  8.7G  535M  95% /
devtmpfs        7.7G     0  7.7G   0% /dev
tmpfs           7.7G     0  7.7G   0% /dev/shm
tmpfs           7.7G  666M  7.1G   9% /run
tmpfs           7.7G     0  7.7G   0% /sys/fs/cgroup
/dev/sda3        20G  3.3G   16G  18% /usr/local

可以看到根分区使用率超过了预警值,
进入根目录,查看根目录下各子目录的大小:
[root@XEN64 /]# du -sm *
0       bin
180     boot
0       dev
24      etc
3       home
0       lib
0       lib64
1       lost+found
1       media
1       mnt
32      opt
du: cannot access 'proc/17842/task/17842/fd/4': No such file or directory
du: cannot access 'proc/17842/task/17842/fdinfo/4': No such file or directory
du: cannot access 'proc/17842/fd/4': No such file or directory
du: cannot access 'proc/17842/fdinfo/4': No such file or directory
0       proc
2       root
666     run
0       sbin
1       srv
0       sys
96      tmp
5856    usr
221     var

进一步检查/usr目录:
[root@XEN64 /usr]# du -sm *
358     1.2-compat
164     bin
1       etc
1       games
33      include
912     lib
432     lib64
101     libexec
3269    local
1       man
46      sbin
547     share
1       src
0       tmp

对比du和df的结果,可以发现两者的已使用大小不一致,
du命令得到的已用大小远小于df命令已用大小,初步猜测存已被删除文件仍然有进程在写它,导致du命令发现不了。
如果允许,最简单的处理方式是重启机器,不然用下列命令找出被删除的,但仍然可能有进程在写它的文件:
pids=`ps aux|awk '{print $2}'`;for pid in $pids; do lsof -p $pid|grep del; done

见到庐山真面目:
[root@XEN64 /proc]# pids=`ps aux|awk '{ if (NR>1) print $2}'`;for pid in $pids; do lsof -p $pid|grep del; done
stati 28885 root    1w      REG        8,1 5969132048     409096 /tmp/process_monitor-root.log (deleted)
stati 28885 root    2w      REG        8,1 5969132048     409096 /tmp/process_monitor-root.log (deleted)
stati 28885 root    3u      REG        8,4   20480039   35651587 /data/consumer/log/consumer.log.5 (deleted)
consumer 29756 root    1w   REG        8,1 5969132048     409096 /tmp/process_monitor-root.log (deleted)
consumer 29756 root    2w   REG        8,1 5969132048     409096 /tmp/process_monitor-root.log (deleted)
consumer 29756 root    3u   REG        8,4   20480039   35651587 /data/consumer/log/consumer.log.5 (deleted)

果然是有大量的已经删除文件,办法要么重启,要么重启持有它们的进程,问题即可解决。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值