暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

linux空间不足,找不到占用文件......

DBA成长之道 2021-03-10
3383

1.问题背景

        有台刚到手没多久的服务器根目录报空间不足,登录服务器后发现空间确实不足,但用各种方式都找不到占用空间的文件。

2.问题排查

根目录下包含了所有目录,但有些目录是单独挂载,不会占用根目录的系统盘空间。

主要先确认未挂载盘的目录占用空间情况。执行命令查看

#shell> du -ah -x --max-depth=1

显示占了17G左右,du命令显示只占了4.3G空间,额外的12G多空间不知道被什么占用了.

接下来检查是否有删除的文件空间未释放,通过lsof命令查看,查看结果需要过滤掉有单独挂载盘的目录。命令如下:

#shell> lsof|grep deleted|grep -v  -E 'xxx|yyy'

结果发现也无删除文件未释放空间,接下来检查是否inode已经用满导致,执行命令:

#shell> df -i

inode剩余充足,也不是inode导致。问题排查到这,没其他招了。

突然想起这台服务器给我的时候data1盘重新挂载过,会不会是这个原因导致的。为了验证这个想法,先把占用data1的进程都杀掉,然后把data1目录磁盘umount掉。

#shell> lsof|grep '/data1/'|awk '{print "kill -9 "$2}'|bash && umount data1 

此时再检查磁盘使用状况:

发现占用12G多空间的文件找到了,清理后重新mount磁盘到/data1目录,发现空间占用是预期的4.3G,空间问题得到解决。


总结:如果mount的目录下存在文件,那么目录被mount之后,之前的文件会被隐藏,不属于该挂载文件系统,du及其他命令也无法查到。生产环境中,mount目录之前一定要确认目录为空,否则可能导致一系列头疼的问题。

最后修改时间:2021-03-10 12:34:02
文章转载自DBA成长之道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论