如何在ext2文件系统中找到一个文件_第1页
如何在ext2文件系统中找到一个文件_第2页
如何在ext2文件系统中找到一个文件_第3页
如何在ext2文件系统中找到一个文件_第4页
如何在ext2文件系统中找到一个文件_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、主要内容 Ext2粗略描述 详细的布局情况 目录结构一、Ext2粗略描述 1.1 简介 1.2 block group 1.3 inode 1.4 总结1.1 简介 The Second Extended File System(ext2)文件系统是linux系统中的标准文件系统 对于ext2文件系统, 磁盘首先被划分为一个个block, 每个block大小是相同的, 一般为1kByte或4kByte, 这些block被聚在一起分成几个大的block group, 每个group中的block数量是固定的1.2 block group 每个block group都对应一个group descr

2、iptor, 这些group descriptor被聚集在一起放在磁盘分区的开头部分, 这个descriptor当中有几个重要的block指针block bitmap、Inode bitmap、Inode table Block bitmap: 块位图, 大小1个block, 每个bit表示一个block使用情况, 如果该bit为1表示这个block中有数据, 为0表示该block是空闲的假设一个block大小为4096Byte, 则bitmap可以表示block的个数为8*4096, 则一个blodk group大小为8*4096*4096Byte Inode bitmap: 索引节点位图,

3、 大小1个block, 与block bitmap类似, 每个bit对应一个inode, inode对应于文件系统上的一个文件或目录 Inode table: 索引节点表, 为block group中所聚集到的全部inode放在一起形成的, 大小n个block 1.3 Inode 在ext2文件系统中, 文件由inode进行唯一标识。一个文件可能对应多个文件名, 只有在所有文件名都被删除后, 该文件才会被删除。此外, 同一文件在磁盘中存放和被打开时所对应的inode是不同的, 这内核负责同步 一个inode当中记载最关键的信息是这个inode中的用户数据存在什么地方, 一个inode通过提供一

4、些列的block指针来回答这个问题, 这些block指针指向的block里面就存放了文件本身的内容1.4 总结 总结一下, 一个磁盘首先被划分为多个block. 这些block聚集在一起, 被分成几组, 也就是block group. 每个block group都有一个group descriptor. 所有这些descriptor被聚在一起放在磁盘分区开头部分, 跟在super block的后面. 从group descriptor我们可以通过block指针找到这个block group的inode table和block bitmap等信息. 从inode table里面, 可以看到一个个

5、的inode. 从一个inode里面的block指针, 就可以找到文件本身真实数据内容 二、Ext2详细布局2.1 Super Block 文件系统超级块, 大小1个block, 记录分区的整体信息 Super block从1024个Byte开始(root block大小固定1024Byte), 占用有效空间是1024Byte, 实际使用1个block存储, 每个组的开头都有一份super block的copy s_log_block_size: 这个字段算出block大小, 为0 则block大小1024, 为1 则block大小2048, 为2 则block大小4096 s_blocks_

6、count: 记录硬盘分区上的block总数 s_blocks_per_group: 记录每个group中block数量 s_inodes_per_group: 每个group中inode 数量2.2 GDT 组描述符表, 大小n个block 每个组都有自己的组描述符(32Byte), 所有的组描述符组合在一起形成了组描述符表(GDT) 一块硬盘分区上有多少block group或者有多少个group descriptors?super block中s_blocks_count记录硬盘分区上的block总数, s_blocks_per_group记录每个group中block数量 /* * S

7、tructure of a blocks group descriptor */struct ext2_group_desc _le32 bg_block_bitmap; /* Blocks bitmap block */ _le32 bg_inode_bitmap; /* Inodes bitmap block */ _le32 bg_inode_table; /* Inodes table block */ _le16 bg_free_blocks_count; /* Free blocks count */ _le16 bg_free_inodes_count; /* Free inod

8、es count */ _le16 bg_used_dirs_count; /* Directories count */ _le16 bg_pad; _le32 bg_reserved3; ;3.3 inode & inode table 关于每个文件都有一个文件属主、文件权限、时间戳、连接计数等信息,这些保存在inode中 文件系统完成一个文件逻辑块到设备逻辑块的转换,这个转换信息保存在inode中 以上两种信息组成一个inode代表一个文件 为了方便管理,通常把inode组织成一个inode表,而后用inode在此表中的索引来代表一个inode,因此一个inode号代表一个文件 硬盘格式

9、化后, 硬盘上的数据块和索引节点数量就确定下来, 是一个固定值, 只要存放文件就会占用数据块和索引节点 关于索引节点中的i_blockEXT2_N_BLOCKSExt2_N_BLOCKS字段保存了文件在数据块中的具体位置, 通常该值为15, 此字段i_block0i_block11是直接保存数据块的地址, i_block12i_block14分别是一级 二级 三级指针, 这样的索引节点指向的文件大小可以非常大但实际上该结构中i_size字段限制了索引节点指向文件的大小, 该字段是32位无符号整数, 所以最大文件只能是4G 有inode号, 怎么读取这个inode中的用户数据?先获取该group

10、的group descriptor, 从该descriptor中找到该group中的inode table, 再从inode table中找到第几个inode, 获取inode节点信息后 就可以读取inode中的用户数据了一、Ext2目录结构 linux中目录也是一种文件, 目录内容保存着其它文件或目录的名称和索引节点, 至少一个数据块给该目录 现在我们可以读取inode的内容了, 再往后我们将要读取文件系统上的文件和目录的内容, 目录是一种特殊的文件, 这个文件按照固定的格式记录了目录中有哪些文件, 以及他们的名字和inode号数等待struct ext2_dir_entry_2 _le32 inode; _le16 rec_len; _u8 name_len; _u8 file_type; char nameEXT2_NAME_LEN; ;Inode为0代表无效目录/文件rec_len: 下一个有效目录项的地址它是偏移量,与目录项的起始地址相加就得到下一个有效目录

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论