Linux系统中一切皆是文件,系统内部不使用文件名,而使用inode号码来识别文件,一个文件必须占有一个inode,由于每个文件都必须有一个inode, 因此有可能发生inode已经用光,但是硬盘还没有满的情况,这样会导致无法在硬盘上创建新文件。
首先准备实验环境,新建一个硬盘,用fdisk工具创建一个内存约5M的分区/dev/sdb1,再格式化,并将其挂载到/data目录下,使用带“-i”选项的df命令确认该分区中节点的使用情况。
Linux inode耗尽故障处理
Linux inode耗尽故障处理Linux inode耗尽故障处理
Linux inode耗尽故障处理

接着编写一个测试程序,运行该程序可以耗尽/dev/sdb1分区中所有可用的i节点。
Linux inode耗尽故障处理
Linux inode耗尽故障处理
Linux inode耗尽故障处理
Linux inode耗尽故障处理

然后当i节点耗尽后,在/dev/sdb1分区中创建新的文件时,出现“设备上没有空间”的错误提示。通过df命令可以查看到/dev/sdb1分区中实际上还有可用的剩余空间,但是由于节点已经用完,所以不能创建新文件。
Linux inode耗尽故障处理
最后修复i节点耗尽故障,删除占用大量i节点的小文件。
Linux inode耗尽故障处理