文章目录
1.问题描叙
1.1 df显示磁盘空间使用已达100%
df显示"/"目录使用已达100%
[root@pcms-mes dev]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 1.3G 6.6G 16% /dev/shm
tmpfs 7.8G 34M 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/sda2 31G 29G 0 100% /
/dev/sda1 190M 183M 0 100% /boot
/dev/sdd 50G 4.1G 43G 9% /u3
/dev/sde 99G 82G 12G 88% /u4
/dev/sdc 99G 49G 45G 53% /u2
/dev/sdb 109G 94G 8.8G 92% /u1
tmpfs 1.6G 0 1.6G 0% /run/user/54321
1.2 du检查实际使用空间
du查询,并没有哪个目录消耗过多的空间
[root@pcms-mes dev]# du -sh /* --exclude=/u1 --exclude=/u2 --exclude=/u3 --exclude=/u4 --exclude=/proc
84K /backup
0 /bin
181M /boot
0 /DBBACKUP
1.3G /dev
39M /etc
20M /home
0 /lib
0 /lib64
16K /lost+found
4.0K /media
4.0K /mnt
1.4M /opt
4.6G /oracle
72K /root
34M /run
0 /sbin
4.0K /srv
0 /sys
68K /tmp
2.6G /usr
680M /var
2.Solution
2.1 根因
某个进程可能打开了一个大文件,但后来又被删除了。 必须终止该进程才能释放空间。 可以使用 lsof 来识别该进程。 在 Linux 上,lsof 知道已删除但打开的文件,并在 lsof 的输出中标记为((deleted))。
2.2 使用lsof列出持有删除文件的pid
[oracle@pcms-mes ~]$ lsof +L1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME
expdp 3213 oracle 1w REG 8,2 22482501632 0 401159 /home/oracle/nohup.out (deleted)
expdp 3213 oracle 2w REG 8,2 22482501632 0 401159 /home/oracle/nohup.out (deleted)
2.3 kill 进程
[oracle@pcms-mes ~]$ kill -9 3213
2.4 验证
可以看到,进程被kill后,”/"目录已经得到空间释放
[oracle@pcms-mes ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 1.3G 6.6G 16% /dev/shm
tmpfs 7.8G 34M 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/sda2 31G 7.9G 21G 28% /
/dev/sda1 190M 183M 0 100% /boot
/dev/sdd 50G 4.5G 43G 10% /u3
/dev/sde 99G 82G 12G 88% /u4
/dev/sdc 99G 49G 45G 53% /u2
/dev/sdb 109G 94G 8.8G 92% /u1
tmpfs 1.6G 0 1.6G 0% /run/user/54321