【Linux系统】Linux EXT2文件系统

EXT2是Linux的一种文件系统,它将磁盘划分为Blockgroup进行管理,每个Blockgroup包含Superblock、GroupDescriptionTable、Blockbitmap、Inodebitmap、Inodetable和DataBlocks。Superblock存储文件系统信息,Inode表记录文件属性和数据位置。Block和inode的大小在格式化后固定,文件大小决定了占用的Block数量。EXT3和EXT4在其基础上扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0 引言

我们知道,磁盘是用来存储文件的,但是必须要把磁盘格式化为某种格式才能进行存储。文件系统的目的就是组织和管理磁盘文件。在Linux系统中,最常见的是EXT2的文件系统。(EXT2:第二代扩展文件系统(英语:second extended filesystem,缩写为 ext2)。后来又发展出EXT3和EXT4。但是其核心设计并未发生变化,我们这里以EXT2作为演示。

1 基本结构

因为磁盘大小一般是很大的,如果我们一下子将文件的内容和属性进行管理,在使用时可能会非常麻烦,所以EXT2文件系统在格式化的时候一般会包含多个区块群组(如下图的Block group 0,Block group1…),以此进行管理。
在这里插入图片描述

1.1 Block group

对于EXT2文件系统来说,硬盘分区首先被分割为一个个的逻辑块(Block),每个Block就是实际用来存储数据的单元,大小相同,Block按照0,1,2,3的顺序编号。EXT2文件系统支持的Block的大小有1024字节,2048字节4096字节,Block的大小在创建文件系统的时候可以通过参数指定。

EXT2的文件系统主要有以下特点:
1.Block的大小与数量在格式化后就不能再改变了(除非重新格式化)。
2.每个Block内最多只能放置一个文件数据。
3.如果文件大于一个Block的大小,则会占用多个Block。
4.如果文件小于一个Block的大小,则剩余的容量不能再使用了。

1.2 Boot group

每个磁盘分区的开头 1024 字节大小都预留为分区的启动扇区,存放引导程序和数据,所以又叫引导块。引导块在第一个 Block,即 Block 0 中存放,但是未必占满这个 Block,原因是 Block 的大小可能大于 1024 字节。

这里是存放开机管理程序的地方,这是个非常重要的设计。因为这样使得我们能够把不同的开机管理程序安装到每个文件系统的最前端,而不用覆盖整颗磁盘唯一的 MBR,这样就能支持多系统启动了。

2 Block group 的组成

如上图所示,每个 Block Group 都由下面几个组成部分:

Superblock(超级块)
Group Description Table(组描述符)
Block bitmap(块位图)
Inode bitmap(inode 位图)
Inode table(inode 表)
Data Blocks(数据块)

2.1 Superblock(超级块)

存放文件系统本身的结构信息。记录的信息主要有:bolck 和 inode的总量,
未使用的block和inode的数量,一个block和inode的大小,最近一次挂载的时间,最近一次写入数据的时间,最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏,可以说整个文件系统结构就被破坏了

之所以不把Superblock单独作为一个块放到外面,是因为这个块非常重要,一旦损坏,文件就很难恢复。所以后面几乎每个block group 都包含Superblock。

2.2Group Description Table(组描述符)

Group Description Table 用来描述每个 group 的开始与结束位置的 block 号码,以及说明每个块(superblock、bitmap、inodemap、datablock) 分别介于哪一个 block 号码之间。

2.3 Block bitmap(块位图)

Block Bitmap中记录着Data Block中哪个数据块已经被占用,哪个数据块没
有被占用。

2.4 Inode bitmap(inode 位图)

inode bitmap 与 block bitmap 的功能类似,只是 block bitmap 记录的是使用与未使用的 block 号,而 inode bitmap 则记录的是使用与未使用的 inode 号。

2.5 Inode table(inode 表)

node table 中存放着一个个 inode,inode 的内容记录文件的属性以及该文件实际数据是放置在哪些 block 内,inode 记录的主要的文件属性如下:

该文件的读写权限(rwx)
该文件的拥有者和所属组(owner/group)
该文件的容量
该文件的 ctime(创建时间)
该文件的 atime(最近一次的读取时间)
该文件的 mtime(最近修改的时间)
该文件的特殊标识,比如 SetUID 等
该文件真正内容的指向(pointer)
inode 的数量与大小也是在格式化时就已经固定了的,另外 inode 还有如下特点:

每个 inode 大小均固定为 128 Bytes(新的 ext4 为 256 Bytes)
每个文件都仅会占用一个 inode
文件系统能够创建的文件数量与 inode 的数量相关
系统读取文件时需要先找到 inode,并分析 inode 所记录的权限与使用者是否符合,若符合才能够开始读取 block 的内容

2.6 Data Blocks(数据块)

Data block 是用来存放文件内容的地方,Ext2 文件系统有1K、2K 和 4K 大小的 block。在格式化文件系统时 block 的大小就确定了,并且每个 block 都有编号。需要注意的是,由于 block 大小的差异,会导致文件系统能够支持的最大磁盘容量和最大单个文件的大小并不相同。

3.总结

以上就是Linux EXT2文件系统的基本结构,其EXT3和EXT4基本核心结构也是基于EXT2增强的,有兴趣的小伙伴可以去了解一下。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fun gun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值