linux中运行mkdir等命令报 “no space left on device”(磁盘空间不足)问题排查及解决

文章讲述了在Linux生产环境中遇到磁盘空间不足的问题,包括block满了、inode满了和文件已删除但不释放空间等情况的排查步骤,以及如何通过清理临时文件、删除大文件、检查日志和优化回收站等方法进行解决,并提供预防此类问题的建议。

目录

1.1 问题描述

1.2 问题排查及解决

      ​​​问题一:block满了

步骤一:查看磁盘使用情况,根目录空间是否占用100%

步骤二:如果爆满,就查找有没有大文件占用空间

步骤三:解决方案

步骤四:再次查看磁盘空间

                问题二:inode满了

步骤一:查看inode节点使用情况,是否已用100%

步骤二: 如果inode 占用过多 

步骤三:删除垃圾文件

步骤四:再次查看inode使用情况

                 问题三:文件已删除但空间不释放

步骤一:检查/tmp下最大的三个数据文件

步骤二:确认这个文件可以删除,执行删除操作

步骤三:再次查看磁盘空间

步骤四:查看已经被删除但仍然被应用程序占用的文件列表

步骤五:清空日志文件

步骤六:再次查看被删除的文件

1.3 如何避免此类问题


1.1 问题描述

linux生产环境中运行 命令mkdir /tmp/pty3468083857 报“no space left on device”(磁盘空间不足)

kubectl-1.24 --kubeconfig=config-au-ali -n au exec -it xxxxx-5b6c56cccf-c49lv -- bash

error: Internal error occurred: error executing command in container: failed to exec in container: failed to start exec "4bbd7015e38b74876c4a9a324631acd5ad0585c2ddf45f1b662a7dedec305d9c": failed to create runc console socket: mkdir /tmp/pty3468083857: no space left on device: unknown


1.2 问题排查及解决

问题一:block满了


步骤一:查看磁盘使用情况,根目录空间是否占用100%


步骤二:如果爆满,就查找有没有大文件占用空间

ls -lhS     # -h 可读方式显示文件大小  -S 以文件大小排序

步骤三:解决方案

解决方案1——清理废弃文件

如果发现有不用的文件,可以使用rm命令进行删除

rm  -f  /usr/local/bin/1g

解决方案2——扩展磁盘空间

适用于可以申请到新的磁盘,或者有磁盘没被使用的情况

不要随意格式化一个已经挂载并且使用了的磁盘,最好新建一个磁盘,尤其是 / 目录

Linux磁盘扩容(超详细)-CSDN博客  ---附赠详细教程

步骤四:再次查看磁盘空间

不再爆满,问题解决

问题二:inode满了

步骤一:查看inode节点使用情况,是否已用100%

 
步骤二: 如果inode 占用过多 

1.查看并删除临时文件

ls -lt /tmp | wc -l
find /tmp -type f -exec rm {} \;

2.删除0字节的文件,这些文件也会占用inode

find /home -type f -size 0 -exec rm {} \;

3.查找大文件,并进行适当删除

第一步:查看某个目录下的文件数量

[root@node2 ~]# for i in /var/*; do echo $i; find $i |wc -l; done 

通过查看,只有 /var/spool/ 目录下文件数量最多。

第二步:按照第一步的思路,继续查看 /var/spool/ 目录下的文件数量

[root@node2 ~]# for i in /var/spool/*; do echo $i; find $i |wc -l; done
 
步骤三:删除垃圾文件

  rm  -rf  *

步骤四:再次查看inode使用情况

问题三:文件已删除但空间不释放

由于 Linux 没有回收站功能,我们的线上服务器所有要删除的文件都会首先移动到系统/tmp 目录下,然后定期清除 /tmp 目录下的数据。这个策略本身没有问题,但如果这台服务器的系统分区中并没有单独划分/tmp 分区,这样 /tmp下的数据其实是占用了根分区的空间。 既然找到了问题, 那么删除 /tmp 目录下一些大数据即可。
步骤一:检查/tmp下最大的三个数据文件
[root@localhost~ ] # du -s /tmp/*|sort -nr|head -3
69206016 /tmp/access_log
36 /tmp/hsperfdata_root
36 /tmp/hsperfdata_mapred
通过命令输出发现在 /tmp 目录下有个 66G 大小的文件 access_log ,这个文件应该是 apache 产生的访问日志文件,从日志大小来看,应该是很久没有清理apache 日志文件了,基本判定是这个文件导致的根空间爆满。
步骤二:确认这个文件可以删除,执行删除操作
[root@localhost ~] # rm /tmp/access_log
步骤三:再次查看磁盘空间
步骤四:查看已经被删除但仍然被应用程序占用的文件列表
lsof | grep  delete
步骤五:清空日志文件
echo " " >/tmp/acess.log
步骤六:再次查看被删除的文件
成功解决!!!

1.3 如何避免此类问题

1.检查硬盘空间:确保你的硬盘有足够的可用空间。可以使用命令来查看硬盘使用情况,如果可用空间不足,可以删除不必要的文件或者移动到其他存储设备。df -h

2.清理临时文件:临时文件可能会占用大量的磁盘空间,可以使用命令来清理临时文件夹中的内容。rm -rf /tmp/*

3.定期清理日志文件:日志文件也可能会占用大量的磁盘空间,可以使用命令来清理日志文件。rm -rf /var/log/*

4.压缩或归档文件:对于一些不常用的文件,可以将其压缩或归档,以节省磁盘空间。可以使用命令或者来进行压缩和归档操作。tar zip

5.定期清理回收站:回收站中的文件也会占用磁盘空间,可以定期清空回收站来释放空间。

6.避免过度使用内存:过度使用内存可能导致系统将数据写入磁盘,从而占用磁盘空间。可以通过优化程序或增加内存来避免这种情况。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值