快速定位磁盘空间不足的问题

背景

在Linux系统使用/运维过程中,经常会遇到磁盘空间不足(或者使用率过高)的问题。
长期定位下来,积累了一些经验,我定位的方法一般如下(通常可以较快速地定位到问题所在)。

1. 大文件的存在

比如 查看在常见的一些目录如(/home, /root, /var/log)等下面是否存在一些较大的异常文件,总结命令如下:

里面用的 ls -s 和 -S 选项,是需要注意的;同时 find 中的 -printf %k 选项 、 -exec 的用法,都是需要特别关注的。

2. 有的大文件已删除了但进程未退出

另一种情况是,通过第1点中的find命令找不出来,但就是磁盘空间被占用太多,可能是因为有的大文件已经删除了,但却有进程打开着文件没有退出,导致文件虽表面已删除但却仍然占用磁盘空间。可以通过lsof 命令来查看deleted状态的文件,命令如下:

3. 可能存在一些太多的小文件

这种可能是某些程序异常在目录中写了很多的文件,加起来总量比较大。这方面比较case-by-case来分析,比如可以统计目录占用的磁盘空间,找出过大且不符合预期的。因为我较少遇到,该问题也不太典型,这里不详述。

相关文档:

Linux上的稀疏文件(用ls和du命令看到的大小不一样)


https://stackoverflow.com/questions/22598205/how-sort-find-result-by-file-sizes

master

Stay hungry, stay foolish.

发表评论

邮箱地址不会被公开。 必填项已用*标注

*