问题
在基于 Linux 的系统上,根文件系统被一些未知进程填满。
无论从文件系统中移动或者清除了哪些文件,它都会继续。
# df -hP / /dev/mapper/VGExaDb-LVDbSys1 ext3 30G 29G 0 100% /
没有大文件来说明整个文件系统:
# find / -xdev -type f -size +100M -exec ls -lh {} \;
没有大目录来说明整个文件系统:
# du -h --max-depth=1 / 42M /sbin 13M /etc 2.4G /usr 45M /tmp 451M /var 192M /lib (and so on) ...
更多: zhilu jiaocheng
解决方案
过去,有两个或者多个进程在使用一个文件;例如,/tmp/top.log。
一个进程通过删除它(实际上是目录条目)来停止它对 /tmp/top.log 的访问,另一个进程继续写入 inode 引用,从而允许文件继续增长。
这可以在以下输出中看到:“lsof +L 1”
# lsof +L 1 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAME top 34261 root 1W REG 252,0 21460567592 0 1785896 /tmp/top.log (deleted)
其他文件也被列出,但要小得多。
这表明 user=root 正在运行一个正在假脱机到 /tmp/top.log 的 top 命令,并且当前没有指向该文件的链接。
该假脱机文件大小为 21Gb,但未在“du -h -max-depth=1 /”输出中报告,其中 /tmp 仅列为 45M。
请按照以下步骤识别并终止此类进程。
- 使用以下命令识别系统上链接少于 1 个的文件:
# lsof +L 1
- 终止任何正在写入任何异常大文件的进程。
在上面的示例中,我们将运行:
# kill 34261
- 当最终进程停止使用该文件时,空间将被释放。
日期:2020-09-17 00:11:03 来源:oir作者:oir