linux的Ext2文件系统(序)

inode table(inode表格)
我们再来讨论一下inode这个玩意儿吧。如前面所所描述inode的内容在记录档案的属性以及该档案的实际数据是放置在那几号block中。基本上,inode记录的数据至少有底下这些:

  1. 该档案的存取模式(read/write/execute);
  2. 该档案的拥有着与群组(owner/group);
  3. 该档案的容量;
  4. 该档案建立或者状态改变的时间(ctime);
  5. 最近一次读取的时间(atime);
  6. 最近修改的时间(mtime);
  7. 定义档案特性的旗帜(flag),如SetUID;
  8. 该档案真正内容的指向(pointer);

inode的数量与大小也是在格式化的时候就已经固定了,除此之外inode还有那些特色呢?

每个inode大小均固定为128bytes;
每个档案都会占用一个inode而已;
因此文件系统能够建立的档案数量与inode数量有关;
系统读取档案时需要先找到inode,并分析inode所记录的权限与用户是否相符,若符合才能够读取block的内容;

我们简约来分析一下inode与blcok与档案大小的关系好了。inode要记录的数据非常多,但偏偏只有128bytes而已,而inode记录一个block号码要花掉4bytes,假设我有一个档案有400MB且每个block为4K时,那么至少也要十万笔block号码的记录呢!inode哪有那么多可记录的信息?为此,我们系统很聪明的将inode记录block号码的区域定义为12个直接,一个间接,一个双间接与一个三间接记录区。

这里写图片描述

上图最左边为inode本身(128bytes),里面有12个直接指向block号码的对照,这12组记录就能够直接读取block号码啦!至于所谓的间接就是再拿一个block来当作记录block号码的记录区,如过档案太大的时候,就会使用间接的block来记录编号。如上图当中间接只是拿一个block来记录额外的号码而已。同理,如果档案持续增大,那么就会利用所谓的双间接,第一个block仅指出下一个记录编号的block在那里,实际记录的在第二个block当中。

这样子inode能够指定多少个block呢?我们以较小的1K block来说明好了,可以指定的情况下:

12个直接指向:12*1K=12K
间接 :256*1K = 256K;
双间接 : 256*256*1K;
三间接:256*256*256*1K;
总额 : 12+256+256*256+256*256*256 = 16G;

Superblock(超级区块)

Superblock是记录整个filesystem相关信息的地方,没有superblock,就没有filesystem了。它记录的信息主要有:

block与inode总量;
未使用与已经使用的inode/block数量;
block与inode的大小;
filesysytem的挂载时间/最近一次写入数据的时间,最近一次检验磁盘的时间等文件系统的相关信息;
一个valid bit数值,若此文件系统已经被挂载,则walid bit为0;若未被挂载,则valid bit为1。

Superblock是非常重要的,因为我们这个文件系统的基本信息都写在这里,因此,如果superblock死掉了,你的文件系统可能就需要花费很多时间去挽救了。一般来说,superblock的大小为1024bytes。

此外,每个block group都可能含有superblock的。但是我们也说一个文件系统因该仅有一个superblock而已,那是怎么会事?事实上除了第一个block group 内会含有superblock之外,后续的block group不一定含有superblock,而若有superblock则该superblock主要是第一个block group内superblock备份,这样可以进行superblock的救援。

Filesystem Description(文件系统描述说明)

这个区段可以描述每个block group的开始与结束的block号码,以及说明每个区段(superblock,bitmap,inodemap,data block)分别介于哪一个block号码之间。这部分也能用dumpe2fs来观察的。

block bitmap(区块对照表)

如果你想新增档案时总会用到block那你要使用那个block来记录呢?当然时选择空的block来记录新档案的数据了。那你怎么知道那个block是空的呢?这就是要透过block bitmap的辅助了。从block bitmap当中你可以知道那些block是空的,因此我们的系统就能够很快的找到可用的空间来处置档案了。

同样的,如果你删除某些档案时,那么那些档案原本占用的block号码就的要释放出来了,此时在block bitmap当中相应到block号码的标志就的要修改成未使用中的罗。

inode bitmap(inode 对照表)

这个其实与block bitmap时类似的功能,只是block bitmap记录的是使用与未使用的block号码,至于inode bitmap则是记录使用与未使用的inode号码罗。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值