inode 是一个重要概念

是理解Unix/Linux文件系统和硬盘储存的基础。

在说inode之前,先理解一下文件存储:

        文件存储是储存在硬盘上的,硬盘上最小的存储单位是扇区,多个扇区组成“块”。“块”是文件存储的最小单位。在操作系统中读取文件是按快进行的;“块”最常见的大小是4KB,即连续8 个扇区组成一个“块”。

        文件存储在“块”中,如果想找一个文件,就需要先找到这个文件的“元信息”(文件创建者,所有者,创建时间等)。而存储元信息的区域就是inode,中文名为“索引节点”。

inode包含的内容

        可以用 stat  文件名或目录名 来查看inode信息

        inode包含如下信息:

 File:文件名

Size:文件大小

Block:占用磁盘块数

Io Block:IO块大小

regular file:显示文件类型,这里为普通文件

Device:所在设备

Inode:inode号

Link:被链接次数

Access:访问权限

Uid:文件所有者及uid号

Gid:文件所在组及gid号

Access:文件最近一次访问时间

Modify:文件修改时间

Chang:文件改变时间

inode大小

inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域

个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息

每个inode节点的大小,一般是128字节或256字节

inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode

假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%

查看每个硬盘分区的inode总数和已经使用的数量,可以使用df -i命令

使用inode识别文件

操作系统查找文件时,实际上有如下操作:

1.系统找到这个文件对应的 inode 号。

2.通过 inode 号,获取 inode 信息。

3.根据 inode 信息,找到文件数据所在的“块”,读出数据。

获取文件的 inode 号: ls -i

实际问题

在一台Linux服务器上自己创建的的/like分区 创建文件时,系统提示磁盘空间不足,但是 df -h 查看磁盘使用情况,显示磁盘空间还剩余10G。

出现这种情况的原因是:创建文件时,会给其分配inode号,一旦inode号使用完了,无论磁盘是否有剩余,都无法再创建文件。

解决方法:

删除/like分区的一部分文件,从而释放一部分/like分区的 inode 号

Logo

更多推荐