如何入手才能更好的理解一个文件系统呢?个人认为首先应该从文件系统在磁盘上的元数据分布入手,其次再看文件系统的软件实现,例如内存中的结构以及元数据操作方式等等。这里我想通过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的文件系统数据恢复,那么我们也需要理解这样一颗文件树,以及数据结构的详细定义。Linux dd备份和恢复CentOS的SELinux相关资讯 ext3 Inode
- EXT3与EXT4的主要区别 (10/12/2014 12:18:46)
- 在UbuntuKylin 13.10上面安装iNode (03/12/2014 08:35:30)
- 在Linux下根据inode删除使用rm删除 (11/27/2012 09:13:07)
| - EXT3文件系统中误删文件的恢复方法 (08/30/2014 06:52:21)
- 无损升级ext3至ext4文件系统 (02/28/2013 16:34:16)
- Linux磁盘空间不足之inode (11/22/2012 15:39:15)
|
本文评论 查看全部评论 (0)