EXT2文件系统详述(2)

我们约略来分析一下 inode / block 与文件大小的关系好了。inode 要记录的数据非常多,但偏偏又只有 128bytes 而已, 而 inode 记录一个 block 号码要花掉 4byte ,假设我一个文件有 400MB 且每个 block 为 4K 时, 那么至少也要十万笔 block 号码的记录呢!inode 哪有这么多可记录的信息?为此我们的系统很聪明的将 inode 记录 block 号码的区域定义为12个直接,一个间接, 一个双间接与一个三间接记录区。这是啥?我们将 inode 的结构画一下好了。

EXT2文件系统详述

上图最左边为 inode 本身 (128 bytes),里面有 12 个直接指向 block 号码的对照,这 12 笔记录就能够直接取得 block 号码啦! 至于所谓的间接就是再拿一个 block 来当作记录 block 号码的记录区,如果文件太大时, 就会使用间接的 block 来记录编号。如上图 1.3.2 当中间接只是拿一个 block 来记录额外的号码而已。 同理,如果文件持续长大,那么就会利用所谓的双间接,第一个 block 仅再指出下一个记录编号的 block 在哪里, 实际记录的在第二个 block 当中。依此类推,三间接就是利用第三层 block 来记录编号!

Superblock (超级区块)

Superblock 是记录整个 filesystem 相关信息的地方, 没有 Superblock ,就没有这个 filesystem 了。他记录的信息主要有:

block 与 inode 的总量;

未使用与已使用的 inode / block 数量;

block 与 inode 的大小 (block 为 1, 2, 4K,inode 为 128 bytes);

filesystem 的挂载时间、最近一次写入数据的时间、最近一次检验磁盘 (fsck) 的时间等文件系统的相关信息;

一个 valid bit 数值,若此文件系统已被挂载,则 valid bit 为 0 ,若未被挂载,则 valid bit 为 1 。

[root@www ~]# dumpe2fs [-bh] 装置文件名

选项与参数:

-b :列出保留为坏轨的部分(一般用不到吧!?)

-h :仅列出 superblock 的数据,不会列出其他的区段内容!

范例:找出我的根目录磁盘文件名,并观察文件系统的相关信息

[root@www ~]# df

Filesystem    1K-blocks      Used Available Use% Mounted on

/dev/hdc2      9920624  3822848  5585708  41% /

/dev/hdc3      4956316    141376  4559108  4% /home

/dev/hdc1        101086    11126    84741  12% /boot

tmpfs            371332        0    371332  0% /dev/shm

[root@www ~]# dumpe2fs /dev/hdc2

dumpe2fs 1.39 (29-May-2006)

Filesystem volume name:  /1

Filesystem features:      has_journal ext_attr resize_inode dir_index

filetype needs_recovery sparse_super large_file

Default mount options:    user_xattr acl

Filesystem state:        clean

Errors behavior:          Continue

Filesystem OS type:      Linux

Inode count:              2560864

Block count:              2560359

Free blocks:              1524760

Free inodes:              2411225

First block:              0

Block size:              4096

Filesystem created:      Fri Sep  5 01:49:20 2008

Last mount time:          Mon Sep 22 12:09:30 2008

Last write time:          Mon Sep 22 12:09:30 2008

Last checked:            Fri Sep  5 01:49:20 2008

First inode:              11

Inode size:              128

Journal inode:            8

Journal backup:          inode blocks

Journal size:            128M

Group 0: (Blocks 0-32767)

Primary superblock at 0, Group descriptors at 1-1

Reserved GDT blocks at 2-626

Block bitmap at 627 (+627), Inode bitmap at 628 (+628)

Inode table at 629-1641 (+629)

0 free blocks, 32405 free inodes, 2 directories

Free blocks:

Free inodes: 12-32416

Group 1: (Blocks 32768-65535)

....(底下省略)....

# 由于数据量非常的庞大,因此将一些信息省略输出了!

# 前半部在秀出 supberblock 的内容,包括标头名称(Label)以及inode/block的相关信息

# 后面则是每个 block group 的个别信息了!您可以看到各区段数据所在的号码!

# 也就是说,基本上所有的数据还是与 block 的号码有关就是了!很重要!

目录

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/16095.html