10-ext2 文件系统
上一篇简单介绍了一下什么是文件系统,最后我们尝试自己在一张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 文件系统相关推荐
- ext2文件系统 - mke2fs
上一遍博文的重点其实将ext2整体的组织框架,我们知道了ext2文件系统由块组组成,每个块组里面的组织形式.我们甚至直接把超级块和组描述符里面的内容,用十六进制形式展现了出来.这篇博文主要讲述如何 ...
- Linux ext2文件系统小结
本文来源:http://learn.akae.cn/media/ch29s02.html 有修改 1.ext2文件系统整体布局 一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如某种mkfs ...
- 深入解析ext2文件系统之mke2fs
上一遍博文的重点其实将ext2整体的组织框架,我们知道了ext2文件系统由块组组成,每个块组里面的组织形式.我们甚至直接把超级块和组描述符里面的内容,用十六进制形式展现了出来.这篇博文主要讲述如何 ...
- 模拟实现EXT2文件系统
设计EXT2文件系统 实验目的 (1)掌握文件系统的工作原理 (2)理解文件系统的主要数据结构 (3)学习较为复杂的 Linux 下的编程 (4)了解 EXT2 文件系统的结构 实验内容 设计并实现一 ...
- ext2文件系统了解
一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如mkfs命令)格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的信息.下以ext2文件系统为例说明文件 ...
- Ext2文件系统—文件读写
1.定义 只有在"打开"了文件以后,或者说建立了进程与文件的"连接"之后,才能对文件进行读写.为了提高效率,Linux的读写操作都是带缓冲的,即写的时候先写到缓 ...
- Linux 文件系统及 ext2 文件系统
linux 支持的文件系统类型 Ext2: 有点像 UNIX 文件系统.有 blocks,inodes,directories 的概念. Ext3: Ext2 的加强版,添加了日志的功 ...
- Linux EXT2文件系统结构分析(详情见附件)
Linux的第一个版本是基于Minix文件系统的.当 Linux成熟时,引入了扩展文件系统(Ext FS) ,它包含了几个重要的扩展,但提供的性能不令人满意.在 1994 年引入了第二扩展文件系统(s ...
- 转:ext2文件系统详解
第一部分磁盘的物理组成 磁盘的基本概念: 扇区为最小的物理存储单位,每个扇区为512字节. 将扇区组成一个圆,那就是柱面,柱面是分区的最小单位. 第一个扇区很重要,里面有硬盘主引导记录(Masterb ...
- ext显示服务器文件,使用linux的fsck.ext2命令检查及修复ext2文件系统
使用linux的fsck.ext2命令检查及修复ext2文件系统 发布时间:2020-07-18 13:40:16 来源:亿速云 阅读:138 作者:清晨 栏目:服务器 不懂使用linux的fsck. ...
最新文章
- RedHat、CentOS设置静态IP、主机名、关闭防火墙(虚拟机VMware客户机)
- Gradle 修改 Maven 仓库地址(阿里镜像)
- MT6573驱动开发日志之touchpanel .
- 深度学习入门之线性模型和梯度下降
- 安装VMware Tools 灰色解决办法
- python selenium定位元素方法,python + selenium 练习篇 - 定位元素的方法
- Java Code Geeks Andygene Web原型
- php 后端刷新页面
- TB创建公式应用dll失败 请检查用户权限,终极解决方案
- scrapy框架之分布式操作
- Realtek:电脑更新后,在主机前面板插上耳机没有声音,怎么解决?
- 操作系统--EXT4文件系统结构分析
- k3安装服务器系统,论如何逗比的在2008R2上安装金蝶K3服务器
- 基于SpringBoot+SpringSecurity+JWT+RSA加密算法签名 Auth权限认证搭建教程
- github 发布静态页面
- PS海报制作的常用方法
- 【学习笔记--FMCW基础知识】
- MEM/MBA数学强化(07)几何
- 有哪些编程必备的 Vim 配置?
- 卅三先生的工程电磁场讲座.EEm04——电势能001
热门文章
- 哪个计算机软件可以编辑动画文字,下面的软件中,属于文字编辑软件的是( )。A.FlashB.AuthorwareC.wordD.ACDSee - 试题答案网问答...
- EXCEL 怎么把一列数据转换为多行多列数据
- php网页出现文档已移动错误,WordPress中无法将上传的文件移动至错误的解决方法...
- Unity 3D 报错:UnassignedReferenceException: The variable *** of *** has not been assigned.
- 怎么解决allegro单位转换后出现DRC错误
- 网传分享的Wordpressripro主题4.8版本后门分析_盾给网下载修复文件[建站教程]
- psd文件一键瘦身脚本使用详细步骤
- HTTP请求头与响应头
- 计算机设备不可投放,对于电脑显示无法停止通用卷设备,该如何解决
- iOS Safari(浏览器)