• 文件系统(File System)


    什么是文件系统,引用百科解释:

      操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。

    文件系统是操作系统核心的组成部分,没有它我们无法完成对文件的增、删、改、查等基本操作

    概念

      在了解文件系统之前我们需要了解一些基本概念

    • inode 索引节点 (index node)

      我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block)

      数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息

      在 Linux 中,元数据中的 inode 号才是文件的唯一标识而非文件名,文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块

    • block data(数据块)

        数据块即真正存储用户数据的地方

        每个数据块大小固定相等(1024或者4096)字节

        数据块中主要存储的数据是 文件、目录文件

    • dir_entry(目录结构 / 目录条目 / 目录文件)  

        目录结构实质也是一个数据块,该数据块类似于一个表格,记录当前目录下对应的文件名,和文件名对应的inode

    • block bitmap(块位图)

      在每个分区的数据的储存区是由一个又一个的数据块(data block)组成,在用户需要存储新的数据时需要遍历整个分区的数据块,这显然是非常耗时的,所以每个分区都存在一个快位图,每一个数据块在块位图中都存在一个标识符(1个bit),用于表示该块当前储存状态,在存入新数据时只需要遍历块位图就能快速找到空闲的数据块

    • inode bitmap(inode位图)

        inode在磁盘格式化完成后就已经完成分配,每个inode都有固定且唯一的ID

        inode_map中每一位对应一个inode节点,标识其是否可用,每一位占用一个字节

        inode_map大小通常与一个数据块的大小一样

    • block group(块组)

         文件系统将一个分区逻辑分成多个块组,每个块组都有其独立的 data block区、block bitmap、inode bitmap、inode区

        具体分为多少组取决于分区大小,以及每个数据块大小

        文件可以跨组保存

    • 超级块

        每个分区都有一个数据块来保存当前分区全局信息,每个块组中备份有一个

        超级块中描述了每个分区包含多少块组、每个块组包含多少块、每个块的大小、空闲磁盘块、引用磁盘块、空闲inode、引用inode

    • 块组描述符(GDT : group descrpition table)

          保存着当前分区有多少个块组,每个块组的起始位置

    • boot block (引导块)

        任何分区的第一个块是boot block , 不能被使用

        如果在当前分区装有操作系统,boot load 需要放在 boot block

        开机是由MBR调用

        

    那文件系统又是如何查找文件的呢?

    例如想要找到 /log/var/log/message 文件,如下图

    找到根目录inode(自引用) -- 根目录数据块 -- var目录inode -- var目录数据块 -- log目录inode -- log目录数据块 -- message文件inode -- message文件

    虚拟文件系统(VFS)

  • 相关阅读:
    第07组 Alpha冲刺(2/4)
    第07组 Alpha冲刺(1/4)
    团队项目-需求分析报告
    团队项目-选题报告
    1381 硬币游戏
    1381 硬币游戏
    1347 旋转字符串
    1344 走格子
    1305 Pairwise Sum and Divide
    1384 全排列
  • 原文地址:https://www.cnblogs.com/xiaoliwang/p/9001753.html
Copyright © 2020-2023  润新知