inode和软硬链接

本文详细解读EXT2文件系统的区块、块组结构,以及文件创建、删除过程。特别介绍了硬链接和软链接的区别,通过实例演示如何使用ls -li查看文件信息。关键词涵盖:EXT2、块、块组、inode、硬链接、软链接、ls命令。

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

Linux 最传统的磁盘文件系统使用的是 EXT2 ,磁盘空间被分成几个区,分区的概念类似windows下的C盘D盘等。

Block:
文件系统的最小存储单元是Block
在 EXT2 文件系统中,磁盘的整个空间是以块为单位被管理的, 也是被分配来存储数据的最小单位,一个文件即使只有 1 字节,也会至少占用一个存储块。Block大小是在格式化时决定的。

Block Group:
EXT2文件系统会根据分区的大小划分为数个Block Group(块组)。而每个块组都有着相 同的结构组成。属于同一个文件的数据块存放在同一块组中。

块组的结构如下:

超级块:
存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量, 未使用block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个文件系统结构就被破坏了。
块组描述符:
包含每个块组的总体信息,如数据位图的块号、索引节点位图的块号、索引节点表的起始块号、空闲数据块和 inode 的个数等。
块位图(数据位图):
记录着数据块中哪个数据块已经被占用,哪个数据块没有被占用。
inode位图(索引位图):
每个bit表示索引节点表中的某个inode是否空闲可用。
索引节点表 : 
存放多个inode 每个inode都有一个号码,操作系统用inode号码来识别不同的文件。 inode用来存放文件属性。如 文件大小,所有者,最近修改时间,以及文件数据在数据块中的位置等等(没有文件名)
数据块 :
存放文件内容。目录也是一个文件,通过目录文件也有inode,目录文件的inode中也存放了目录文件数据在数据块中的位置,目录下的文件inode和文件名的映射关系就存放在一部分数据块中。
Linux下新建一个文件的过程:
1.通过inode位图分配给文件一个空闲的inode并且把 文件属性等信息记录到其中。
2.分配数据块存储文件数据,使用的数据块indoe会记录下来, 块位图的内容也随之改变。
3.添加文件名和inode的映射关系到目录文件中。
删除文件的过程:
删除文件时,通过位图把文件对应的indo和数据块置为无效即可。

硬链接:

一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是Linux系统允许多个文件名指向同一个inode号码。这意味着,可以用不同的文件名访问同样的内容。但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)。

ln命令可以创建硬链接:

ln 源文件 目标文件

运行上面这条命令以后,源文件与目标文件的inode号码相同,都指向同一个inode。inode信息中有一项叫做"链接数",记录指向该inode的文件名总数,这时就会增加1。反过来,删除一个文件名,就会使得inode节点中的"链接数"减1。当这个值减到0,表明没有文件名指向这个inode,系统就会回收这个inode号码,以及其所对应block区域。

注意"."和".."对目录硬链接数的影响  任何一个目录的"硬链接"总数,总是等于2加上它的子目录总数(含隐藏目录),因为子目录有 .. 当前目录有 . 他们都是硬链接。

软链接:

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

这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错。这是软链接与硬链接最大的不同。

ln -s命令可以创建软链接。

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

使用 命令 ls -li 查看当前目录下文件信息

 各列的含义:

文件inode 文件权限   硬链接数  文件所有者  所属组  文件大小  最后修改时间 文件名

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神奇dyl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值