Inode构建的ext3文件树 - 面向对象网,存储技术,nosql,学习,对象 - 面向对象技术开发

面向对象技术开发

会员投稿 投稿指南 站长资讯通告:
您的位置: 首页 > 计算机相关技术 > 存储技术 > 正文

Inode构建的ext3文件树

来源: www.bianceng.cn 阅读:

如何入手才能更好的理解一个文件系统呢?个人认为首先应该从文件系统在磁盘上的元数据分布入手,其次再看文件系统的软件实现,例如内存中的结构以及元数据操作方式等等。这里我想通过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的文件系统数据恢复,那么我们也需要理解这样一颗文件树,以及数据结构的详细定义。

本文出自 “存储之道” 博客,请务必保留此出处http://alanwu.blog.51cto.com/3652632/1092313

查看本栏目更多精彩内容:http://www.bianceng.cn/database/storage/

Tags:
相关文章列表: