因磁盘inode被用光导致"No space left on device"

本文记录了一次因inode资源耗尽导致无法在/data目录下创建文件的问题,并提供了通过删除无用文件来释放inode的有效解决方案。
/data目录下无法创建文件
> touch a
touch: cannot touch `a': No space left on device

 

磁盘只使用了61%
> df -h

Filesystem Size Used Avail Use% Mounted on
...
/dev/sda5 817G 466G 310G 61% /data
...
inode被用光
> df -i

Filesystem Inodes IUsed IFree IUse% Mounted on
...
/dev/sda5 54378496 54378496 0 100% /data
...

  

解决办法:删除无用文件,释放inode

总结:看来对于大量小文件的应用来说,inde的可用数量也是要监控的。

 

--end

 

 

 

### 磁盘满 (No space left on device) 的处理方法及删除大文件的命令 当系统提示 `No space left on device` 时,通常是因为磁盘空间不足或 inode 资源耗尽。以下是详细的处理思路和解决方案: #### 1. 检查磁盘空间和 inode 使用情况 使用以下命令检查磁盘空间和 inode 使用情况: ```bash df -h ``` 此命令显示各分区的磁盘使用情况,帮助定位哪个分区已满[^2]。 同时,检查 inode 使用情况: ```bash df -i ``` 如果 inode 已耗尽,即使物理存储空间充足,也无法创建新文件[^2]。 #### 2. 查找并删除大文件 使用 `find` 命令查找大文件。例如,查找大于 1GB 的文件: ```bash find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null ``` 上述命令从根目录开始搜索,并忽略权限不足导致的错误输出[^4]。 生成删除命令并保存到脚本文件中: ```bash find / -type f -size +1G -print0 | while IFS= read -r -d $'\0' file; do echo "rm -f '$file'"; done > delete_large_files.sh ``` 执行前检查脚本内容无误后运行: ```bash chmod +x delete_large_files.sh ./delete_large_files.sh ``` #### 3. 清理临时文件和日志 清理 `/tmp` 和其他临时目录中的文件: ```bash rm -rf /tmp/* ``` 清理日志文件,特别是 `/var/log` 目录下的大文件: ```bash find /var/log -type f -exec truncate -s 0 {} \; ``` 上述命令将日志文件清空而不删除文件本身[^4]。 #### 4. Docker 环境中的磁盘清理 如果问题出现在 Docker 环境中,可以使用以下命令清理未使用的镜像、容器和卷: ```bash docker system prune -a ``` 若磁盘仍满,检查 Docker 根路径是否位于空间不足的分区。通过 `docker info` 查看 Docker 根路径,并考虑将根路径迁移到更大的磁盘上[^3]。 #### 5. 扩展存储空间 如果清理后仍然不足,可以通过扩展存储设备解决。例如,挂载额外的硬盘或将现有分区调整为更大容量[^2]。 --- ### 示例代码 以下是一个完整的脚本示例,用于查找并删除大文件: ```bash #!/bin/bash # 查找大于 1GB 的文件 find / -type f -size +1G -print0 | while IFS= read -r -d $'\0' file; do echo "Deleting large file: $file" rm -f "$file" done ``` --- ### 注意事项 在执行删除操作前,请确保文件不再需要,避免误删重要数据。对于核心转储文件(通常位于 `/core` 或 `/var/crash`),确认是否需要保留以供调试[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值