为了账号安全,请及时绑定邮箱和手机立即绑定

软链接的block块存储的是源文件的什么信息?为什么不是i节点?

软链接的block块保持 的是源文件的什么信息?为什么不是i节点?我的想法来自于删除了源文件硬链接还能访问,那说明i节点的信息还在。可是为什么软链接不能访问呢?软链接的block块存储的是什么?要识别到源文件,存储的不应该是源文件的i节点吗!

正在回答

3 回答

http://img1.sycdn.imooc.com//59c3c0c40001763807950241.jpg补充图

0 回复 有任何疑惑可以回复我~

我的理解是这样的,软链接有自己的inode,指明了自己所在的block,block中存放的是源文件的文件名和inode。源文件删除导致软链接不能使用的原因是,源文件删除后,该inode 结点的引用次数会变为0(软链接的inode与源文件的inode是不同的),文件对应的block会从文件管理表中删除,也就是说该inode 失效,因此会导致软链接也不能使用。

0 回复 有任何疑惑可以回复我~
#1

慕粉1720382552

引用次数为0的话,代表文件删除了,题主问的是为啥给一个文件分别创建硬链接和软链接后,删除原文件会导致软连接失效,因为硬链接还在,原文件并没有消失。真正的原因是软链接的数据块中存放的就是原文件的路径,而不是inode号
2017-06-15 回复 有任何疑惑可以回复我~
#2

Sunglasses_cat 回复 老_喵

我觉得你的理解跟他们又不一样了,倘若你这么理解那么老师就没有说错。 我也做了尝试,我发现一件奇葩的事,/root/下的anaconda-ks.cfg文件创建的软连接是无效的。。。(有图为证) 而我先在/tmp/创建了一个anaconda-ks.cfg的硬链接,再创建/root/下的anaconda-ks.cfg的软连接就有效了(此时/tmp/下分别有anaconda-ks.cfg的软硬链接各一个) 然后我把/tmp/中的硬链接删除,/tmp/中的软连接就又失效了,,,这是不是证明了软连接链接的是硬链接而不是原文件,那这么说每建立一个软连接还得先建立一个硬链接喽??
2017-09-21 回复 有任何疑惑可以回复我~

软连接的block块存储的应该是源文件的路径信息。软链接可以类比windows的快捷方式,存放真实文件的路径,访问软链接时,取到的是真实路径信息,然后系统根据真实路径信息继续查找到源文件的位置。所以,当删除了源文件,继续访问软链接时,同样能拿到一个原先的真实路径信息,但根据真实路径信息查找时,已经找不到源文件了。

0 回复 有任何疑惑可以回复我~
#1

慕粉1720382552

正解。软链接的数据块中存放的就是原文件的路径,而不是inode号,从创建软链接时要使用绝对路径就能看出来。如果存放的是inode号,那么就不会出现~~不使用绝对路径时软链接会自动链接到同级目录下的同名文件的错误了。而且如果存放的是inode号,我感觉会比较浪费系统资源,毕竟文件很多。
2017-06-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

软链接的block块存储的是源文件的什么信息?为什么不是i节点?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信