文件系统

本文详细介绍了Linux文件系统的结构,包括引导块、超级块、空闲空间块和inode等核心组件。超级块存储了文件系统的关键参数,而inode则包含了文件的元数据。文件系统采用连续分配、链表分配或inode分配来管理磁盘空间,各有优缺点。文章深入剖析了这些概念,有助于理解Linux文件系统的运作机制。
摘要由CSDN通过智能技术生成

目录

文件系统布局

引导块

超级块

空闲空间块

inode

文件系统实现

连续分配

链表分配

inode


文件系统存储在磁盘上。大部分的磁盘能够划分出一到多个分区,叫做磁盘分区或者是磁盘分片。每个分区都有独立的文件系统,每块分区的文件系统可以不同。磁盘的0号分区称为主引导记录(Master Boot Record, MBR),用来引导计算机。在MBR的结尾是分区表(partition table)。每个分区表给出每个分区由开始到结束的地址。

Linux文件系统 -----》 Linux文件系统 《------

文件系统布局

引导块

MBR做的第一件事就是确定活动分区,读入它的第一个块,称为引导块(boot block)并执行。引导块中的程序将加载分区中的操作系统。为了一致性,每个分区都会从引导块开始,即使引导块不包含操作系统。引导块占据文件系统的前4096字节,从磁盘上字节偏移量0开始。引导块可用于启动操作系统。

超级块

紧跟在引导块后面的是超级块(Super block),超级块的大小为4096字节,从磁盘上的字节偏移4096开始。超级块包含文件系统的所有关键参数:

  • 文件系统的大小
  • 文件系统中的数据块数
  • 指示文件系统状态的标志
  • 分配组大小

在计算机启动或者文件系统首次使用时,超级块会被读入内存。

空闲空间块

使用位图或者链表两种方式,标记磁盘的利用情况。

inode

inode, 也称为索引节点。它是一个数组的结构, 每个文件有一个inode,inode非常重要,它说明了文件的方方面面。每个索引节点都存储对象数据的属性和磁盘块位置。inode节点主要包含了以下信息:

  • 模式/权限
  • 所有者ID
  • 组ID
  • 文件大小
  • 文件的硬链接数
  • 上次访问时间
  • 最后修改时间
  • inode上次修改时间

文件分为两部分,索引节点和块。一旦创建后,每种类型的块数是固定的。我们不能增加分区上inode的数量,也不能增加磁盘块的数量。

紧跟在inode后面的是根目录,它存放的是文件系统目录树的根部。最后,磁盘的其他部分存放了其他所有的目录和文件。

文件系统实现

最重要的问题是记录各个条件分别用到了哪些磁盘块。不同系统采用了不同的方法。分配背后的主要思想是 有效利用文件空间快速访问文件,主要有下面三种分配方案

连续分配

即把文件作为一连串连续数据块存储在磁盘上。

优点:

  • 实现简单,只需要记住两个数字就可以:第一个块的文件地址和文件的块数量。给的一个块的编号,可以通过简单的加法找到任何其他块的编号。
  • 读取性能比较强。可以通过一次操作从文件中读取整个文件。只需要一次寻找第一个块,后面就不再需要寻道时间和旋转延迟,所以数据会以全带宽进入磁盘。

缺点:随着时间的推移,磁盘会变得很零碎。

链表分配

为每个文件构造磁盘块链表,每个文件都是磁盘块的链接列表。

链表分配解决了连续分配造成的磁盘零碎问题。但是又引入了新的问题。

  • 随机访问困难
  • 由于指针占用了磁盘块空间,所以每个磁盘块实际存储的数据不再是2的幂。

inode

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值