全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

Linux 系统出现 No space left on device 问题排查方法

最近更新时间:2025-12-30 11:21:16

问题描述

在日常运维中,当尝试创建文件或目录时,系统提示 "No space left on device"。

排查步骤

步骤一:验证磁盘空间

首先查看磁盘空间使用状态,就会发现一个很矛盾的现象,使用 df -h 命令查看却发现磁盘空间充足,但是无法创建文件或者目录。

如发现这种现象,就要考虑到是不是inode写满导致的。

步骤二:检查错误信息

  1. 查看inode的使用情况。若磁盘空间充足,下一步检查 inode 使用情况。

  2. 检查所有分区的 inode 使用情况。

排查结果

根分区 /dev/vda1的 inode 已耗尽:1310720 个 inode 中使用了 1310720 个,故推断出此为导致 "No space left on device" 的根本原因。

步骤三:定位问题 - 查找 inode 占用源

  1. 使用/tmp目录定位inode占用源,如下图所示,若/tmp目录无法创建临时文件,可以使用 /dev/shm 作为临时目录。

  2. 查看 /dev/shm 的 inode 情况。

  3. 将临时目录设置为/dev/shm再次尝试之前的命令。

    结论:

    • /root 目录下直接的文件只有 1 个。

    • 有一个名为 test_inode的目录,大小为 40MB 左右。

    • 文件数量统计显示 /root 下有 120 多万个文件,这意味着这些文件几乎都在 test_inode 目录中。

  4. 统计 test_inode 目录下的文件数量。

  5. 删除整个 test_inode 目录及其中的 120 多万个测试文件,然后观察inode的使用情况。

  6. 尝试创建新文件并检查文件是否创建成功。最终,系统 inode 使用率从 100% 降至 9%,文件操作功能恢复正常。

排查总结

  • 错误本质:No space left on device不一定表示磁盘空间不足,更多情况下是 inode 耗尽。

  • 排查路径

    报错 → df -h(确认空间充足) → df -i(发现 inode 满) → 定位占用目录 → 清理 → 验证
  • 实用技巧

    • /tmp因 inode 满而不可用时,可设置 export TMPDIR=/dev/shm临时绕开限制。

    • 使用find+cut+sort+uniq管道命令可快速定位文件数量异常的目录。

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈