您的位置:首页 > 其它

liunx ext2文件系统结构

2011-10-10 14:52 267 查看
原文:http://hi.baidu.com/cjrwyy/blog/item/7e34da42942cb5199313c690.html
一、ext2文件系统结构

盘上创建分区,并在分区上创建ext2文件系统后,这个分区被分为固定大小的数据块(data block),每一个数据块都有一个从0开始的计数的块号。数据块又组合以数据块组(block
group),每一个数据块组的数据块的个数是固定的,数据块的大小可以为1024B、2048B、4096B,默认是4096B,使用mke2fs
命令创建ext2文件系统,加-b参数指定大小。

一个ext2文件系统分区的物理结构示意图:



二、使用tune2fs –l +
分区可以显示super block所包含的主要信息。

三、示group descriptor中的主要信息

Group descriptor中主要包含有三个指针,分别指向block bitmap、inode bitmap和inode
table。Bitmap中的每一个Bit对应一个block,如果bit为0,表示该block空闲,如果为1,表示该block有数据。

下面是使用debugfs命令的show_super_stats显示group descriptor中的内容。

[root@Chenjinrong ~]# debugfs /dev/sda1

debugfs 1.35 (28-Feb-2004)

debugfs: show_super_stats

Filesystem volume name: /boot

Last mounted on: <not available>

Filesystem UUID: 55c191bd-6888-483d-8424-f3d21061ca14

Filesystem magic number: 0xEF53

Filesystem revision #: 1 (dynamic)

Filesystem features: has_journal ext_attr resize_inode dir_index filetype n

eeds_recovery sparse_super

Default mount options: (none)

Filesystem state: clean

Errors behavior: Continue

Filesystem OS type: Linux

Inode count: 26104

Block count: 104388

Reserved block count: 5219

Free blocks: 89659

Free inodes: 26066

First block: 1

Block size: 1024

Fragment size: 1024

Reserved GDT blocks: 256

Blocks per group: 8192

Fragments per group: 8192

Inodes per group: 2008

Inode blocks per group: 251

First inode: 11

Inode size: 128

Journal inode: 8

Directories: 3

Group 0: block bitmap at 259, inode bitmap at 260, inode table at 261

0 free blocks, 1990 free inodes, 2 used directories

四、Inode的内容

1、inode在一个数据块中的大小为128B

2、inode主要包含其对应文件的属性

l 文件类型

l 此文件的硬链接的数量

l 指向存储文件数据的data block的指针(一个inode中共存放15个inode指针,前12个为直接指针,指向的是数据块的块号,第13个是单级间接指针,指向的数据块是前面的直接指针,而不是数据,第14个是二级间接指针,指向的数据块是单级间接指针,第15个是三级间接指针,指向的是二级间接指针。)

l 文件长度(文件大小包含两类大小:一类是在创建文件的时候系统分配的大小,一般是一个数据块;另一类是文件的数据大小,是真正的数据大小。使用ls –l
命令所看到的就是数据的大小)

l 设备标识符

l 文件属主的UID

l 文件用户组的GID

l 访问权限

l 3个和文件相关的时间属性值(acces time,modify time,change time)当只是访问文件,如使用cat命令时,变的只是acces
time,当只修改Inode中的内容是,如访问权限、文件属主等信息是,change time
会改变。

3、使用stat命令来查看一个文件或目录indoe的主要内容,但个并没有显示指针的信息。

[root@cjr~]#stat inode.txt

要显示指针的信息可以使用,[debugfs +
分区],进入debugfs内,使用stat +文件名,这样要指明文件的实际路径。

[root@Chenjinrong ~]# debugfs /dev/sda3

debugfs 1.35 (28-Feb-2004)

debugfs: stat /root/mbr.dd

Inode: 51424 Type: regular Mode: 0644 Flags: 0x0 Generation: 270867885

5

User: 0 Group: 0 Size: 512

File ACL: 99058 Directory ACL: 0

Links: 1 Blockcount: 16

Fragment: Address: 0 Number: 0 Size: 0

ctime: 0x49ab0164 -- Mon Mar 2 05:43:00 2009

atime: 0x49ab01b0 -- Mon Mar 2 05:44:16 2009

mtime: 0x49ab0164 -- Mon Mar 2 05:43:00 2009

BLOCKS:

(0):118787---------*文件所在的数据块的块号,这里只有一个数据块,

TOTAL: 1----------*数据块的个数,这样为一个
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: