Linux文件系统

  在Linux系统中一切皆文件,那么我们探讨一下Linux中文件系统。

  在Linux中,我们可以把一个磁盘分成一个或多个分区,每个分区可以包含一个文件系统。每个文件系统中有:自举块、超级块和许多的柱面组。而柱面组中包含我们要讨论的i节点,和数据块。如下图所示为文件系统结构。

  在linux中,文件查找不是通过文件来查找的,而是通过i节点来查找的,我们可以把i节点看做是一个文件指针(FILE*),当文件存到磁盘上的时候,把文件在磁盘上的位置,记录在i节点中,这样我们就能通过i节点来读写文件了。只不过我们不能通过i节点来直接访问文件内容,必须通过文件名来间接使用。事实上i节点中不仅仅记录了文件的位置,还有文件类型、文件访问权限位、文件长度等信息。

  但是在i节点中并没有文件名,那么文件名被保存在什么地方了?文件名被保存在一个个的目录项中。

  从图中可以看出目录是一种表,而每一行及为一个目录项,每个目录项都包含一个i节点号和一个文件名,i节点号指向i节点。这样我们就可以通过文件名找到节点号,通过i节点号找到i节点,从而找到文件在磁盘上的位置。

  我们再来看一个图

 

   图中有两个文件指向一个i节点,而i节点指向一个数据块。也就是说“文件名” 和 “文件名3” 中的内容是一样的。共享一个数据块。这就引出了一个硬链接和符号件接。

   对于硬链接来说,如果删掉了“文件名”。那么磁盘上的数据块是不会被删除的。应为i节点例记录了该文件的硬链接数。只有硬链接数为0的时候,删除文件名的时候,改数据才会从磁盘上删除。

  符号链接

       符号链接:符号链接就是指向一个文件的间接指针,它与硬链接不同,硬链接直接指向文件的i节点。

  符号链接包含了一个文件名的路劲,如果这个文件名被删除,这符号链接自然就不能正常工作了。

posted @ 2017-10-22 21:29  吃素的小飞猪  阅读(386)  评论(0编辑  收藏  举报