Linux文件存储之inode、硬链接、软链接

本文介绍了文件存储的基本概念,包括扇区与块的作用、inode的功能及其如何帮助操作系统找到文件。此外,还详细解释了硬链接与软链接的区别,以及它们在文件系统中的应用。

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

文件存储

文件存储在硬盘上,扇区(sector)是磁盘中最小的物理存储单位,通常情况下每个扇区的大小是512字节,但为了提高效率,操作系统在读取硬盘的时候往往是一次读取多个扇区(多个扇区组成块),所以(block)是文件存取的最小单位;最常见的块的大小为4KB;

由于文件存储在块中,所以我们需要一些特殊的东西(inode)来索引这些块,同时也包含了文件的一些元信息,比如创建者、创建日期、创建时间等,这些特殊的东西称之为”索引节点”(inode);可以通过命令:stat 文件名 来查看一个文件的inode信息;
这里写图片描述
其中Inode:1036334是该文件对应的inode的号码;其它信息在下文说明;
因为inode也要被存储也要消耗磁盘空间,所以在磁盘被格式化的时候,操作系统将其分为两个部分,一部分用于存储inode,一部分用于存储真正的数据;由于inode在格式化磁盘的时候就被设置,且数量有限,所以有可能出现inode被用完,磁盘仍有空间却不能创建文件的情况;可以通过命令:df -i 查看每个硬盘分区的inode总数和已经使用的数量;
这里写图片描述
其实操作系统查看一个文件并不是通过文件名来打开的,而是通过inode索引到对应的块来找到目标文件,那操作系统是如何找到这些inode的呢?每个inode都有一个对应的ID号。我们打开一个文件,在系统内部实际上分为三个步骤:(1)系统找到这个文件名对应的inode号码;(2)通过inode号码找到对应的inode,获取inode信息,判断权限等;(3)通过inode索引到对应的块,读数据;可以通过命令:ls -i 文件名 来查看一个文件对应的inode号码;
这里写图片描述
硬链接、软链接、inode、block的关系如下所示(软、硬链接在下文说明):
这里写图片描述

硬链接和软链接

通常文件名和inode号码是一一对应的,但是Linux系统允许多个文件名指向同一个inode号码;比如我们新建文件file1,通过硬链接的方式新建file2,分别查看这两个文件的inode号码,会发现他们是一样的;那什么是硬链接?与之对应的软链接又是什么?

硬链接:

可以通过不同的文件名访问同样的内容(或是说同一个inode),对文件内容做修改,会在所有的文件名中体现出来(这更像是php中的引用传值),但是删除某一个文件名,并不会对其它的文件名产生影响,文件内容也不会被删除,只有当所有的文件名都被删除时,文件内容才会被删除,这种情况就叫做硬链接,即多个文件名索引同一个inode号码,通过 stat 文件名 可以查看某个文件对应的inode被多少个文件名链接,举例如下:
这里写图片描述
Links:2说明有两个文件名链接至该inode(1036334),这是因为我创建了文件file1,同时创建了该文件的一个硬链接file2(下文有具体的操作);
创建硬链接举例如下:
新建文件file1:touch file1
创建硬链接file2:ln file1 file2
查看文件信息:ls -li
这里写图片描述
发现两个文件名对应的inode号码均为:1036334,链接到该inode的链接个数为2(-rw-rw-r–权限后的数字表示指向该inode号码的链接数)
删除file1:sudo rm file1
查看文件信息:ls -li
这里写图片描述
文件仍存在,且inode号码也未改变,链接到该inode的链接个数变为1;

软链接:

软链接(如下文file3)其实更像windows系统下的桌面快捷方式,它本身也是一个文件(有新的inode号码),只是它保存的不是文件内容(file1),而是软链接指向的文件名的地址(file1的地址),如果删除file3,对文件内容不产生影响,删除file1,会使file3失效;
创建软链接file3:ln -s file1 file3
查看文件:ls -li
这里写图片描述
链接到1036334inode的链接数仍然为2,说明file3并未链接到1036334
删除file3:sudo rm file3
查看文件:ls -li
这里写图片描述
并未对file1产生影响;
删除file1:sudo rm file1
查看文件:ls -li
这里写图片描述
发现file3已变红失效;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值