一个同事今天找到我说,服务器的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
- 卸载分区
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
- xfs_info /xxxx |grep imaxpct检查当前占比
- xfs_growfs -m 数字 /app 根据你的需求添加
- df -i 检查是否已添加
注意: 需要有剩余空间才行。