ext2文件系统简单认识

ext(linux extended file system, ext?fs)。

传统的磁盘与文件系统中,一个分区只能被格式化为一个文件系统,所以可以说一个文件系统就是一个分区。但由于像我们经常听到的LVM(Logical Volume Manager)以及software RAID的新技术的运用,可以将一个分区化为多个文件系统(lvm),也能够将多个分区合为一个文件系统(lvm,raid),所以说我们在格式化时已经不再说成是针对分区来格式化了,通常我们称呼一个可以被挂载的数据为一个文件系统

文件系统如何运行?例如linux操作系统的文件权限与属性、文件的内容这两部分,文件系统通常会将这两部分放在不同的块中。

  • inode:记录文件属性。一个文件对应一个inode,同时记录文件数据所在的block号码
  • block:记录文件数据,若文件太大,会占用多个block
  • superblock:记录文件系统整体信息

ext这种文件系统就是索引文件系统indexed allocation
鸟哥的书上的图很好理解

FAT文件系统并没有inode存在,因此是以链表的形式读取文件
fat
所谓碎片整理就是将同一个文件所属的block汇合在一起。为什么这么做?当然是为了避免磁头来回转圈和机械臂大幅移动损伤磁盘。

linux的ext2文件系统

文件系统已开始就将inode和block规划好了,除非重新格式化,否则不再变动。这时就要考虑inode和block的管理问题。若不加以规划,则不仅数据的添加、删除、修改废时、损伤磁盘,而且文件系统的修复、检查也变得异常困难。基于种种充分的理由,ext文件系统再格式化时基本上是区分为多个块组(block group)

ext2文件系统示意图
如图所示,文件系统最前面有一个启动扇区(boot sector),每个块组中的东西下面一一介绍

1、superblock:如上文所提到的,superblock是记录整个文件系统(虽然每个块组都可能有、但是记录的是整个文件系统!!!)相关信息的地方。它记录的主要信息有

  • block与inode总量
  • 未使用已使用block/inode总量
  • block与inode大小(block分为1、2、4k,inode128bytes)
  • 文件系统挂载时间、最后一次数据写入时间、最近一次检验磁盘(fsck)时间等
  • 一个validbit数值。若此文件系统已被挂载则为0、若未被挂载则为1
  • 当前文件系统状态(在启动时用于检查前一次崩溃)
  • 。。。
    由此可见superblock超级重要。所以会在多个块组中做备份。
    这么做有两个原因:
  1. 如果系统崩溃破坏了超级块,有关文件系统结构和内容的所有信息都会丢失,如果有冗余的副本,该信息是可能恢复的
  2. 通过使文件和管理数据尽可能接近,减少了磁头寻道和旋转,这可以提高文件系统的性能

然而除了第一块组外,备份的数字是多少?为什么非要存在这些块组?计算规则是3 5 和7的幂,这样的块组保存超级块。
超级块的数据缓存在内存中,使得内核不必重复地从硬盘读取数据。
超级块只占一个block

2、组描述符GDT:包含的信息反映了文件系统中各个块组的状态,例如,块组中空闲块和inode的数目,每个块组都包含了文件系统中所有块组的组描述符信息。
然而当我用dumpe2fs查看时,发现有的有没有。而经过http://blog.chinaunix.net/uid-24774106-id-3266816.html?page=2这篇文章的分析,可见所有的gdt都是一样的

3、reserved gdt:用于将来扩展文件系统

4、数据位图inode bitmap:记录使用与被使用的inode号码

5、block bitmap:同上

6、inodetable:
图最左侧为inode本身
12个直接指向与间接、双间接、三间接指向

7、datablock不用解释

与目录树的关系
在Linux文件系统下,不管一般文件还是目录文件都要占用一个inode。那么目录与文件在ext2文件系统中是如何记录数据的呢?
  • 目录:创建时分配1个inode和若干block。inode记录文件权限、属性,block记录在这个目录下的文件名与占用的inode号码数据。
  • 文件:类似。block装实际数据。

目录树的读取:由inode检查权限,指向block,block再指向inode,递归到底。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值