Skip to content

linux inode 100%问题

一个同事今天找到我说,服务器的inode被占满了,开始还不太理解。查询了下资料。

inode 和 block 概述

文件是存储在硬盘上的,硬盘的最小存储单位叫做扇区sector,每个扇区存储512字节。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个块block。这种由多个扇区组成的块,是文件存取的最小单位。块的大小,最常见的是4KB,即连续八个sector组成一个block。

文件数据存储在块中,那么还必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种存储文件元信息的区域就叫做inode,中文译名为索引节点,也叫i节点。因此,一个文件必须占用一个inode,但至少占用一个block。

inode 内容

inode包含很多的文件元信息,但不包含文件名,例如:字节数、属主UserID、属组GroupID、读写执行权限、时间戳等。

而文件名存放在目录当中,但Linux系统内部不使用文件名,而是使用inode号码识别文件。对于系统来说文件名只是inode号码便于识别的别称。

 

遇到的问题

通过 df -i 查询看到,目前inode 占用已经为:100%。



如何解决

首先通过df -hT 获取到对应分区的系统格式。


ext3/ext4

  1. 卸载分区

sudo umount  /dev/hdaxxx
2. 调整inode参数

注意!!!!!!!!!!该操作将删除整个分区数据,在进行此操作之前,请再次确认你已经对该分区的信息做好了备份。
请再次确认你的数据已经全部备份完毕。

mkfs.ext3 –N 2939495  /dev/hdaxxx

mkfs.ext4 –N 2939495  /dev/hdaxxx

3. 更新分区

tune2fs -j /dev/hdaxxx

4. 更新系统uuid

sudo udevtrigger

5. 获取新的uuid,记录它

sudo vol_id -u /dev/sda9

6. 修改fstab,将新的uuid替换进去

sudo vim /etc/fstab

修改后执行

sudo umount -a
sudo mount -a

最后 df -i 检查一下

xfs

  1. xfs_info /xxxx |grep imaxpct检查当前占比
  2. xfs_growfs -m  数字 /app 根据你的需求添加
  3. df -i 检查是否已添加

注意: 需要有剩余空间才行。

发表评论

电子邮件地址不会被公开。 必填项已用*标注