Skip to content

Linux 问题集 #20

@sophister

Description

@sophister

linux 磁盘空间满了

今天QA发现测试环境某台机器磁盘空间满了,让给清理下文件,于是网上查了之后,先看磁盘占用:

root@test# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/vda3            292G  5.5G  271G   100% /
tmpfs                3.9G     0  3.9G   0% /dev/shm
/dev/vda1            190M   63M  118M  35% /boot

看到那个已使用 100%,再去根目录下,看下加哪个目录比较大:

du -sh /* | sort -nr

发现最大的目录,也就几个G,很奇怪为什么上面会显示已使用 100% ……
发现 这篇文章,里面也是类似的问题,

结论是“在Linux中,当我们使用rm在linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄,那么linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%,整个系统无法正常运行。这种情况下,通过df和du命令查找的磁盘空间,两者是无法匹配的,可能df显示磁盘100%,而du查找目录的磁盘容量占用却很小。

处理方法如下:

找出文件使用者,kill掉:

lsof -n | grep deleted
找到使用对应文件的进程,kill掉,然后再次df -h,发现已经没有100%的情况了

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions