首页 > 系统相关 >Linux 磁盘空间莫名被吃掉,该怎么查?

Linux 磁盘空间莫名被吃掉,该怎么查?

时间:2023-06-11 12:38:25浏览次数:47  
标签:占用 通过 莫名 find 磁盘空间 Linux du 目录

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

Linux 磁盘空间莫名被吃掉,该怎么查?_根目录

 

登录服务器,通过df -Hl查看

Linux 磁盘空间莫名被吃掉,该怎么查?_服务器_02

 

和告警信息一致,接着我们就是要找到导致磁盘空间满的目录或文件。

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

一种比较笨的方法是,在根目录下,通过du -hs命令,列出各目录所占空间大小

Linux 磁盘空间莫名被吃掉,该怎么查?_服务器_03

 

之后再用同样的方法继续到对应目录下去找

再相对高效一点的方法是通过du的-d参数,或–max-depth,设置查询的目录深度,目录深度增加,所查询的目录,展示出来会很多,这个时候可以通过grep进行过滤。

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

通过这样的方式,可以搜出以G或者T为单位的占用磁盘空间的大目录,并排序

或者可以通过find来查询

find / -type f -size +1G -exec du -h {} \;

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

通过这两种方法,我们可以快速找到占用磁盘空间的罪魁祸首。

你以为就这么简单?很多时候,你会发现,通过find或du查半天,发现所有加起来的占用空间,和df看到的磁盘空间占用,相差很大,就比如我上面的两张图。

通过df查看,磁盘使用37G,但是在根目录下通过du -hs 查看,总共加起来差不多10G,没有隐藏目录,那空间被谁吃了?

很明显,有空间被已删除文件占用,文件删除了,但是资源没释放。

之前介绍过一个很好用的命令:lsof,我们可以通过以下命令去查看

lsof +L1

Linux 磁盘空间莫名被吃掉,该怎么查?_服务器_04

 

从结果可以看出,有一个28G左右的大日志文件,删除了,但是空间没释放,这是很常见的一种情况。

对应的解决方法就是,重启tomcat应用,释放空间

磁盘空间莫名被吃?

还有一种经常有人问的问题,就是,通过df查看到的磁盘

Linux 磁盘空间莫名被吃掉,该怎么查?_占用空间_05

 

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

其实这是Linux文件系统的一种安全策略,它默认会为root用户保留5%的磁盘空间,留作紧急情况使用。这样能保证有些关键应用(比如数据库)在硬盘满的时候有点余地,不致于马上就 crash

我们可以通过tune2fs修改预留空间的比例

tune2fs -m 1 /dev/vda1

通过下图可以看到前后对比

Linux 磁盘空间莫名被吃掉,该怎么查?_根目录_06

 

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

标签:占用,通过,莫名,find,磁盘空间,Linux,du,目录
From: https://blog.51cto.com/u_12208527/6457396

相关文章

  • Linux服务器配置SSH免密码登录后,登录仍提示输入密码(一次真实的问题排查解决记录)
    我们知道两台Linux服务器机器之间如果使用ssh命令登录或scp/rsync命令传输文件每一次都需要输入用户名相对应的密码,如果要免密码,则需要对两台Linux服务器机器之间进行SSH互信。一.SSH介绍1.SSH互信原理虽然这是废话,也希望大家了解一下。SSH(SecureShell)是一种安全的传输协议,它可以......
  • 【Linux中断】中断下半部-软中断softirq的原理与使用
    软中断软中断是中断下半部的典型处理机制,是随着SMP的出现应运而生的,也是tasklet实现的基础,软中断的出现是为了满足中断上半部和下半部的区别,使得对时间不敏感的任务延后执行,而且可以在多个CPU上并行执行,使得总的系统效率可以更高。软中断有以下特性:产生后并不是马上可以执行,必......
  • linux防火墙相关命令
    查看防火墙状态:systemctlstatusfirewalld启动防火墙:systemctlstartfirewalld关闭防火墙:systemctlstopfirewalld禁用防火墙:systemctldisablefirewalld重启防火墙(修改配置后要重启防火墙):firewall-cmd--reload开放指定端口:firewall-cmd--permanent--a......
  • 在Windows上无docker直接将基于Solon的jar包通过IDEA部署到Linux的docker上
    为何会选择学习solon?springboot对于我开发小企业应用太重,启动太慢,下班太晚!为何都用windows,还想着不安装dockerdesktop洁癖,运行路径能短就短。步骤(以solon官网的helloword为例)1、下载helloworld代码传送阵:点击我2、通过IDEA打开代码,并运行它(我是下载基于maven版本的)。3......
  • Linux系统下配置Nginx服务器
    Nginx是一个高性能的开源HTTP和反向代理服务器,也可以作为电子邮件(SMTP/POP3/IMAP)代理服务器、负载均衡器和HTTP缓存服务器,使用在安装Nginx之前,需要安装一些其他软件依赖,如gcc、pcre、zlib和openssl。1、yum installgcc-ygcc是GNUCompilerCollection的简称,包含编译器和其他编......
  • Linux下六个有关file使用的实例
    FILE命令用来识别文件类型,也可用来辨别一些文件的编码格式。它是通过查看文件的头部信息来获取文件类型,而不是像Windows通过扩展名来确定文件类型的。本文介绍Linux下的六个有关file的实例。简介file的官方解释为:file - determine file type也就是说可以识别文件......
  • linux如何同时执行两个命令,如何同时运行两个或者多个终端命令
    [-d~/aa]||mkdir~/aa[-f~/sample.txt]&&echo"Fielexits"||touch~/sample.txt查看前一条命令的返回值echo$?echo$?查看命令执行成功与否的原理“进程生命周期”当一个进程执行完毕时,该进程会调用一个名为_exit的例程来通知内核它已经做好......
  • go程序在linux服务器上运行
    一、go语言环境安装参考菜鸟教程二、编译测试代码源码:packagemainimport"fmt"funcmain(){ fmt.Println("gorunning...")}编译在powershell终端输入命令编译后是运行不了的,在源码文件目录cmd,然后输入编译命令gobuild编译前先设置几个环境变量GOARCH:目......
  • Redis安装与启动(Linux)
    安装Redis依赖yuminstall-ygcctcl上传安装包并解压redis.io下载安装包,上传到/usr/local/src目录解压tar-zxvfredis-6.2.6.tat.gz解压成功 进入安装目录,运行编译命令cdredis-6.2-6/make&&makeinstall默认的安装路径在/usr/local/bin下默认启动(不友好......
  • linux 内存管理之内核分页机制(PAGING_INIT)初始化
     TEXT_OFFSET=0x00008000KERNEL_OFFSET=0x80000000PG_DIR_SIZE=0x4000kernel代码起始链接地址如下:PHYS_OFFSET=0x80000000r10指向proc_info_list结构体类型数据__create_page_tables:pgtblr4,r8@pagetableaddres......