最近更新时间:2025-12-30 11:21:16
在日常运维中,当尝试创建文件或目录时,系统提示 "No space left on device"。
首先查看磁盘空间使用状态,就会发现一个很矛盾的现象,使用 df -h 命令查看却发现磁盘空间充足,但是无法创建文件或者目录。
如发现这种现象,就要考虑到是不是inode写满导致的。
排查结果:
根分区 /dev/vda1的 inode 已耗尽:1310720 个 inode 中使用了 1310720 个,故推断出此为导致 "No space left on device" 的根本原因。
使用/tmp目录定位inode占用源,如下图所示,若/tmp目录无法创建临时文件,可以使用 /dev/shm 作为临时目录。
查看 /dev/shm 的 inode 情况。
将临时目录设置为/dev/shm,再次尝试之前的命令。
结论:
/root 目录下直接的文件只有 1 个。
有一个名为 test_inode的目录,大小为 40MB 左右。
文件数量统计显示 /root 下有 120 多万个文件,这意味着这些文件几乎都在 test_inode 目录中。
统计 test_inode 目录下的文件数量。
删除整个 test_inode 目录及其中的 120 多万个测试文件,然后观察inode的使用情况。
尝试创建新文件并检查文件是否创建成功。最终,系统 inode 使用率从 100% 降至 9%,文件操作功能恢复正常。
错误本质:No space left on device不一定表示磁盘空间不足,更多情况下是 inode 耗尽。
排查路径:
报错 → df -h(确认空间充足) → df -i(发现 inode 满) → 定位占用目录 → 清理 → 验证实用技巧:
当 /tmp因 inode 满而不可用时,可设置 export TMPDIR=/dev/shm临时绕开限制。
使用find+cut+sort+uniq管道命令可快速定位文件数量异常的目录。
纯净模式
