记录一次linux磁盘空间满了的排查过程

记录一次linux磁盘空间满了的排查过程

在xshell使用tab命令时出现报错,查询后得知是磁盘空间满了的原因。在得知错误原因后就开始了排查。

  • 首先使用df -h命令查询磁盘的占用结果如下
[root@VM-24-15-centos docker]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        989M     0  989M   0% /dev
tmpfs          1000M   48K 1000M   1% /dev/shm 	
tmpfs          1000M  620K  999M   1% /run
tmpfs          1000M     0 1000M   0% /sys/fs/cgroup
/dev/vda1        40G   39G     0 100% /
overlay          40G   39G     0 100% /var/lib/docker/overlay2/1c672efe3e533193890bbf4b83786812b757507e790d0212dab1c9bb9f6ccf5d/merged
shm              64M     0   64M   0% /var/lib/docker/containers/78f756564c97152b14f781a2c2aabc985f3c42b39da2476a81423e091cefaf11/mounts/shm
overlay          40G   39G     0 100% /var/lib/docker/overlay2/c3031e9c5a07e7ce273ad8d353498c72056dc7965c262c7ac0d165f35bd49a58/merged
shm              64M     0   64M   0% /var/lib/docker/containers/7818367139cfef5cfa20ad7ddcdbbf8e85b5cdce5963c1df7ba847da3a519750/mounts/shm
tmpfs           200M     0  200M   0% /run/user/0

从以上结果我们可以看出主要是Docker的overlay文件系统占用了大量空间,Docker的overlay文件系统,用于存储Docker容器和镜像的层。

  • 接下来进入对应的目录使用du -h --max-depth=1查看占用空间较大的目录
du -h --max-depth=1
389M	./volumes
20K	./builder
4.0K	./swarm
20K	./plugins
3.0G	./overlay2
32G	./containers
4.0K	./runtimes
72K	./network
8.3M	./image
220K	./containerd
4.0K	./tmp
4.0K	./trust
35G	.

可以看出是containers目录占用了很大的空间,我们继续排查。

  • 进入到文件夹内部继续查看占用大小
du -h --max-depth=1
150M	./78f756564c97152b14f781a2c2aabc985f3c42b39da2476a81423e091cefaf11
32G	./
32G	.

发现是容器id为7818367139…占用了很大的内存,我们使用docker的命令查看以下容器信息,使用如下命令:

docker ps -qa | \
    xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | \
    grep "7818367139cfef5cfa20ad7ddcdbbf8e85b5cdce5963c1df7ba847da3a519750" 

这个命令是一个Linux管道命令,用于查找具有特定图层ID的Docker容器的信息。该命令可以分为四个部分,下面我们逐一解释:
1、docker ps -qa: 这个命令列出所有Docker容器的ID,包括正在运行和已停止的容器。-q 参数表示仅显示容器ID,-a 参数表示显示所有容器。
2、xargs docker inspect --format ‘{{.State.Pid}}, {{.Id}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}’: 这个命令使用 xargs 从上一个命令接收容器ID,并将它们作为参数传递给 docker inspect 命令。docker inspect 命令用于获取Docker对象(如容器、镜像等)的详细信息。–format 参数指定了一个Go模板,用于格式化输出结果。在这里,输出包含容器的进程ID(.State.Pid),容器ID(.Id),容器名称(.Name)和工作目录(.GraphDriver.Data.WorkDir)。
3、grep “7818367139cfef5cfa20ad7ddcdbbf8e85b5cdce5963c1df7ba847da3a519750”: 这个命令使用 grep 在上一个命令的输出中搜索特定的图层ID。如果找到匹配项,grep 将输出包含该ID的行。
综上所述,这个命令用于查找具有特定图层ID的Docker容器,并输出其进程ID、容器ID、名称和工作目录。
输入命令后结果如下:

18611, (进程ID)
7818367139cfef5cfa20ad7ddcdbbf8e85b5cdce5963c1df7ba847da3a519750,(容器ID)
 /kibana,(容器名称)
 /var/lib/docker/overlay2/c3031e9c5a07e7ce273ad8d353498c72056dc7965c262c7ac0d165f35bd49a58/work(工作目录)

可以发现是kibana导致的进入内部发现是一个log文件导致的,进入文件内部后发现可能是kinbana一直请求es链接,但是我并没有启动es服务导致一直在生成日志,清空日志,至此问题排查结束。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果你的Linux系统磁盘空间已经了,你需要采取一些措施来释放空间。首先,你可以使用一些命令来查找哪些文件或目录占用了大量的磁盘空间,例如du、df、ls等。然后,你可以删除一些不必要的文件或目录,或者将它们移动到其他磁盘或存储设备中。此外,你还可以清理一些临时文件或日志文件,或者使用一些工具来压缩或归档文件。总之,你需要根据具体情况采取相应的措施来释放磁盘空间,以确保系统正常运行。 ### 回答2: 当linux系统磁盘空间了,可能会出现诸如无法保存文件、程序运行受限等问题。针对这种情况,我们可以采取以下几种方法: 一、查找文件并删除多余文件 可以使用一些命令搜索整个磁盘区域中的大文件或文件夹。找到这些文件后,可以考虑将其删除或移动到其他磁盘中。 例如,使用以下命令可以搜索所有大于500MB的文件: find / -type f -size +500M -exec ls -lh {} \; 查找出来的文件可以通过rm命令直接删除: sudo rm -rf /path/to/large/file 二、清理系统缓存 在linux系统中,会有一些内存空间用于临时存储数据,这些数据可能包括缓存文件、日志文件等。这些缓存文件可以导致系统磁盘空间不足。可以使用以下命令清理系统缓存: sudo apt-get clean sudo apt-get autoclean sudo apt-get autoremove 三、查找并删除日志文件 在系统中,各种应用程序和系统都会生成日志文件以记录信息。这些日志文件可能会占用大量的磁盘空间。因此,可以使用以下命令查找并删除它们: 查找最近一周内的日志文件: sudo find /var/log -type f -mtime -7 删除指定日志文件: sudo rm /var/log/auth.log 四、使用du命令来查看磁盘空间 使用du命令可以帮助用户查看磁盘上的文件和文件夹所占用的空间,并找到占用大量磁盘空间的文件和文件夹。 例如,使用以下命令会列出所有文件夹和文件,按大小排序并显示其大小和路径: sudo du -hs /* | sort -rh 通过对以上方法进行组合使用,就可以有效地解决linux系统磁盘空间的问题。 ### 回答3: 当Linux系统磁盘空间了的时候,会出现一些问题,比如无法新建文件、无法写入数据、系统运行缓慢等等。解决这个问题的方法有很多种,以下是一些常用的方法: 1. 删除不必要的文件:可以使用命令“ls -alh”查看当前目录下的文件和文件夹的大小,找出占用空间较大的文件进行删除。 2. 清理系统缓存:使用命令“sudo apt-get clean”可以清理系统已安装软件的缓存文件。 3. 安装软件包管理工具:可以使用aptitude或者synaptic这样的软件包管理工具来卸载不需要的应用程序和文件。 4. 转移重要数据:当磁盘空间不足时,可以将一些重要的数据存储到外部硬盘或者云存储服务上,来释放磁盘空间。 5. 查看日志文件:系统日志文件也会占用一定的磁盘空间,使用命令“sudo du -h /var/log/”可以查看日志文件的大小。 6. 压缩文件:将一些较大的文件进行压缩可以占用更小的磁盘空间,使用命令“tar –cvzf filename.tar.gz 文件名”可以将文件进行压缩。 总之,要解决Linux系统磁盘空间了的问题,需要综合运用以上各种方法。在进行操作前,要确保不会误删重要文件。如果还是无法解决问题,可以考虑进行磁盘扩容或者更换更大的硬盘来解决。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值