LINUX系统中,软/硬链接和inode的一些关系。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LINUX系统中,软/硬链接和inode的一些关系。相关的知识,希望对你有一定的参考价值。

前言:
众所周知硬盘是计算机不可缺少的一部分,不管这个计算机上运行着的是什么系统,但是存储设备,都是必不可少的,而inode则是磁盘存储时无法替代的一部分。所以我想谈一下在linux系统中关于inode和软/硬链接的一些个人见解。

  目录:
  1. 什么是inode

  2. 什么是硬链接

  3. 什么是软链接

  4. 软/硬链接在linux上的基本使用方法

  5. 软/硬链接和inode的联系

一,什么是inode

  • 理解inode,要从文件储存说起。
    文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB),而文件在存储时并不是一定在连续的扇区上存储直到整个文件被存储完毕。所以当计算机需要某个文件的时候,它就必须
    得在不同的扇区跳来跳去,从而读取完一个完整文件的所有内容。可想而知这样的读取数据方式是多么的缓慢,因此人们就发明的新的方法,找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小,

文件被分布到了哪些扇区等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

  • inode一般占硬盘1/10的大小或者更小,在我们常用的存储方式中每个不同的分区都有一群自己的inode,每个inode都对应自己分区至少一个存储单元如下图所示:
    技术分享图片
  • 所以当有了inode以后,计算机每次先从inode里提取信息然后再去存储单元寻找。这样就少了很多冤枉路,从而加快了读取时间。

二 ,什么是硬链接

  • 硬链接(hard link, 也称链接)就是一个文件的一个或多个文件名。再说白点,所谓链接无非是把文件名和计算机文件系统使用的节点号链接起来。因此我们可以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录。
  • Linux 文件系统最重要的特点之一是它的文件链接。链接是对文件的引用,这样您可以让文件在文件系统中多处被看到。不过,在 Linux 中,链接可以如同原始文件一样来对待。链接可以与普通的文件一样被执行、编辑和访问。对系统中的其他应用程序而言,链接就是它所对应的原始文件。当您通过链接对文件进行编辑时,您编辑的实际上是原始文件。链接不是副本。
  • 硬链接只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为 inode)。当您移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件的位置,这样有助于文件的安全。如果您删除的文件有相应的硬链接,那么这个文件依然会保留,直到所有对它的引用都被删除。
  • 硬链接不能跨文件系统。
    三,什么是软链接
  • 软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。跟Windows系统上的快捷方式基本上毫无差别。
  • 软链接文件只是其源文件的一个标记,当删除了源文件后,链接文件不能独立存在,虽然仍保留文件名,但却不能查看软链接文件的内容了。
  • 在linux上软链接可以跨文件系统,就类似于你可以创建一个在C:盘上的软链接但是链接的指向目标却是D:上的某个文件!
    四,软/硬链接在linux上的基本使用方法
  • 如图所示:
    技术分享图片
  • test文件里存的是“hello”,现在我们要去b3文件夹里创建一个软链接,当我们cat 这个链接时看看会不会显示“hello”技术分享图片
  • 现在我们看一下这个软链接的本质
    技术分享图片
  • 所以软链接我们可以把它当作一个独立的文件,而文件里记载的就是路径,如果源文件被删除那么这个软链接将没有任何意义!
  • 下面我们看一下硬链接,硬链接创建方法为: ln 要被链接文件的绝对路径 链接名称 还以刚刚的文件举例,命令为: ln app/a/a2/a3/test lianjie 这里就不图示了。
  • 硬链接所显示的效果,或者说达到的用处跟软链接基本上没有任何区别,被硬链接的文件inode 数会加1 如果查看所有的硬链接我们会发现他们的大小,inode,完全一致! 而如果我们删除源文件,这个链接也不受任何影响。
    五,软/硬链接和inode的联系
  • 对于软链接来说,这个软链接拥有自己独立的inode。 而这个软链接也是一个文件,从磁盘的存储层面上来看,我们要显示的那个文件其实和软链接没有任何联系。 我们的链接当找到这个路径的文件后就完成了他的使命,而显示的东西或者达到的效果完全是由我们找到的那个文件自己达成的。或者说我们的软链接就是一个触发的作用!
  • 对于硬链接来说则完全不同,硬链接不能跨分区。 被硬链接的文件就像是玩游戏时多了一次复活机会。只要inode计数不为0,无论怎么删除文件,那个文件依然坚挺!!!
  • 总的来说,软链接的inode和源文件没有关系,软链接就是一个完整的个体!硬链接虽然不会使源文件被再次复制,但是所有的链接同一文件的硬链接inode是一样的,大小也是一样的。由于每个硬链接的inode一样,也就导致了每个硬链接是实打实的关联这个源文件!

后记:
第一次写博客,以后应该也会继续。写的不好的地方大家多多包涵! 以后我也会继续和大家分享自己在linux学习上的理解,只为分享。 虽然你不爱听,但是我爱说啊!!!

以上是关于LINUX系统中,软/硬链接和inode的一些关系。的主要内容,如果未能解决你的问题,请参考以下文章

linux命令软连接和硬链接的区别(ln命令)

软链接与硬链接

[转帖]详解Linux系统inode原理--硬链接软链接innodb大小和划分等

了解inode,软链接和硬链接

软链接硬链接

Linux中inode详解,硬链接和软链接介绍