Linux中Inode概念 Linux中的Inode

要理解Inode,就要从文件存储说起。文件存储在硬盘上,那么硬盘中最小的存储单位叫做"扇区",这里简单跳出一下,跟大家说简单解释一下什么叫扇区,如下图:

下面是单个硬盘盘片的示意图,一个硬盘就是由若干个同样的盘片构成的(具体详细的其他概念,我们择日再说),这里就关注扇区。

在单个盘片上,从里到位有很多个同心圆,每个同心圆叫做磁道(Track)

从圆心向最外侧按一定度数划分很多纵切线,这个每个磁道被切割成若干的,每个被切割的磁道就叫做扇区,扇区是硬盘存储数据的最小单位。

一般来说,每个扇区能存储512字节,也就是相当于0.5k(512/1024=0.5)。

虽然扇区(sector)是硬盘存储数据的最小单位,但是操作系统在读取硬盘的时候,却不会一个扇区一个扇区的去读取,这样效率太慢了,操作系统是按"块"为单位进行读写的。块,是由多个扇区组成的,是操作系统文件存取的最小单位。不同的操作系统支持不同的块大小,最常见的块大小是4KB,即由连续的8个扇区(sector)组成一个块(block)。

文件信息都存储在"块"中,那么很显然,我们还必须要找到一个地方去存储文件的元信息,所谓文件的元信息,就是除了文件内容之外的和该文件有关的一些属性,比如文件的创建者,文件的大小等等。这些元信息并没有很文件内容信息混合在一起存储,这种元信息存储的区域就叫做inode。中文译名可以叫做"索引节点"。

那么Inode包含文件的元信息,具体来说大概有一下几种内容:

*文件的字节数

*文件拥有者的User ID

*文件的Group ID

*文件的读,写,执行权限

*文件的时间戳(大概有三个相关的时间戳,ctime指上一次变动的时间,mtime指文件内容上一次变动的时间,atime指上一次文件打开的时间)

*链接数, 即有多少个文件名指向这个inode

*文件数据block的位置