文件系统2:软链接、硬链接与inode

在之前的文章中已经介绍了磁盘、文件系统与inode的关系,没看过的同学可以先看一下这篇文章。

什么是文件系统?什么是文件系统?我们都知道,数据是存储在硬盘、u盘等存储设备中的,数据在这些物理设备中的最终形态,都是0和1。而我们平时在windows或linux操作系统中,都是以文件夹、目录的形式存放各种文件的。https://mp.weixin.qq.com/s/LtzAJ0qfxo8OPXZ2Wq1njA

从之前的文章中我们知道,一个inode是用来表示一个文件,用于描述文件的创建时间、权限、文件块与磁盘存储位置映射关系等等属性。唯独没有文件名,那么文件名存在哪里呢?

文件名其实是存储在所属目录的inode对应的数据块中,目录文件的数据块中存储了目录下的文件名称与文件inode的对应关系。

硬链接

理解了inode与文件数据之间的关系后,硬链接就比较好理解了。

硬链接就是在目录下新建了一个文件名,然后将文件名对应到链接文件的inode上。

03dedc17290aa2e9ad3463ac9ee431e3.png

具体操作如下所示。

ln test.go test.go_hardlink

1ee5664f7edd4fea4bcc5d29a945a6ec.png

可以看到,做了硬链接的两个文件的inode id是一样的,inode的link值也变成了2,表示当前inode被两个文件所使用。

通过硬链接和源文件均可以对文件进行修改,修改后两种方式查看文件,得到的均为修改后的数据。

两个文件做了硬链接,但是因为只有一个inode,所以文件内容只在磁盘上存储了一份。删除一个文件名,inode不会被删除,只有inode的link值变为0,inode才会被删除。

硬链接有两个限制:

  • 不可以给目录创建硬链接

  • 不可以跨文件系统创建硬链接,因为inode id只在当前文件系统有效

软链接

软链接则不受硬链接的两个限制,因为软链接新建了一个inode,这个inode对应的数据块中存储了链接到的文件路径。

所以操作系统访问软链接时,先通过软链接的inode找到目标文件的inode,再通过真正的inode对文件内容进行操作。

0fe6224b1ec82883f03afae4d9902b13.png

软链接具体操作如下

ln -s test.go test.go_softlink

82aa6db7bdf031d540b8febccb4e6ef7.png

可以看到,软链接生成的文件使用的inode为新的inode。原inode link值不变。

通过软链接和源文件均可以对文件进行修改,修改后两种方式查看文件,得到的均为修改后的数据。

如果将原文件删除,原inode link变为0后,原inode也会被删除。软链接会指向一个未知的文件,也无法再通过软链接对源文件进行修改。​​​​​​​

e6a3690f620915024acded19bfadfdce.png

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值