
数据恢复专题:学习 Ext3 文件系统的块位图、inode 位图(16)
前言
本篇将对 Ext3 文件系统的 块位图、i- 节点位图进行分析
知识点总览
-
Ext3 文件系统的块位图分析
-
Ext3 文件系统的 i- 节点位图分析
Ext3 文件系统的块位图分析
Ext3 文件系统以块作为数据存储的基本单位,文件系统中的所有块被分为若干个组,即块组,块的分配情况由该块所在块组的块位图描述。块位图有以下特点:
- 每个块组中都有一个块位图,块位图的地址在该块组的描述符中给出。
- 对于含有超级块、块组描述符表的块组,或含有超级块备份、块组描述符表备份的块组,块位图起始于块组描述符表所在块的下一个块;对于没有超级块备份和块组描述符表备份的块组,块位图起始于该块组的第一个块。
- 在创建文件系统时,操作系统将每个块组包含的块数与每个块包含的位数设置为相等,这使得块位图刚好占用一个完整的块。
- 块位图用于描述本块组所管理的块的分配状态,块位图中的每一位映射本块组中的一个块。如果某个块对应的位没有设置,那么代表该块未分配,可以用于存储数据;否则,代表该块已经存放了数据或者该块不能够使用。
- 因为块位图中的每一位映射本块组中的一个块,所以每个字节映射 8 个块,这 8 个块中的第一个块对应字节中的最低位。例如,块位图中有一个字节为 FEH,换算为二进制等于 11111110,这个值的最低位是 0,就说明其映射的 8 个块中,第一个块是空闲的,其他 7 个块已经使用。
通过块位图的分配情况找到文件的存储位置

上图为 Ext3 文件系统的块位图数据,其中每个字节代表 8 个块,每个块占用 512 字节
由图片中框选的位置可以看出,在 129~131 字节处有数据存储,其数据为 FE FF 1F ,换算为二进制等于 11111110 11111111 00011111
由于这段数据流的第一个字节的表示形式为 1111 1110,所以这八个块中的第一个块没有被使用
故可以推断本块组的第 128 * 8 + 1 = 1,025 块为该段数据的起始,大小为 7 + 8 + 5 = 20 个块
用 1025 * 8 = 8,200 扇区,得到数据的相对本块组的起始位置,从块组起始向后跳转 8200 扇区

可以看到,从块组起始位置向后跳转 8200 扇区,就到达了数据的起始位置,该段数据为某个图片文件

向后跳转 20 * 8 = 160 扇区,向上搜索 !00 即可到达图片文件的结尾标志 FF D9
Ext3 文件系统的 i- 节点位图分析
Ext3 文件系统用 i-节点描述文件的元数据,i-节点的分配情况由该 i-节点所在块组的 i-节点位图描述,i-节点位图有以下特点:
- 每个块组中都有一个 i-节点位图,i-节点位图的地址在该块组的描述符中给出。
- i-节点位图起始于该块组的块位图块后的下一个块。
- 系统分配了一个块来存放 i-节点位图,但实际上 i-节点位图用不完这个块,因为一个块组内 i-节点的实际数量总是小于这一个块能描述的 i-节点数量。
- i-节点位图的实际大小可以通过每组 i-节点数除以 8 计算得到。
-
i-节点位图用于描述本块组所管理的 i-节点的分配状态,i-节点位图中的每一位映射本块组中的一个 i-节点。如果 i-节点位图中相应的位被置 1,代表该 i-节点已经使用;否则表示未用。
-
因为 i-节点位图中的每一位映射本块组中的一个 i-节点,所以每个字节映射 8 个 i-节点,这 8 个 i-节点中的第一个 i-节点对应字节中的最低位。
- i-节点从 1 开始编号,即第一个 i-节点是 1 号 i-节点而不是 0 号 i-节点,所以 i-节点位图的第一个位映射 1 号 i-节点。
评论
评论加载中…