当麒麟os提示“磁盘空间未满但无法创建文件”且df -i显示inode使用率≥95%时,说明inode资源已实质性枯竭,需立即执行df -i确认、lsof +l1定位被占用的deleted文件、find结合lsof和ps追溯父进程、kill或pkill安全终止目标进程,并用df -i验证available数值是否显著回升。

当麒麟OS系统提示“磁盘空间未满但无法创建文件”或df -i显示Inode使用率接近100%时,说明大量小文件正在耗尽索引节点资源,必须立即定位并终止源头进程,否则新日志、临时文件、甚至系统更新都将失败。
先确认Inode是否真的耗尽
打开终端(Ctrl + Alt + T),执行:df -i。重点查看Mounted on为/或/home的行,若Use%列数值≥95%,且Available列接近0,则Inode资源已实质性枯竭。
这一步不可跳过——某些容器或快照机制会伪造高Inode占用假象,直接杀进程可能中断关键服务。
用lsof定位正在疯狂创建临时文件的进程
执行命令:sudo lsof +L1。该命令专查已删除但仍被进程持有的文件(即“deleted”状态的句柄),这类文件持续占用Inode却不在目录树中可见,是Inode泄漏最常见原因。
若输出为空,说明问题不在此类场景;若出现大量java、node、chrome等进程名后跟(deleted)标记,它们就是罪魁祸首。
【注意:lsof需root权限才可扫描全部进程,普通用户执行将漏掉关键系统服务】
用find+ls结合进程树精准溯源
某些进程本身不直接创建文件,而是通过子进程或脚本批量生成小文件(如日志轮转脚本、监控采集器)。此时需分步排查:
第一步:找出当前创建时间最新、数量最多的临时目录
执行:sudo find /tmp /var/tmp /home -type d -mmin -5 2>/dev/null | xargs -r ls -1A 2>/dev/null | wc -l | sort -nr | head -5。该命令筛选5分钟内修改过的临时目录,并统计其下隐藏文件数量。
第二步:锁定父进程PID
假设上步发现/tmp/systemd-private-xxx下有2347个.tmp文件,执行:sudo lsof +D /tmp/systemd-private-xxx 2>/dev/null | head -n 1 | awk '{print $2}',提取首个打开该目录的PID。
第三步:向上追溯完整进程链
执行:ps -o pid,ppid,comm -p PID号 --forest(将PID号替换为上步结果),观察进程树结构,找到真正启动该任务的主程序名(如rsyslogd或prometheus)。
安全终止目标进程
方法一:对非关键用户进程,优先发送SIGTERM
执行:kill PID号。这允许进程自行清理临时文件句柄、关闭日志流、释放Inode引用计数。
方法二:对已僵死或拒绝退出的进程,执行强制终结
先验证进程仍存在:ps -p PID号 → 若有输出,再执行:kill -9 PID号。【此操作不可逆:所有未刷新到磁盘的Inode引用将立即释放,但对应文件内容永久丢失】
方法三:批量清理同类子进程(如多个Python脚本同时写日志)
执行:pkill -f "python.*log_writer"。注意-f参数匹配完整命令行,避免误杀名称相似的守护进程。
验证Inode释放效果
终止进程后,立即执行:df -i。若Available数值显著上升(例如从12增加到8432),说明Inode已成功回收。
若数值无变化,说明该进程并非唯一源头,或存在其他未被kill的子进程仍在写入——此时需回到第二步重新扫描。











