上一篇简单介绍了一下什么是文件系统,最后我们尝试自己在一张A4纸上构造了一个属于我们自己的文件系统——happyfs。

可惜的是,我们这个 happyfs 并不为世人所知,它的闻名程度远不及大名鼎鼎的 ext2。ext2 是早期 linux 上使用的文件系统,堪称经典也不复杂。从它入手,比较简单,也方便以后我们学习更复杂的文件系统。

1 ext2 如何划分它的A4纸


图1 ext2全貌

看来 ext2 不太喜欢使用 A4 纸,它比较喜欢纸带。不过没关系,聪明的你一定也可以举一反三。从图1中可以看到,ext2 将纸带划分成了一个一个的“组”(除了第一个小方格外)。接下来,又把每个组具体再细分,划分出了超级块,组描述符表,块位图,inode 位图,inode 表,数据块。

别晕,这一堆名词我知道你很多看不懂,“数据块”你总能知道是什么吧。还记得上一篇文章中的图吗,那页A4纸从第11行开始存储数据,那一块就是数据块。

而从1到10行,保存是只是文件名称,位置等等相关信息,这种信息,通常只是为查找数据块在哪个位置和大小设定的,它有一个让人听起来不太爽的名字——元数据(metadata)。只不对对应到了 ext2 上,元数据变复杂了,于是就有了inode,超级块等等这些概念了。

2 何为 block

block 中译名叫。物理磁盘是由一个个的区(所谓的扇区)连接成一片,每个区是 512 字节。为了能有组织,有计划的使用磁盘,设计者把连续若干个(比如2个,4个,8个)区连成一组,抽象出 block 的概念。如果使用 2 个区为一组,那一个 block 的大小就是 1KB。

如今,磁盘也不在是什么昂贵资源,动辄就是几百G大小,通常在设计 block 的时候都使用 8 区连成一组,即一个 block 是 4KB。

图1中虽然没有明确的划出一个个的 block,但是你心里要知道,这个纸带就是由一个个的 block 拼接而成的,只是接缝实在太完美,你看不见而已。

3 Boot Block

无论如何,Boot Block 都占用 1KB,它并不以你划分的 block 大小来改变自己。即使你划分的 block 大小是 4KB,Boot Block 也只占用 1KB 大小。这个块,是专门为启动CPU的时候保留的(我没说是启动操作系统)。

在你摁下开机键的那一刻,CPU 一上电,硬件会主动把 Boot Block 复制到内存的0x7c00这个位置,然后CPU 就从这个位置开始执行,后面的事情,就是一步一步的把操作系统引导起来。

4 ext2 元数据

4.1 inode 表和 inode 节点

凡是以后提到表的概念,都可以把它理解成数组。

如同上一篇中的第1行到第10行,它就是一个简化版本的 inode 表,而 inode 表里存放的就是一个个的 inode 节点。在 ext2 中,inode 表可能要占用若干个 block.

实际上,inode 节点就是一个比较大的结构体。

ext2 的 inode 节点里存储了更加丰富的内容,除了记录文件在哪个block上,还包含了文件的权限位最近访问时间最近修改时间等等。有一点比较特殊的是,文件的名字并没有保存在 inode 节点里,而是保存在一个称为目录项的结构体里。

4.2 inode 位图和 block 位图

位图,是一种常见的数据结构。它就好像是一张地图,每个 bit 位代表一个位置,如果为 0,表示这个位置没有被占用,如果为 1,表示该位置被占用。

那么 inode 位图就是用来记录 inode 表中哪个位置被占用了,block 位图,就是记录哪个 block 被占用了。等到后面的实验中,你就会深刻理解这一点。

4.3 组描述符表

一个组描述符表,它不仅存储当前组的信息,也会保存其它组的信息。这是一种备份思想。组描述符表中存储的组描述符

组描述符中保存了 inode 位图和 block 位图在哪个 block 上。除此还有 inode 表的位置等等。

4.4 超级块

超级块记录了一全局信息,比如 inode 节点的个数,第一个数据块的位置,block 的大小(是1KB还是2KB还是4KB?),block 的个数等等。

5 总结

本篇介绍了 ext2 是如何划分磁盘的,以及一些常见的概念。这些概念看起来对于新手来说可能过于抽象,别担心,后面有实验部分。

需要注意的是:

  • 不是所有的组都有块组描述符
  • 块组描述符描述的是所有组的信息,一般来说只使用第0组中的就够了,其它组都只是备份而已。

10-ext2 文件系统相关推荐

  1. ext2文件系统 - mke2fs

      上一遍博文的重点其实将ext2整体的组织框架,我们知道了ext2文件系统由块组组成,每个块组里面的组织形式.我们甚至直接把超级块和组描述符里面的内容,用十六进制形式展现了出来.这篇博文主要讲述如何 ...

  2. Linux ext2文件系统小结

    本文来源:http://learn.akae.cn/media/ch29s02.html 有修改 1.ext2文件系统整体布局 一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如某种mkfs ...

  3. 深入解析ext2文件系统之mke2fs

      上一遍博文的重点其实将ext2整体的组织框架,我们知道了ext2文件系统由块组组成,每个块组里面的组织形式.我们甚至直接把超级块和组描述符里面的内容,用十六进制形式展现了出来.这篇博文主要讲述如何 ...

  4. 模拟实现EXT2文件系统

    设计EXT2文件系统 实验目的 (1)掌握文件系统的工作原理 (2)理解文件系统的主要数据结构 (3)学习较为复杂的 Linux 下的编程 (4)了解 EXT2 文件系统的结构 实验内容 设计并实现一 ...

  5. ext2文件系统了解

    一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如mkfs命令)格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的信息.下以ext2文件系统为例说明文件 ...

  6. Ext2文件系统—文件读写

    1.定义 只有在"打开"了文件以后,或者说建立了进程与文件的"连接"之后,才能对文件进行读写.为了提高效率,Linux的读写操作都是带缓冲的,即写的时候先写到缓 ...

  7. Linux 文件系统及 ext2 文件系统

    linux 支持的文件系统类型 Ext2:     有点像 UNIX 文件系统.有 blocks,inodes,directories 的概念. Ext3:     Ext2 的加强版,添加了日志的功 ...

  8. Linux EXT2文件系统结构分析(详情见附件)

    Linux的第一个版本是基于Minix文件系统的.当 Linux成熟时,引入了扩展文件系统(Ext FS) ,它包含了几个重要的扩展,但提供的性能不令人满意.在 1994 年引入了第二扩展文件系统(s ...

  9. 转:ext2文件系统详解

    第一部分磁盘的物理组成 磁盘的基本概念: 扇区为最小的物理存储单位,每个扇区为512字节. 将扇区组成一个圆,那就是柱面,柱面是分区的最小单位. 第一个扇区很重要,里面有硬盘主引导记录(Masterb ...

  10. ext显示服务器文件,使用linux的fsck.ext2命令检查及修复ext2文件系统

    使用linux的fsck.ext2命令检查及修复ext2文件系统 发布时间:2020-07-18 13:40:16 来源:亿速云 阅读:138 作者:清晨 栏目:服务器 不懂使用linux的fsck. ...

最新文章

  1. RedHat、CentOS设置静态IP、主机名、关闭防火墙(虚拟机VMware客户机)
  2. Gradle 修改 Maven 仓库地址(阿里镜像)
  3. MT6573驱动开发日志之touchpanel .
  4. 深度学习入门之线性模型和梯度下降
  5. 安装VMware Tools 灰色解决办法
  6. python selenium定位元素方法,python + selenium 练习篇 - 定位元素的方法
  7. Java Code Geeks Andygene Web原型
  8. php 后端刷新页面
  9. TB创建公式应用dll失败 请检查用户权限,终极解决方案
  10. scrapy框架之分布式操作
  11. Realtek:电脑更新后,在主机前面板插上耳机没有声音,怎么解决?
  12. 操作系统--EXT4文件系统结构分析
  13. k3安装服务器系统,论如何逗比的在2008R2上安装金蝶K3服务器
  14. 基于SpringBoot+SpringSecurity+JWT+RSA加密算法签名 Auth权限认证搭建教程
  15. github 发布静态页面
  16. PS海报制作的常用方法
  17. 【学习笔记--FMCW基础知识】
  18. MEM/MBA数学强化(07)几何
  19. 有哪些编程必备的 Vim 配置?
  20. 卅三先生的工程电磁场讲座.EEm04——电势能001

热门文章

  1. 哪个计算机软件可以编辑动画文字,下面的软件中,属于文字编辑软件的是( )。A.FlashB.AuthorwareC.wordD.ACDSee - 试题答案网问答...
  2. EXCEL 怎么把一列数据转换为多行多列数据
  3. php网页出现文档已移动错误,WordPress中无法将上传的文件移动至错误的解决方法...
  4. Unity 3D 报错:UnassignedReferenceException: The variable *** of *** has not been assigned.
  5. 怎么解决allegro单位转换后出现DRC错误
  6. 网传分享的Wordpressripro主题4.8版本后门分析_盾给网下载修复文件[建站教程]
  7. psd文件一键瘦身脚本使用详细步骤
  8. HTTP请求头与响应头
  9. 计算机设备不可投放,对于电脑显示无法停止通用卷设备,该如何解决
  10. iOS Safari(浏览器)