No space left on device但df显示磁盘未满

问题:

在/home目录下创建文件,大约创建了4600000个后就一直失败,显示errno=28,No space left on device.

解决过程:

    1. [root@redhat172 home]# df
      Filesystem           1K-blocks      Used Available Use% Mounted on
      /dev/mapper/vg_redhat172-lv_root
                            51606140  40151524   8833176  82% /
      tmpfs                  6092252       152   6092100   1% /dev/shm
      /dev/sdb1               495844     37906    432338   9% /boot
      /dev/mapper/vg_redhat172-lv_home
                            74190024  27902916  42518380  40% /home
    2. [root@redhat172 home]# df -i
      Filesystem            Inodes   IUsed   IFree IUse% Mounted on
      /dev/mapper/vg_redhat172-lv_root
                           3276800  347109 2929691   11% /
      tmpfs                1523063      19 1523044    1% /dev/shm
      /dev/sdb1             128016      41  127975    1% /boot
      /dev/mapper/vg_redhat172-lv_home
                           4718592 4718592       0  100% /home
    3. 结果发现是home目录下的inode号用完了。因此,可以删除大量小文件以腾出inode来解决该办法

 

当遇到 `No space left on device` 错误时,通常意味着系统资源(如磁盘空间inode 或共享内存)已耗尽。以下是几种常见的解决方案: ### 1. 检查并清理磁盘空间 确保磁盘没有不必要的文件占用空间。可以使用以下命令检查磁盘使用情况: ```bash df -h ``` 如果发现某个分区接近载,可以删除不需要的文件或日志。例如,清理 `/tmp` 目录下的临时文件: ```bash sudo rm -rf /tmp/* ``` ### 2. 检查 inode 使用情况 有时即使磁盘空间充足,也可能因为 inode 被占而导致问题。可以通过以下命令检查 inode 使用情况: ```bash df -i ``` 如果 inode 几乎被占,需要找出并删除大量小文件的目录。例如,查找 `/var/log` 下的小文件: ```bash find /var/log -type f -size -1k | xargs rm -f ``` ### 3. 清理 Docker 容器和镜像 对于 Docker 用户,可能是因为容器或镜像占用了过多空间。可以使用以下命令清理未使用的 Docker 对象: ```bash docker system prune -a ``` 此命令会删除所有未使用的容器、网络、卷和镜像。 ### 4. 处理 Apache 的 semaphore-arrays 如果问题是由于 Apache 没有正确关闭导致的 semaphore-arrays 占用,可以手动清除这些资源。首先列出所有与 Apache 相关的 semaphore-arrays: ```bash ipcs -s | grep apache ``` 然后根据输出中的 ID 删除这些 semaphore-arrays: ```bash ipcrm -s <semaphore_id> ``` ### 5. 调整文件描述符限制 有时候,文件描述符的限制也可能导致类似的问题。可以在 `/etc/security/limits.conf` 中调整文件描述符限制: ```conf * soft nofile 65536 * hard nofile 65536 ``` 之后重启服务或系统以使更改生效。 ### 6. 检查和扩展文件系统 如果是 LVM 或其他可扩展的文件系统,可以考虑扩展文件系统的大小。例如,使用 `lvextend` 和 `resize2fs` 扩展逻辑卷: ```bash lvextend -L+10G /dev/mapper/root resize2fs /dev/mapper/root ``` ### 7. 检查 OCFS2 文件系统 对于使用 OCFS2 文件系统的环境,确保文件系统配置正确且有足够的空间。可以使用 `ocfs2-tools` 进行检查和修复: ```bash fsck.ocfs2 /dev/sdX ``` 通过以上方法,通常可以解决大多数 `No space left on device` 的问题。如果问题仍然存在,建议进一步检查系统日志以获取更多线索。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值