zoukankan      html  css  js  c++  java
  • 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节点。

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

  • 相关阅读:
    建立连接数据库时要输入哪些信息?
    如何建立一个JDBC程序?
    如何在网上找MySQL数据库的JDBC驱动jar包?
    gorm连接mysql数据库
    Django ORM的骚操作
    Python 发送企业微信单发和群发机器人
    python获取指定间隔日期列表
    表名小写_set.all()再根据字段过滤
    foreignkey相关的参数
    Django 模型层-多表操作
  • 原文地址:https://www.cnblogs.com/yuanyongbin/p/7711955.html
Copyright © 2011-2022 走看看