Linux中inode的大小、作用讲述,linuxinode


linux中的inode

理解inode

inode是文件存储,文件存储在营盘山,最小的存储单位叫扇区。每个扇区的存储512字节。

操作系统读取硬盘的时候,不会一个一个扇区的读取,这样效率太低。而是一次性读取多个扇区,一次性读取一个块。也就是8个连续的扇区组成一个block。

文件存储在块中,但是我们还需要找一个存储元信息的区域叫做inode。中文译名“索引节点”。

每个文件都有对应的索引节点。

inode的内容

在inode的元信息中,保存了以下内容:

* 文件的字节数

* 文件拥有者的User ID

* 文件Group ID

* 文件的读写执行权限

* 文件的时间戳,ctime上次变动的时间,mtime文件内容上次变动的时间,atime,文件上次访问的时间。

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

* 我呢间数据block的位置。

我们可以使用以下命令尽心查看inode的信息

stat demo.txt

inode的大小

在inode也是会消耗磁盘的空间,所以格式化的时候,操作系统会将磁盘分为两个部分,一个是数据存放的位置就是block;另一个就是inode区,用来存放inode的信息。

每个inode一般是128字节或者是256字节。inode节点的总数是在格式化的时候给定你的。一般是每1kb或每2kb就设置一个inode。那么inode table就会占用磁盘的12.8%。

我们可以使用以下命令查看:

df -i

查看每个inode节点的大小用命令

dumpe2fs -h /dev/hda |grep "Inode size"

每个文件都需要有inode,因此有可能出现inode已经用完,但是硬盘没有存满。这个时候就没有办法创建新的文件。

inode号码

每个inode都有一个号码,操作系统用inode号码来识别不同的文件。

需要注意的是,在linux系统内部,使用的就是inode号码来识别文件,文件名只是便于识别的别称。

我们使用以下命令查看文件inode号

ls -i demo.txt

目录文件

linux系统中,目录也是一种文件,打开目录其实就是打开目录文件。

目录文件结构非常简单,只有两部分组成一个是inode号,一个是文件的名称。文件的元信息都存储在inode中。

硬链接

一般情况下,文件名合inode号码是一一对应的,每个inode号码都是对应着一个文件名称。但是在linux中允许多个文件指向同一个inode号码。这就意味着我们可以通过不同的文件名访问相同的内容。修改一个文件,影响所有的文件,但是删除文件只会影响自己本身的访问,不影响其他文件名的访问。这种情况叫做“硬链接(hard link)”。

创建硬链接命令:

ln 源文件 目标文件

任何一个目录的硬链接总数等于,2加上他子目录数(包含隐藏目录)。

软连接

文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的”软链接”(soft link)或者”符号链接(symbolic link)。

创建命令为:

ln -s 源文件 目标文件或目录

inode的特殊作用

由于inode号码和文件名称的分离。导致一些linux系统特有的现象。

1. 有时文件包含特殊字符无法正常删除,这个时候删除inode节点即可。

2. 移动或者重命名文件,不会影响inode号码。

3. 打开一个文件以后,系统使用inode号码识别文件,不用考虑文件名。

相关内容