原标题:Linux 如何查找大文件
点击上方 “公众号”可以订阅哦!
近期,频繁发现模块出现大量写日志的问题,且没有日志压缩策略和保留历史文件的策略,导致日志文件大量膨胀,另外还发现一些组件大量写文件(非日志文件),单个文件不大,但是写的文件数量非常大,也导致改组件占用大量的硬盘空间,存在可能耗尽硬盘的隐患。现提供一种手工查询整个系统大文件/目录的方法,在问题没有彻底解决之前,先手工查询出隐患文件,手工清除,防止硬盘空间耗尽,导致系统挂死。
1
ssh到待检查的节点上执行命令:
df –h
命令表示:查询当前节点整体硬盘占用分布的情况
/dev/mapper/vg_sys-lv_root 是系统的根分区,重点需要关注这个大小和使用情况。
如果占用较多(根据各个现场实际情况分析,比如占用超过60%,或者比如实际使用量快100G了),需要分析硬盘被占用的原因。
2
命令表示:是查找根目录下大于3000M的文件
命令本身还想达到过滤这两个目录的效果,但是根据执行的结果看,似乎并没有过滤掉,不过并不影响我们的分析。
/var/lib/glance/images/ /var/lib/nova/instances/
这个命令可以帮助我们快速把单个的、巨大的文件找出来。
3
下面介绍如何查询单个文件不大,但是文件数量巨大,占用硬盘空间较多的目录:
先切换到根目录
cd /
然后输入
du -h --max-depth=1 |sort -hr
命令表示计算根目录下所有目录的空间占用,并按照占用从大到小的顺序排列。
4
如上图,/var目录占用非常大。
cd /var
切换到/var目录下,继续使用 du -h --max-depth=1 |sort -hr
5
如上图,lib目录占用非常大。
cd lib
切换到lib目录下,继续使用 du -h --max-depth=1 |sort –hr
6
如上图,docker docker-volume glance 目录占用都非常大。
如果熟悉TECS,可以大致了解哪些目录可能占用比较大,忽略一些目录,如果不清楚,就一个一个目录查询一下,大致知道各个目录下面是什么文件后,下次再查询就比较清楚了。
cd glance
切换到glance目录下,继续使用 du -h --max-depth=1 |sort –hr
7
查询到最内层目录后,出现 31G . 这样的显示后,就表明大文件就在该目录下。
可以使用
ll –lh
就会发现 tempfile 占用了30G,这个就是占用比较大的文件
另外还有就是该目录下可能存在大量的文件,单个文件本身不大,但是数量非常多,导致整个目录下文件占用空间非常大,如果不清楚文件具体的用途,可以查询大大文件后,找开发确认是否是垃圾文件,需要删除。
8
重复到每一个目录下执行 du -h --max-depth=1 |sort –hr
直到把所有发现的比较大的目录全部查询一遍,找出所有占用空间比较大的目录或者文件。
9
对于需要删除的文件,执行命令:(注意使用rm 命令一定要慎重,确认好要删除的东西后再执行)
rm -rf xxx
如下,删除tempfile 文件。
责任编辑: