Linux 磁盘空间异常爆满,该怎么查?

- 编辑:admin - 点击数:393

Linux 磁盘空间异常爆满,该怎么查?

在服务器运维历程中,咱们时常会遇到这样的状况,收到服务器磁盘空间告警:

登录服务器,经过df-Hl检查

和告警信息共同,接着咱们便是要找到导致磁盘空间满的目录或文件。

怎么找到占用空间大的目录或文件?

一种比较笨的办法是,在根目录下,经过du-hs指令,列出各目录所占空间巨细

之后再用相同的办法持续到对应目录下去找

再相对高效一点的办法是经过du的-d参数,或--max-depth,设置查询的目录深度,目录深度添加,所查询的目录,展现出来会许多,这个时期能够经过grep进行过滤。

du-h-d2|grep[GT]|sort-nrdu-h--max-depth=2|grep[GT]|sort-nr

经过这样的办法,能够搜出以G或许T为单位的占用磁盘空间的大目录,并排序

或许能够经过find来查询

find/-typef-size+1G-execdu-h{}\;

从功率上来说,find要比du要更快速、灵敏。

经过这两种办法,咱们能够快速找到占用磁盘空间的元凶巨恶。

你认为就这么容易?许多时期,你会发现,经过find或du查半响,发现一切加起来的占用空间,和df看到的磁盘空间占用,相差很大,就比方我上面的两张图。

经过df检查,磁盘运用37G,可是在根目录下经过du-hs检查,一共加起来差不多10G,没有躲藏目录,那空间被谁吃了?

很明显,有空间被已删去文件占用,文件删去了,可是资源没开释。

之前介绍过一个很好用的指令:lsof,咱们能够经过以下指令去检查

lsof+L1

Linux 磁盘空间异常爆满,该怎么查?

从成果能够看出,有一个28G左右的大日志文件,删去了,可是空间没开释,这是很常见的一种状况。

对应的解决办法便是,重启tomcat运用,开释空间

磁盘空间莫名被吃?

还有一种常常有人问的问题,便是,经过df检查到的磁盘

会发现,Used和Avail加起来不行Size,莫名被吃掉一部分

其实这是Linux文件体系的一种安全策略,它默许会为root用户保存5%的磁盘空间,留作紧急状况运用。这样能确保有些要害运用(比方数据库)在硬盘满的时期有点地步,不致于立刻就crash

咱们能够经过tune2fs修正预留空间的份额

tune2fs-m1/dev/vda1

经过下图能够看到前后比照

这样被吃掉的空间,就开释出来了!


原文链接: