目录
问题一:block满了
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使用情况
问题三:文件已删除但空间不释放
步骤一:检查/tmp下最大的三个数据文件
[root@localhost~ ] # du -s /tmp/*|sort -nr|head -369206016 /tmp/access_log36 /tmp/hsperfdata_root36 /tmp/hsperfdata_mapred
步骤二:确认这个文件可以删除,执行删除操作
[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.避免过度使用内存:过度使用内存可能导致系统将数据写入磁盘,从而占用磁盘空间。可以通过优化程序或增加内存来避免这种情况。