0%

操作系统——文件系统

文件系统

文件系统的组成

文件系统的概念
  • 文件系统是操作系统中负责把用户的文件存到磁盘硬件中

    • 负责管理持久数据的子系统
  • 基本数据单位:文件

    • 目的:对磁盘上的文件进行组织管理
  • “万物皆文件”

    • 普通的文件和目录、管道、块设备、socket都是统一由文件系统管理
原理
  • 为每个文件分配两个数据结构

    • 索引节点inode

      • 记录:文件的元信息

        • inode编号、文件大小、访问权限、创建/修改时间

        • 数据在磁盘中的位置

      • 索引节点是文件的唯一标识

        • 跟文件一一对应
          • 同样存储在硬盘中
    • 目录项dentry

      • 记录:文件的名字、索引节点指针、与其他目录项的层级关联关系

        • 不只是表示目录

        • 也可以表示文件

      • 目录项是由内核维护的一个数据结构

        • 存放在内存中
      • 目录也是文件

        • 普通文件保存文件数据

        • 目录文件保存子目录或者文件

      • 目录项vs目录

        • 区别

          • 目录是文件,存放在硬盘里

          • 目录项是内核的一个数据结构,缓存在内存中

        • 关系

          • 查询目录频繁从磁盘读,效率低

          • 内核把读过的目录用目录项这个数据结构缓存在内存中

            • 下次读到相同目录,直接从内存读
    • 关系

      • 目录项和索引节点是多对一的关系

        • 一个文件可以有多个别字
      • 区别

        • 索引节点存放在硬盘

        • 目录项存放在内存

  • 文件数据如何存储在磁盘

    • 逻辑块/数据块

      • 磁盘读写的最小单位是扇区(512B),读写效率低

      • 文件系统把多个扇区组成了一个数据块

        • 每次读写的最小单位就是逻辑块

        • linux中逻辑块大小为4KB(一次性读写8个扇区)

          • 提高读写效率
    • 加速文件访问:把索引节点加载到内存

      • 磁盘格式化后的存储区域

        • 超级块

          • 存储文件系统的详细信息
            • 块个数、块大小、空闲块等
        • 索引节点区

          • 存储索引节点
        • 数据块区

          • 存储文件或者目录数据
      • 加载策略:只有需要的时候加载进内存

        • 超级块:文件系统挂载时加载进内存

        • 索引节点区:当文件被访问时加载进内存

虚拟文件系统

文件的使用

文件的存储

文件系统的结构

目录的存储

软链接和硬链接

文件I/O