`
lobin
  • 浏览: 425995 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ext2

 
阅读更多

关于ext文件系统版本

ext文件系统现在已经有好几个版本,包括ext2,ext3以及ext4。实际上还存在ext 0.x,1.x,2.x,3.x,4.x等版本。

 

另外在ext文件系统的超级快中有两个关于版本的字段:小版本和主版本。我们说的ext2, ext3,以及ext4和这里的主次版本并不是一一对应的关系,也就是说并不是ext2它的主版本就是2. 这里主要讲讲ext2文件系统。

 

关于块,我们在上面已经有过介绍。关于块的大小计算,我们还需要先介绍下超级块,在前面我们已经介绍过超级块,它其实也是一种块。

 

每个块都有一个编号,从0开始,0,1,2,3,...。

 

块编号和物理块地址

块编号只是ext文件系统为每一个块分配的一个编号,物理块地址是快在磁盘上的物理地址,它们通常并不是一一对应的。

 

超级块

超级块存放在卷(volume)开始的第1024字节(1K)位置,如果扇区为512字节大小的话(一个扇区通常为512字节),那么超级块就存放在卷(volume)开始的第3个扇区。

 

超级块大小为1024字节(1K)。

 

                     |----超级快------|

     0         1   v                   v

+--------+--------+--------+--------+

+--------+--------+--------+--------+

     0         1        2        3

 

超级块中记录了ext文件系统中的很多重要数据。包括基础字段和扩展字段,基础字段是ext2中所有版本都会有的字段。记住,这里是ext2,不是所有的ext文件系统。扩展字段只存在于主版本大于等于1的ext文件系统中。

 

基础字段

0-3:文件系统中inode总数

4-7:文件系统中块的总数

8-11:为超级用户预留的块的个数。

12-15:未分配块的总数

16-19:未分配inode的总数

20-23:超级块的块号

24-27:log2 (block size) - 10,用于计算块大小

28-31:log2 (fragment size) - 10,用于计算片段(fragment)大小

32-35:每个块组中块的个数。

36-39:每个块组中fragment的个数

40-43:每个块组中inode的个数

44-47:文件系统(分区)最后挂载时间

48-51:文件系统(分区)最后写入时间

52-53:自从最后一次一致性检查这个文件系统(分区)挂载的次数。

54-55:在进行多少次挂载之后必须执行一致性检查。

56-57:ext2签名标识(0xef53)

58-59:文件系统状态。1:File system is clean,2:File system has errors

60-61:当检测到出错时执行的操作。1:Ignore the error (continue on),2:Remount file system as read-only,3:Kernel panic

62-63:小版本

64-67:最近一次一致性检查时间

68-71:强制进行一致性检查的时间周期

72-75:os id。0:Linux,1:GNU HURD,2:MASIX (an operating system developed by Rémy Card, one of the developers of ext2),3:FreeBSD,4:Other "Lites" (BSD4.4-Lite derivatives such as NetBSD, OpenBSD, XNU/Darwin, etc.)

76-79:主版本

80-81:允许使用保留块的用户id

82-83:运行使用保留块的用户组id

 

以下是扩展字段

84-87:文件系统中第一个非预留的inode

88-89:inode大小,如果是1.0以前的版本(versions < 1.0),该字段固定为11。

90,  2, 超级快(快照)存在的块组

92,  4, 可选功能

96,  4, 必选功能

100,  4, 指定一些功能,如果这些功能不支持,在挂载的时候必须是只读的

104, 16, 文件系统id

120, 16, 卷名

136, 64, 卷最后挂载的路径

200,  4, 压缩算法

204,  1, 给文件预分配的块的个数

205,  1, 给目录预分配的块的个数

206,  2, 未使用

208, 16, 日志id

224,  4, 存放日志的inode

228,  4, 存放日志的设备

232,  4, 孤儿(orphan)inode列表的头部

236,788, 剩余的788字节未使用

 

块的大小计算

fx = log2 (block size) - 10

这里fx为超级块中第24个字节开始的4字节,block size为块大小

 

所以:

block size = 2 的(fx + 10)次方

 

片段(fragment)大小计算

片段(fragment)大小计算和块的大小计算公式一样,片段(fragment)的大小计算需要依据超级块中的第28个字节开始的4字节。

 

fx = log2 (fragment size) - 10

这里fx为超级块中第28个字节开始的4字节,fragment size为片段(fragment)的大小

 

所以:

fragment size = 2 的(fx + 10)次方

 

块组

块组并没有编号,通过块组描述符表(Block Group Descriptor Table)中的块组描述符表项进行索引找到对应的块组。

 

块组个数

文件系统中划分了多少个块组可以通过超级快中的这几个字段计算出来:

1、超级块中第4个字节开始的4字节(Total number of blocks in file system)

2、超级块中第32个字节开始的4字节(Number of blocks in each block group)

3、超级块中第0个字节开始的4字节(Total number of inodes in file system)

4、超级块中第40个字节开始的4字节(Number of inodes in each block group)

 

1:n1 = Rounding up(total_block_num / block_num_per_block_group)

2:n2 = Rounding up(total_inode_num / inode_num_per_block_group)

3:检查这两个值是否一致。

 

块组描述符表

块组描述符表(Block Group Descriptor Table)就是一组块组描述符,ext通过块组描述符来描述一个块组,有多少个块组,块组描述符表中就有多少个表项(块组描述符),所以上面计算的块组的个数,在这里也可以认为块组描述符表中有多少个表项。

 

块组描述符表存放在超级快(Superblock),也就是说超级块后面紧跟着的是块组描述符表。如果块大小为1024字节(1K),那么块组描述符表从2号块开始;如果块大小不是1024字节(1K),那么块组描述符表从1号块开始。

 

 Block Group Descriptor Table

+----------------------------+

|   Block Group Descriptor   |

+----------------------------+

|   Block Group Descriptor   |

+----------------------------+

|          ... ...           |

+----------------------------+

|   Block Group Descriptor   |

 

+----------------------------+

 

块组描述符

块组描述符包含块组中重要数据信息的存放位置。

 

    Block Group Descriptor

+----------------------------+

|     块使用位图的块地址     |

+----------------------------+

|   inode使用位图的块地址    |

+----------------------------+

|    inode表的起始块地址     |

+----------------------------+

|    块组中未分配块的个数    |

+----------------------------+

|  块组中未分配inode的个数   |

+----------------------------+

|       块组中目录个数       |

+----------------------------+

|          保留未用          |

+----------------------------+

 

 

0-3:块使用位图的块地址

4-7:inode使用位图的块地址

8-11:inode表的起始块地址

12-13:块组中未分配块的个数

14-15:块组中未分配inode的个数

16-17:块组中目录个数

18-31:保留未用。

 

inode表

 

inode

 

inode也没有编号,inode有个inode地址,其实就是一个数字,其实也跟编号差不多了。inode地址从1开始。。。所以,我们说:

 

inode 3

 

指的是inode地址为3的那个inode。

ext2主版本为1以前的版本中,inode 1到10是预留的并且应该处于分配状态。主版本从1开始,也会有预留的inode,具体预留多少个inode,由超级块中第84个字节开始的4字节(文件系统中第一个非预留的inode)决定。也就是说超级块中第84个字节开始的4字节(文件系统中第一个非预留的inode)指明了有多少个预留的inode,这个字段在ext2主版本为1以前的版本中固定为11,也正好和上面说明的一致。

 

在这些预留的inodes中,inode 2主观上具有特定的意义,因为它用于根目录。

 

根目录的inode地址总是为2。

 

ext2主版本为0的版本,inode大小固定为128字节。ext2主版本为1的版本,inode大小由超级块中第88个字节开始的2字节(inode大小)决定。

 

inode表中的所有inode只属于对应的块组

 

如何确定inode在哪个块组中

block group = (inode - 1) / (每个块组中inode的个数:超级块中第40个字节开始的4字节

 

如何在块组中查找inode

首先确定inode在块组中inode表中的索引:

index = inode - 1) (每个块组中inode的个数:超级块中第40个字节开始的4字节

 

第二步:根据索引计算存放inode的块号

block = (index * INODE_SIZE) /  BLOCK_SIZE

 

最后,根据需要, 进行掩码和移位操作,从包含块中提取inode数据。

 

inode结构

0-1:类型和权限信息。其中高4位表示类型信息,低12位表示权限信息。

2-3:用户id

4-7:文件大小的低32位

8-11:最近访问时间

12-15:创建时间

16-19:最近修改时间

20-23:删除时间

24-25:用户组id

26-27:该inode的hard连接数

28-31:该inode使用的扇区数

32-35:标志

36-39:Operating System Specific value #1

40-43:直接块指针0

44-47:直接块指针1

48-51:直接块指针2

52-55:直接块指针3

56-59:直接块指针4

60-63:直接块指针5

64-67:直接块指针6

68-71:直接块指针7

72-75:直接块指针8

76-79:直接块指针9

80-83:直接块指针10

84-87:直接块指针11

88-91:单重(Singly)间接块指针

92-95:双重(Doubly)间接块指针

96-99:三重(Triply)间接块指针

100-103:第几代

104-107:对于Ext2,如果是版本0,该字段保留,version >= 1:扩展属性快

108-111:对于Ext2,如果是版本0,该字段保留,version >= 1:如果是文件表示文件大小的高32位,如果是目录表示目录ACL。

112-115:fragment的块地址

116-127:Operating System Specific Value #2

 

类型和权限

类型

Type    Type Description

0x1000FIFO

0x2000Character device

0x4000Directory

0x6000Block device

0x8000Regular file

0xA000Symbolic link

0xC000Unix socket

 

权限

Permission Permission   Permission Description

(hex)      (octal)

0x001   00001Other—execute permission

0x002   00002Other—write permission

0x004   00004Other—read permission

0x008   00010Group—execute permission

0x010   00020Group—write permission

0x020   00040Group—read permission

0x040   00100User—execute permission

0x080   00200User—write permission

0x100   00400User—read permission

0x200   01000Sticky Bit

0x400   02000Set group ID

0x800   04000Set user ID

 

文件

文件类型

这里的文件类型不像windows那样的文本文件,exe文件,图片文件等这种类型,也不是像windows那样通过文件扩展名来区分文件类型。在linux中,一切皆文件。包括目录,设备,socket等一切都是文件。

 

这里的文件类型是指在inode中有个inode type indicator,它用于指定对应文件是哪种类型的文件。包括:

Type    Type Description

0x1000FIFO

0x2000Character device

0x4000Directory

0x6000Block device

0x8000Regular file

0xA000Symbolic link

0xC000Unix socket

在这里类型中,我们比较常见的有Regular file,Directory,Symbolic link,然后就是Character device,Block device,最后就是Unix socket。FIFO这种没注意过。

 

目录

在linux中,目录也是一种文件。和其他所有文件系统一样,目录中可以存放文件。在ext中,目录也和文件一样,有它的inode,以及数据块,和文件不一样的是,数据块中存放的不是文件数据,而是存放一组目录项,每个目录项主要就是一个该目录下对应文件的文件名和该文件的inode的键值对。

 

目录项

0-3:文件inode

4-5:该目录项的总大小

6:名称长度最低8位

7:类型

8-8+N-1:文件名

 

这里先通过mkfs.ext2工具来格式化生成ext文件系统进行分析看看

 

先生成一张空盘:

# dd if=/dev/zero of=ext2-64k bs=1K count=64

64+0 records in

64+0 records out

65536 bytes (66 kB) copied, 0.00900126 s, 7.3 MB/s

 

格式化为ext2格式的文件系统:

# mkfs.ext2 ext2-64k 

mke2fs 1.41.12 (17-May-2010)

ext2-64k is not a block special device.

Proceed anyway? (y,n) y

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

16 inodes, 64 blocks

3 blocks (4.69%) reserved for the super user

First data block=1

1 block group

8192 blocks per group, 8192 fragments per group

16 inodes per group

 

Writing inode tables: done                            

Writing superblocks and filesystem accounting information: done

 

This filesystem will be automatically checked every 26 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

 

这里我们就格式化了一张ext2格式文件系统的盘

 

现在我们挂载到一个目录上去:

# cp -rf ext2-64k ext2-64k-emtpy

# mkdir tmpfs

# mount -t ext2 ext2-64k-emtpy tmpfs/ -o loop

 

进去看下里边有什么内容:

# cd tmpfs/

# tree .

.

└── lost+found

 

1 directory, 0 files

默认里边只有一个lost+found的目录。

 

# umount tmpfs

 

off, size, 

块0

0,   1024,  not used

 

块1

超级块

1024,1024,

 

 

1024,   4,  文件系统中inode的总个数

1028,   4,  文件系统中block的总个数

1032,   4,  预留给超级用户(superuser)的块的个数。

1036,   4,  未分配块的总个数

1040,   4,  未分配inode的总个数

1044,   4,  包含超级块的块编号

1048,   4,  log2 (block size) - 10。通过它可以计算出块大小。 block size: 2的10次方(2014)

1052,   4,  log2 (fragment size) - 10。通过它可以计算出片段(fragment)大小。

1056,   4,  每个块组中块的个数

1060,   4,  每个块组中片段(fragment)的个数

1064,   4,  每个块组中inode的个数

1068,   4,  最近一次挂载时间

1072,   4,  最近一次写入时间

1076,   2,  自上一次一致性检查后挂载的次数

1078,   2,  在进行多少次挂载之后必须执行一致性检查

1080,   2,  ext2签名标识(0xef53)

1082,   2,  文件系统状态。

1084,   2,  当检测到出错时执行的操作

1086,  2, 小版本  这里是0

1088,  4, 最近一次一致性检查时间

1092,  4, 强制进行一致性检查的时间周期

1096,  4, os id

1100,  4, 主版本  这里是1

1104,  2, 允许使用保留块的用户id,也就是上面的超级用户(superuser)的用户id

1106,  2, 允许使用保留块的用户组id,也就是上面的超级用户(superuser)的用户组id

 

1108,  4, 文件系统中第一个非预留的inode,如果是1.0以前的版本(versions < 1.0),该字段固定为11。  这里是11

1112,  2, inode大小,如果是1.0以前的版本(versions < 1.0),该字段固定为128。  这里是128

1114,  2, 超级快(快照)存在的块组

1116,  4, 可选功能

1120,  4, 必选功能

1124,  4, 指定一些功能,如果这些功能不支持,在挂载的时候必须是只读的

1128, 16, 文件系统id

1144, 16, 卷名

1160, 64, 卷最后挂载的路径

1224,  4, 压缩算法

1228,  1, 给文件预分配的块的个数

1229,  1, 给目录预分配的块的个数

1230,  2, 未使用

1232, 16, 日志id

1248,  4, 存放日志的inode

1252,  4, 存放日志的设备

1256,  4, 孤儿(orphan)inode列表的头部

1260,788, 剩余的788字节未使用

 

块2

Block Group Descriptor Table

2048,1024,

 

2048,   4,  块使用位图的块地址, 03 00 00 00, 0x03(3)

2052,   4,  inode使用位图的块地址, 04 00 00 00, 0x04(4)

2056,   4,  inode表的起始块地址, 05 00 00 00, 0x05(5)

2060,   2,  块组中未分配块的个数, 2B 00, 0x2b(43)

2062,   2,  块组中未分配inode的个数, 05 00, 0x05(5)

2064,   2,  块组中目录个数, 02 00, 0x02(2)

2066,   14, (Unused). 04 00 00 00 00 00  00 00 00 00 00 00 00 00

2080,   992, (Unused)

 

块3

存放块使用位图的块

3072(0xc00), 1024,

FF FF 0F 00 00 00 00 80  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

 

块4

存放inode使用位图的块

4096, 1024

FF 07 FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF

 

块5

inode表的起始块

5120(0x1400),

第0个inode index

5120,128,

00 00 00 00 00 00 00 00  E1 83 CF 5D E1 83 CF 5D

E1 83 CF 5D 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

 

5120, 2, 类型和权限,00 00, 

第1个inode index

5248,128,

ED 41 00 00 00 04 00 00  E1 83 CF 5D E1 83 CF 5D

E1 83 CF 5D 00 00 00 00  00 00 03 00 02 00 00 00

00 00 00 00 00 00 00 00  07 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

0, 2, 类型和权限,ED 41, 0x41ED, 其中0x4000表示目录,0x100表示User—read权限

2, 2, 用户id, 00 00 , 0x0000,

4, 4, 文件字节大小(低32位), 00 04 00 00, 0x400(1024),表示inode对应的文件数据大小为1024字节。

8, 4, 最近访问时间,E1 83 CF 5D 

12,4, 创建时间, E1 83 CF 5D

16, 4,最近修改时间, E1 83 CF 5D 

20, 4,  删除时间,00 00 00 00  

24, 2,组id,00 00 

26, 2,硬连接(hard link)到这个inode的个数,03 00, 0x03

28, 4,该inode使用的磁盘扇区数,02 00 00 00, 0x02

32, 4,标记, 00 00 00 00 

36, 4,os,00 00 00 00  

40, 4,直接块指针0,07 00 00 00, 0x07

44, 4,直接块指针1,00 00 00 00

48, 4,直接块指针2,00 00 00 00 

52, 4,直接块指针3,00 00 00 00  

56, 4,直接块指针4,00 00 00 00 

60, 4,直接块指针5,00 00 00 00

64, 4,直接块指针6,00 00 00 00 

68, 4,直接块指针7,00 00 00 00  

72, 4,直接块指针8,00 00 00 00 

76, 4,直接块指针9,00 00 00 00

80, 4,直接块指针10,00 00 00 00 

84, 4,直接块指针11,00 00 00 00  

88, 4,单重(Singly)间接块指针,00 00 00 00 

92, 4,双重(Doubly)间接块指针,00 00 00 00

96, 4,三重(Triply)间接块指针,00 00 00 00 

100,4,第几代,00 00 00 00  

104,4,对于Ext2,如果是版本0,该字段保留,version >= 1:扩展属性快,00 00 00 00 

108,4,对于Ext2,如果是版本0,该字段保留,version >= 1:如果是文件表示文件大小的高32位,如果是目录表示目录ACL,00 00 00 00

112,4,fragment的块地址,00 00 00 00 

116,12,Operating System Specific Value #2,00 00 00 00  00 00 00 00 00 00 00 00

 

5376(0x1500)

 

块5

6144(0x1800)

 

 

块7

7168(0x1C00)

 

第1个目录项

7168,12

0,4, 文件inode,02 00 00 00, 0x02(2),inode 2, 表示根目录的inode

4,2, 该目录项的总大小,0C 00, 0x0c(12)

6,1, 名称长度最低8位,01,

7,1, 类型,02,表示目录

8,4, 文件名,2E 00 00 00, 表示当前目录(“.”)

第2个目录项

7180,12

0,4, 文件inode,02 00 00 00, 0x02(2),inode 2, 表示根目录的inode

4,2, 该目录项的总大小,0C 00, 0x0c(12)

6,1, 名称长度最低8位,02,

7,1, 类型,02,表示目录

8,4, 文件名,2E 2E 00 00, 表示上级目录(“..”)

第3个目录项

7192,

0,4, 文件inode,0B 00 00 00, 0x0b(11),inode 11, 

4,2, 该目录项的总大小,E8 03, 0x3E8(1000)

6,1, 名称长度最低8位,0A,

7,1, 类型,02,表示目录

8,4, 文件名,

6C 6F 73 74 2B 66 6F 75  6E 64 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00

, 表示上级目录(“lost+found”)

 

块8

8192(0x2000)

 

 

 

0
0
分享到:
评论

相关推荐

    Ext2IFS windows

    标题中的"Ext2IFS windows"表明我们正在讨论一个与Windows操作系统相关的软件,该软件的主要功能是支持挂载Linux的ext文件系统。在Windows环境中,通常无法直接读取或写入Linux系统的ext2、ext3或ext4分区,而Ext2...

    在windows下使用Ext2Fsd访问EXT4分区

    Ext2Fsd是一个免费的开源软件,专门设计用于Windows系统上读/写Linux的EXT2、EXT3和EXT4文件系统。 **Ext2Fsd的主要功能:** 1. **读写支持**:Ext2Fsd允许Windows用户直接访问EXT4分区,包括读取文件、创建文件、...

    Windows读取Ext4分区的工具 Ext2Read

    Ext2Read是一款免费且开源的软件,它专为Windows用户设计,旨在提供对Linux EXT2、EXT3和EXT4文件系统的读取功能。通过这款工具,用户可以在Windows环境下浏览Linux分区的内容,查看文件和目录,并进行必要的文件...

    制作ext2文件系统的方法 .

    在Linux操作系统中,EXT2(Second Extended File System)是一种经典的文件系统,由Rene Rebeau于1992年开发。它最初是为了解决当时存在的MINIX和EXT文件系统的局限性而设计的,特别是在处理大文件和大量小文件方面...

    Windows读写Ext2/Ext3/Ext4文件系统

    可以读写Ext2,以Ext2方式挂载Ext3文件系统(不支持Ext3日志),不支持中文! It provides Windows NT4.0/2000/XP/2003/Vista/2008 with full access to Linux Ext2 volumes (read access andwrite access). This ...

    linux ext2 文件系统模拟 c语言实现

    Linux的EXT2(第二扩展文件系统)是早期广泛使用的文件系统之一,特别是在嵌入式系统和Linux服务器上。EXT2的C语言实现是一项技术性极强的任务,涉及到对操作系统底层机制的理解,包括文件系统的结构、inode、超级块...

    Paragon Ext2fs Anywhere2.5汉化版

    Ext2Fsd默认也不会将写操作打开,需要修改注册表文件Ext2fsd.reg,将WritingSupport改为00000001,另外要修改配置文件ext2fsd.inf,将里面WritingSupport改为1。重新导入注册表并启动服务,写操作就可以顺利完成了。...

    Windows 7下使用Ext2Fsd读取写入Linux Ext3&Ext4分区文件

    然而,有了第三方工具如Ext2Fsd,Windows用户可以实现对这些Linux文件系统的读取和写入操作。本文将详细介绍如何在Windows 7环境下使用Ext2Fsd来处理Linux Ext3和Ext4分区。 **Ext2Fsd是什么?** Ext2Fsd...

    ext2内核源码

    标题"ext2内核源码"指的是Linux操作系统内核中的EXT2文件系统的源代码。EXT2,全称为“Second Extended File System”,是Linux早期广泛使用的文件系统之一,它提供了对文件存储和管理的基础支持。在学习操作系统、...

    ext 下拉树 ext2

    标题中的"ext 下拉树 ext2"指的是使用Ext JS库构建的一个特定版本的下拉树组件,其中"ext2"可能表示使用的是Ext JS的2.x版本。Ext JS是一个强大的JavaScript框架,主要用于构建富客户端Web应用程序,它提供了一系列...

    EXT2API documentation

    EXT2API文档是针对EXT2文件系统接口的开发指南,对于Linux系统开发者和管理员来说,这是一个极其重要的资源。EXT2(Second Extended File System)是Linux操作系统中的一个古老但仍然广泛使用的文件系统。EXT2API...

    Ext2Fsd0文件

    Ext2Fsd0 文件是与Linux文件系统相关的资源,它主要在Windows环境下用于读取和写入Linux系统中常见的EXT2、EXT3或EXT4格式的文件系统。这个工具对于那些需要在Windows操作系统中访问存储在Linux分区上的数据的用户来...

    Ext2的示例,包含了ext2大部分的方法示例

    **EXT2文件系统详解** EXT2(Second Extended File System)是Linux操作系统中广泛使用的早期日志文件系统之一,由Rene Rebeau于1992年开发。它旨在克服EXT1文件系统的限制,提供了更高级别的功能和性能优化。在本...

    20个ext2皮肤样式

    EXT2,全称为“Extended File System 2”,是Linux操作系统中的一种日志式文件系统,由Rudolf Riedel于1992年开发,主要用于替代早期的EXT文件系统。EXT2在Linux社区中广泛使用,特别是在较旧的Linux发行版中。它以...

    Ext2Fsd-0.51

    **Ext2Fsd-0.51:在Windows系统中挂载Linux分区工具** Ext2Fsd是一款功能强大的开源软件,专为Windows操作系统设计,旨在让用户能够读取、写入以及管理Linux文件系统,尤其是Ext2、Ext3和Ext4这三种常见的Linux分区...

    Ext2Fsd-0.53

    **标题:“Ext2Fsd-0.53”** **正文:** 在计算机领域,操作系统与文件系统的兼容性是至关重要的。通常,Windows系统默认支持的是NTFS、FAT32和exFAT等文件系统,但对于Linux常用的ext2、ext3文件系统,Windows则...

    fuse-ext2-0.0.7

    【标题】"fuse-ext2-0.0.7" 是一个专用于Linux系统的开源软件,其主要功能是允许用户在Linux环境下挂载并操作EXT2文件系统。EXT2(Second Extended File System)是Linux早期广泛使用的文件系统之一,主要用于存储和...

    Windows读写Ext2/Ext3/Ext4文件系统4

    支持Ext2/Ext3/Ext4, HFS 和 ReiserFS,只读。 There are a number of evident merits of the program, which you should know. First of all,DiskInternals Linux Reader is absolutely free. Secondly, the ...

    Ext2Fsd-0.51 & UserManual

    Ext2Fsd-0.51 Ext2Fsd 这个小工具,便可以实现在 Windows 中挂载 Linux 分区的目的。Ext2Fsd 能够在 Windows 2000、XP、2003、Vista 等系统中运行,支持挂载 Ext2/Ext3 类型的分区。 本款软件简体中文版,无需注册...

    ext2explore.zip

    【标题】"ext2explore.zip" 是一个包含ext2explore工具的压缩包,它主要用于查看和浏览img格式的文件。ext2explore是一款实用的文件系统浏览器,专门设计来帮助用户探索Linux的ext2、ext3和ext4文件系统。 【描述】...

Global site tag (gtag.js) - Google Analytics