Inode构建的ext3文件树

如何入手才能更好的理解一个文件系统呢?个人认为首先应该从文件系统在磁盘上的元数据分布入手,其次再看文件系统的软件实现,例如内存中的结构以及元数据操作方式等等。这里我想通过ext3在磁盘上的元数据信息来认识一下ext3文件树。

考虑一下,如果想要实现一个文件系统,我们需要在磁盘上存储哪些基本要素?通过何种方式组织起文件与目录之间的关系?如何管理实际的物理资源块?在ext3文件系统中,inode这个数据结构承担了重要角色,组织起了整个ext3文件系统框架。另外,在ext3文件系统中采用物理资源分组管理的办法,并采用bitmap位图信息描述物理块被使用情况。
文件系统在磁盘上的数据分布如下图所示:
 
 

 

 
Ext3采用块组的方式组织所有的物理磁盘空间,superblock和block set description信息可以采用稀疏存储的方式在块组中保存。每个块组中有两个最重要的成员:
1,inode块及其bitmap。Inode Bitmap用于描述这个块组中inode资源块的使用情况,blk for inodes是用来存储inode的资源块。需要分配一个inode时,文件系统需要将对应的bitmap置位。
2,blks块及其bitmap。在每个块组中绝大部分的空间被数据资源块占有,并且采用block bitmap对其使用情况进行描述。需要分配一个资源块时,文件系统需要将对应的bitmap置位。
 
Inode是ext3文件系统的纽带,其采用何种方式将文件系统表述出来的呢? 下图说明了采用inode建立的文件系统树。
 
 

 

 
在ext3文件系统中,必须有一个root inode,该inode在磁盘上的位置是固定的,在文件系统启动的时候,root inode是文件系统的入口。Root inode描述的是一个目录项,即其指向的数据块中存储着目录项。每个目录项会指向下一个inode,如果目录项描述的是一个普通文件,那么下一个inode会分配物理块,并且将文件数据存储到物理块中;如果目录项描述的是下一级目录,那么,下一个inode分配的block中会存储下一级目录的目录项。通过inode和目录项,ext3构建起了一颗庞大的文件树。
 
一旦脑海中拥有以inode为基础的文件树之后,阅读分析ext3的软件实现代码就相对容易了。另外,如果我们想要做ext3的文件系统数据恢复,那么我们也需要理解这样一颗文件树,以及数据结构的详细定义。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值