故障描述:由于每个文件都必须要有一个inode ,因此有可能发生inode 已经用光,但是硬盘还是未存满的情况。这时,就无法在硬盘上创建新文件。
造成故障原因:小字节缓存文件过多,虽然占用的 block 不多,但是占用了大量的 inode,导致无法添加新数据。
模拟文件系统中文件数量耗尽故障
模拟 i 节点耗尽故障:
(1)新建一个大小为 1G 的磁盘sdb ,格式化为.xfs类型,将其挂载到/data 目录下,并使用带 df -i 命令确认该文件系统中 i 节点的使用情况。
(2)创建一个脚本程序,不停地复制文本,耗尽 /dev/sdb1 分区中所有可用的 i 节点(523773)
(3)当i 节点耗尽之后,在该文件系统中再创建新文件时,就会出现“设备上没有空间”的错误假象,但是通过df 命令还可以看到该分区上实际上还有可利用的剩余空间,但是因为节点已经用完,所以无法创建新文件。
(4)修复 i 节点耗尽故障
我们只需要找到该分区上占用大量 i 节点的细小文件,并对其进行转移或者删除即可,如果是许多用户公用的文件系统,建议为相关用户设置磁盘限额(包括文件数量、磁盘空间两方面)。