7.1.5 EXT2/EXT3/EXT4 文件的存取与日志式文件系统的功能

如果新建一个文件或目录时,文件系统的处理就要用到block bitmap与inode bitmap。想要新增一个文件,此时文件系统的行为是:

1. 先确定使用者对于欲新增文件的目录是否具有 w 与 x 的权限,若有的话才能新增;

2. 根据 inode bitmap 找到没有使用的 inode 号码,并将新文件的权限/属性写入;

3. 根据 block bitmap 找到没有使用中的 block 号码,并将实际的数据写入 block 中,且更新 inode 的 block 指向数据;

4. 将刚刚写入的 inode 与 block 数据同步更新 inode bitmap 与 block bitmap,并更新superblock 的内容。

一般来说,我们将 inode table 与 data block 称为数据存放区域,至于其他例如 superblock、block bitmap 与 inode bitmap 等区段就被称为 metadata (中介数据) ,因为 superblock,inode bitmap 及 block bitmap 的数据是经常变动的,每次新增、移除、编辑时都可能会影响到这三个部分的数据,因此才被称为中介数据。

数据的不一致 (Inconsistent) 状态

在一般正常的情况下,上述的新增动作当然可以顺利的完成。但是如果有个万一怎么办? 例如你的文件在写入文件系统时,因为不知名原因导致系统中断(例如突然的停电啊、 系统核心发生错误啊~等等的怪事发生时),所以写入的数据仅有 inode table 及 data block 而已,最后一个同步更新中介数据的步骤并没有做完,此时就会发生 metadata 的内容与实际数据存放区产生不一致 (Inconsistent) 的情况了。

既然有不一致当然就得要克服!在早期的 Ext2 文件系统中,如果发生这个问题, 那么系统在重新开机的时候,就会借由 Superblock 当中记录的 valid bit (是否有挂载) 与 filesystemstate (clean 与否) 等状态来判断是否强制进行数据一致性的检查!若有需要检查时则以e2fsck 这支程序来进行的。

日志式文件系统 (Journaling filesystem)

1. 预备:当系统要写入一个文件时,会先在日志记录区块中纪录某个文件准备要写入的信息;

2. 实际写入:开始写入文件的权限与数据;开始更新 metadata 的数据;

3. 结束:完成数据与 metadata 的更新后,在日志记录区块当中完成该文件的纪录。

日志式文件的功能:数据的记录过程中发生了问题,那么系统只要去检查日志记录区块,就可以知道哪个文件发生了问题,针对该问题做一致性的检查,不必对整块filesystem去检查,这样就可以达到快速修复filesystem的能力。

ext3/ext4 是ext2 的升级版本,并且可向下相容 ext2 版本。所以建议直接使用ext4这个filesystem。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

柯西极限存在准则

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

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

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

打赏作者

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

抵扣说明:

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

余额充值