浅谈Linux的EXT2文件系统

每个操作系统都有自己独特管理文件的方式我们来谈谈Linux的EXT2文件系统
1. 关键字
首先要知道的是三个关键字,inode、block、superblock,inode 的内容在记录档案的权限与相关属性, block 区块则是在记录档案的实际内容,而superblock是用来管理inode和block的。
2. 如何进行文件管理
文件系统一开始就把inode和block规划好了,由于现在的硬盘容量较大,管理起来必须有策略,为了能方便管理,EXT2文件系统在格式化的时候基本上是区分多个区块群组,每个区块群组都有自己独立的inode\block\superblock系统。就像兵营的分级一样,一个营里面分成数个连,每个连有自己的联络系统,但最终都向营部回报连上最正确的信息。在整体规划当中,文件系统最前面有个启动扇区,这个扇区可以安装开机管理程序,如此一来我们就能将不同的开机管理程序安装到个别的文件系统的最前端,而不用覆盖整个硬盘唯一的MBR,这样也才能制作出多重引导的环境!
EXT2文件系统如图
EXT2文件系统图
3. 区块的作用
a.data block
data block 是用来放置档案内容数据地方,在 Ext2 文件系统中所支持的block 大小有 1K, 2K 及 4K 三种而已。在格式化时 block的大小就固定了,且每个 block 都有编号,以方便 inode 的记录啦。不过要注意的是,由亍 block 大小的差异,会导致该文件系统能够支持的最大磁盘容量不最大单一档案容量并不相同。 因为 block 大小而产生的 Ext2 文件系统限制如下:

block大小1kb2kb4kb
最大单一档案限制16GB256GB2TB
最大系统容量2TB8TB16TB

- block的数量在格式化之后不能改变(除非重新格式化)
- 每个block内最多只能放置一个档案的数据
- 如果档案大于一个block的大小,则一个档案会占用多个block的数量
- 若档案小于一个block的大小,则该block的剩余容量不能再利用了,造成浪费
b. inode table(inode 表格)
inode记录档案的属性以及该档案实际是放在哪几号block中,inode中的数据如下
- 该档案的存取模式(read/write/excute);
- 该档案的拥有者与群组(owner/group);
- 该档案的容量;
- 该档案建立或状态改发的时间(ctime);
- 最近一次的读时间(atime);
- 最近修改的时间(mtime);
- 定义档案特性的旗标(flag),如 SetUID…;
- 该档案真正内容的指向 (pointer);
inode的其他属性
- 每个 inode 大小均固定为 128 bytes;
- 每个档案都仅会占用一个 inode 而已;
- 因此文件系统能够建立的档案数量与inode 的数量有关;
- 系统读取档案时需要先找到 inode,并分析 inode 所记录的权限与用户是否符合,若符才能够开始实际读取block的内容。
由于inode只有128B,而记录一个block就需要4B,假设一个档案有400MB且每个block为4KB 时,那么至少也要十万笔block号码的记录!所以需要优化处理,EXT2将inode记录的block号码的区域定义为12个直接,一个间接,一个双间接与一个三间接的记录区
inode的优化
c. Superblock(超级区块)
Superblock 是记录整个 filesystem 相关信息的地方, 没有 Superblock ,就没有这个 filesystem 了。他记录的信息主要有:
- block与inode的总量;
- 未使用与已使用的inode / block 数量;
- block与inode的大小 (block 为 1, 2, 4K,inode 为 128 bytes);
- filesystem的挂载时间、最近一次写入数据的时间、最近一次检验磁盘 (fsck) 癿时间等文件系统的相关信息;
- 一个 valid bit 数值,若此文件系统已被挂载,则 valid bit 为 0 ,若未被挂载,则 valid bit 为 1 。
d. Filesytem Description(文件系统描述说明)
这个区段可以描述每个block group的开始与结束,以及说明每个区段 (superblock, bitmap, inodemap, data block) 分别介于哪一个 block 号码之间
e. block bitmap (区块对照表)
如果你想要新增档案时总会用到 block 吧!那你要使用那个 block 来记录呢?当然是选择『空的 block 』来记录新档案的数据啰。 那你枚举知道那个 block 是空的?这就得要透过 block bitmap的辅助了。从 block bitmap 当中可以知道哪些 block 是空的,因此我们的系统就能够很快速的找到可使用的空间来处置档案啰。 同样的,如果你删除某些档案时,那举那些档案原本占用的block 号码就得要释放出来, 此时在 block bitmpap 当中相对应到该 block 号码的标志就得要修改成为『未使用中』啰!这就是 bitmap 的功能。
f. inode bitmap (inode 对照表)
这个其实与 block bitmap 是类似的功能,叧是 block bitmap 记录的是使用于未使用的block号码, 至于inode bitmap 则是记录使用与未使用的inode 号码啰!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值