理解文件系统及软硬链接

在我们存储文件时,文件的属性和数据是分开存放于文件系统中的,通过下图我们可以简单理解一下文件系统。

 理解文件系统:

   文件系统中包括:超级块、inode节点表-、数据区

创建一个新文件主要有四个操作:

1.存储属性:

           内核先找到一个空闲的inode节点,内核把文件信息记录到其中。

2.存储数据:

           该文件需要存储在某几个磁盘块中,内核会找到对应空闲的磁盘块数,将内核缓冲区的数据复制到其中。

3.记录分配情况:

           文件内容按顺序存入到磁盘块,内核在inode上的磁盘分区记录了上述块列表。

 4.添加文件名到目录:

           新的文件名abc。内核将入口(inode节点号,abc)添加到目录文件。文件名和inode之间的对应关系将文件名和文件的内容以及属性链接起来。


理解软硬链接:

       一、概念

        1. 硬链接:从上面的例子我们可以发现,真正找到磁盘上文件的并不是文件名,而是inode节点。其实在Linux中可以让多个文件名对应于同一个inode。硬链接是通过inode引用另外一个文件。

                举个栗子:

                 

        我们先创建了一个文件abc,然后通过ln命令创建了abc的硬链接文件def,通过查看文件信息我们发现这两个文件的链接状态相同,inode节点也是相同的:663983,硬链接数为2。

         2.软链接:通过名字引用另外一个文件。

                 举个栗子:

                        

       我们先创建了一个文件abc,然后通过ln -s命令创建了abc的软链接文件abc.soft,通过查看文件信息我们发现在abc.soft后面有个“->”指向了abc,而且这两个文件的链接状态不同,inode节点也不一样,各自的硬链接数为1。

    二、理解 

    接下来我们来详细了解软硬链接的区别:

    1. 首先我们要知道如何找到一个文件:① 目录项(文件名称,文件对应的inode节点号)

                                                                        ② inode节点(文件的描述信息,其中有文件数据的存储信息)

                                                            图解:

                                                                  

    2.软硬链接是怎么找到文件的:

    

     由上图我们可以得出结论:软链接文件更像是一个文件的快捷方式,它针对的是文件名(目录项)                     
                                                     硬链接更像是对一个文件名(目录项)的备份   

      3.我们在删除一个文件时,会做两件事情,第一是在目录中将对应的记录删除,第二是将文件的硬链接数-1。若一个文件的硬链接数为0时,系统就会将对应的磁盘释放。

         也就是说删除的是目录项与inode节点的连接,所以当我们分别删除软硬链接后,会发现软链接文件无法再打开,是因为软链接无法再通过数据中存储的指向文件路径名找到文件了,而硬链接因为有跟源文件inode相同的节点,所以仍能通过自身的inode节点找到这个文件信息。

      三、总结

            1.软/硬链接文件:

                     ①如何产生一个软链接文件:ln -s 源文件 软链接文件
                     ②如何产生一个硬链接文件:ln 源文件 硬链接文件 
                     ③什么是软链接文件:软链接文件更像是一个文件的快捷方式,它针对的是文件名(目录项)                     
                     ④什么是硬链接文件:硬链接更像是对一个文件名(目录项)的备份   
                  
            2.软/硬链接文件的区别:

                           ①软链接有自己的inode节点号,是一个单独的文件
                               硬链接文件inode节点号与源文件相同,是一个文件别名
                           ②软链接可以对目录进行操作 
                               硬链接不能对目录进行操作
                           ③删除源文件,软链接文件将无法使用
                               删除源文件,硬链接文件不受影响
                           ④软链接可以跨分区建立
                               硬链接不能跨分区建立

猜你喜欢

转载自blog.csdn.net/ENSHADOWER/article/details/83539863
今日推荐