解决方案:No space left on device

本文记录了一次解决服务器磁盘空间不足的过程,包括查找占用大量空间的文件、删除文件及解决文件空间未释放的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

寻找原因

从字面上理解,这个问题是说磁盘上没有多余的空间

那么到底是什么地方将空间?

  1. 先用df命令查看当前计算器磁盘空闲情况
df -a

我这边执行完后可以看到/dev/vda1被完全占用

  1. 从根目录下开始使用du命令查找出空间占用最大的文件
#查看当前目录下每个文件夹所占用的空间
du -sh *

通过一层一层的比较文件所占用空间,发现是jenkins的运行日志文件占用最大,本来我这边的的服务器磁盘仅100G,结果这个日志文件就有86G,我明白就是这个文件将磁盘占满了

解决方案

我首先想到的是直接删除该文件,于是我进入到jenkins的目录下,直接删除了所有日志。

rm -rf *.log

命令执行后,服务器的其他程序临时可以正常使用了。但是我运行df命令时发现/dev/vda1还是被完全占用,但是我想应用都正常在运行了,那也许是系统需要重启或过一段时间才能更新该状态,我也就没有再理会这个问题。

然而,这个问题并没有就此结束。第二天同事发现应用又不能访问了,我意识到昨天的那个问题还没有结束。我再次执行了dfdu命令,发现df的结果中表明/dev/vda1依然被全部占用,而du的结果中却没有再发现大文件了。我尝试着将解决这两种结果不一致的问题,兴许解决后就能解决”No space left o device”的问题了。

根据两个命令结果,我猜测应该是昨天直接通过rm命令删除的文件空间没有被释放,所以我查看了系统中所有被打开的文件,在其中寻找到了那个日志文件”jenkins.log”。

lsof | grep "jenkins.log"

列表中有很多进程都在打开该文件,虽然文件删除了,但是打开该文件的进程没有关闭,也就是说文件实际上还是存在,rm仅仅是删除了该文件的标记

于是乎我果断的终止了打开该文件的进程。

kill -9 22731

执行完毕后,再次运行dfdu,发现结果相差不大了。到此系统又可以正常运行了。

虽然这个问题算是临时解决了,但是jenkins的日志为什么可以达到86G?这个问题还没有得到解决,由于这一次删除的的充满,没有仔细看看日志的内容,导致该问题的原因不太能够查出。但是这个问题的根源肯定是没有被解决的,只能等到下一次该问题出现后,好好研究一下该日志,从根本上解决这个问题。

相关资料

### 解决方案概述 “No space left on device” 是一种常见的错误提示,通常表示操作系统或容器运行环境中磁盘空间已满。以下是针对该问题的具体解决方案--- #### 1. **检查磁盘空间** 在解决问题之前,需要先确认当前系统的磁盘使用情况。可以使用以下命令来查看磁盘空间和inode使用率。 ```bash df -h # 查看磁盘空间使用情况 df -i # 查看inode使用情况 du -sh * | sort -rh | head -n 10 # 找出占用最多空间的目录或文件 ``` 如果发现某个分区接近满载,则需进一步排查具体原因并清理不必要的数据[^1]。 --- #### 2. **Docker 容器环境下的处理方法** 当此错误发生在 Docker 环境下时,可能是由于镜像层、挂载卷或其他临时文件占用了过多存储资源所致。可以通过如下操作释放空间: - 清理未使用的 Docker 镜像、容器以及网络: ```bash docker system prune -a --volumes ``` - 删除特定的大体积容器或者不再需要的数据卷: ```bash docker rm $(docker ps -aq) # 移除所有停止状态中的容器实例 docker rmi $(docker images -q) # 强制移除全部本地镜像缓存副本 ``` 对于某些特殊场景比如 Kibana 插件安装失败的情况,可能还需要手动调整目标路径上的可用容量后再重试构建过程[^3]。 --- #### 3. **常规Linux服务器上的应对措施** 如果是普通 Linux 主机而非虚拟化平台引发此类状况,则应重点审查以下几个方面是否存在冗余记录项占据大量位置: - 日志文件累积:如 `/var/log` 下面可能会存在过期无用的日志条目; 措施建议:定期轮转压缩旧版日志或将不重要的部分清除掉。 ```bash find /var/log -type f -name "*.log*" -exec truncate {} --size=0 \; ``` - 暂存区残留物:例如 `/tmp`, `/var/tmp`; 处置方式同上——定位大尺寸对象之后实施删除动作即可恢复一定额度的空间配额[^2]. 另外需要注意的是,在 Oracle 数据库管理过程中也可能遭遇类似的内存分配困境(ORA-27102),这往往意味着交换区域设置不当或者是物理硬盘本身已经饱和等问题的存在[^4]. 此类情形除了扩充硬件配置之外别无他法可循. --- ### 总结 通过上述手段基本上能够有效缓解"No Space Left On Device"所带来的困扰。不过为了防止未来再次发生类似事件, 建议建立自动化监控机制持续跟踪各项指标变化趋势,并适时执行维护作业保持良好运作状态。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值