欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Linux中inode的大小、作用讲述

程序员文章站 2022-03-31 10:29:57
linux中的inode 理解inode inode是文件存储,文件存储在营盘山,最小的存储单位叫扇区。每个扇区的存储512字节。 操作系统读取硬盘的时候,不会一个一个扇区的读取,这样效...

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号码识别文件,不用考虑文件名。