Linux下ext2文件系统inode的概念以及软硬链接

本文详细介绍了Linux下ext2文件系统中inode的概念,包括inode的结构和作用,以及文件的创建、删除和查找过程。此外,还深入探讨了软硬链接的区别,硬链接通过多个文件名指向同一inode,而软链接则创建新文件并存储目标文件的路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

inode

操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。
文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点”。

文件=属性+内容,属性的集合就是inode
在inode里面,有一个inode id,是标识一个文件的标志,一般一个文件只有一个inode,inode id也是唯一的,看到inode id命令:ls -i
在这里插入图片描述

文件系统会根据不同的分区划分为数个的block group(块组),每个block group都有相同的结构。
1.data blocks(数据块):有很多小数据块,用来存放数据
2.inode Table(inode表):存放很多个inode的集合。inode table 和data blocks是有对应关系的
3.inode Bitmap(inode位图):是比特位存储,每一个比特位表示inode是否被占用,占用为1,不占用为0,inode位图和inode表是对应着的。
4.Block Bitmap(Block位图):同inode Bitmap,每一个比特位表示Data Blocks中数据块的数据块是否被占用,占用为1,不占用为0,Block位图和Data Blocks是对应着的。
5.Group Descriptor Table(块组描述符表):对每一个块组的属性的集合
6.Super Block(超级快):存放文件系统本身的结构信息

问题:
我们都知道,Linux下,一切皆文件,那么目录也是文件,那么就有一个问题,目录的属性放在inode table里面,那么目录的内容是什么呢?当我们在一个目录下ls时,看到的该目录下的所有文件的名字及相关属性信息,那么目录是找到这些文件的?怎么显示这些内容的呢?

答案:
其实目录的内容就是该目录下的文件对所对应的inode id的映射关系。
在ls之后,文件系统读取目录的内容,读取文件名和inode id的映射关系,通过inode id就能找到inode,所以就会得到该文件的属性,并显示出来

创建文件的过程

1.在inode Bitmap找未被占用的位置,找到就把该位置的比特位置1
2.在inode table里对应的inode位置写入文件属性
3.在Block Bitmap找未被占用的位置,找到就把该位置的比特位置1 4在data Block里对应的block位置写入文件内容
5.建立inode和block的对应关系
6.文件名和inode id的映射关系,写入该目录下的内容里

删除文件的过程

1.在inode Bitmap 和 Block Bitmap 里把对应位置的比特位从1置0
2.在该目录下把该文件名和inode id的映射关系删除

查找文件的过程

1.在该目录的内容里查找文件名与inode id的映射关系,找到inode,即找到文件的属性
2.通过inode和data block的对应关系就可得到文件的内容

软硬链接

1.硬链接

一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode 号码。这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的 访问。这种情况就被称为"硬链接"(hard link)。
硬链接命令 ln file1 file2

图中所标的数字就是该文件的硬链接数文件
可以看到两个文件的inode id一样,说明硬链接并没有创建新文件
在这里插入图片描述

2.软链接

文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的"软链 接"(soft link)或者"符号链接(symbolic link)。 这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:“No such file or directory”。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会因此发生变化。
软链接命令 ln -s file1 file2
可以看到,a.out和cmd的inode id 不一样,说明软链接会创建新文件,此时cmd里的内容就是a.out的路径,运行cmd就等于运行a.out
在这里插入图片描述
在这里插入图片描述

参考:
inode详解
ext2文件系统

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值