`
音频数据
  • 浏览: 35500 次
文章分类
社区版块
存档分类
最新评论

ext2文件系统

阅读更多

Ext2设计思想:

 

Ext2 features

 

1, 支持4TB大文件。

2, 支持255字符的文件名,并可扩展到1012字节。

3, 为root用户预留一些块。

Advanced ext2 features

 

1, 支持多种块大小,1024,2048,4096.

2, 快速的符号链接实现(小于60个字符的连接名时不需要额外分配块)。

3, 追踪文件系统状态,是否为dirty,是否一致等,设置最大检查间隔,最大挂载计数等

Tune2fs可改变文件系统的参数

 

1, 出错行为。

2, 最大检查间隔。

3, 最大挂载计数。

4, 为超级用户预留块数。

Mount option

 

1, secure deletion,删除文件后,随机内容覆盖原来块的内容。

2, immutable files(Read-only)

3, Append-only

 

Performance optimizations

 

1, readahead buffer-cache management

2, group inode and block management

3, preallocate 8 adjacent blocks

Comparsion with ext3 filesystem

 

1, Availability(各种日志模式)

2, DataIntegrity(保证文件系统一致性,数据正确性的日志模式)

3, Speed(优化的日志写操作,不会带来很大的额外开销)

 

一些细节:

 

1,ext2文件的属性与实际文件数据分开存放,分别存在inode块和数据块中。

2,新建目录时,ext2会给该目录分配一个inode与至少一个块:inode记录目录的属性,并指向分配的那个块,数据块记录目录下相关文件的关联性。

 

3,新建文件时,ext2会给该文件分配至少一个inode与相对文件大小的数据块。

4,块与inode的大小和数量在一开始格式化时就已经确定。

5,一个inode的大小为128KB。

6,块越大,损耗的硬盘空间也越大。

7,inode的数量小于块的数量,大于毫无意义。

8,文件系统组成:超级块 + 块组(n个)

   块组(超级块 + 组描述 + 块位图 + inode位图 + inode表 + 数据块)

   超级块:记录整个文件系统相关信息的地方;

   组描述:记录块组的inode,块数量等信息;

   块位图:记录快是否可用;

  inode位图:记录inode分配情况;

   inode表项:inode的数据存放区;

   数据块:每个块的数据存放区;

   注:使用dumpe2fs 分区 可查看ext2文件系统的详细情形。

 

9,访问文件步骤:

   A: 根据inode位图/块位图的信息,找到对应的inode,进而将文件的属性与数据记录在相应的inode与块中。

   B:将刚刚使用的inode与块的号码告知超级块,inode位图,块位图等以更新这些信息。

 

   当某一访问过程中A发生了,但B未发生,则会造成文件系统的不一致,ext3在ext2的基础上引入日志功能来解决这一问题。

 

10, 日志的记录

     A:当系统要写一个文件时,先在日志记录块中记录,这个文件将要被写入。

     B:开始写入文件的权限与数据。

     C:开始更新元数据的数据。(超级块,inode位图,块位图)

     D,完成BC的更新后,在日志块中完成该文件的记录。

 

     当出错时,只需检查日志块就可以知道那些文件可能存在不一致性,而不需要对整个文件系统进行检查。

 

使用dumpe2fs查看ext2文件系统获得的信息(部分):

 

dumpe2fs 1.35 (28-Feb-2004)

Filesystem volume name:   /

Last mounted on:

Filesystem UUID:          ffb44792-1b52-4f4f-87c9-dd4e6c4f3e7

b

Filesystem magic number:  0xEF53

Filesystem revision #:    1 (dynamic)

Filesystem features:      has_journal ext_attr resize_inode d

ir_index filetype needs_recovery sparse_super large_file

Default mount options:    (none)

Filesystem state:         clean

Errors behavior:          Continue

Filesystem OS type:       Linux

Inode count:              3842720

Block count:              7679070

Reserved block count:     383953

Free blocks:              6517957

Free inodes:              3681243

First block:              0

Block size:               4096

Fragment size:            4096

Reserved GDT blocks:      1022

Blocks per group:         32768

Fragments per group:      32768

Inodes per group:         16352

Inode blocks per group:   511

Filesystem created:       Tue Jul 31 02:09:18 2007

Last mount time:          Mon Mar 16 09:15:19 2009

Last write time:          Mon Mar 16 09:15:19 2009

Mount count:              27

Maximum mount count:      -1

Last checked:             Tue Jul 31 02:09:18 2007

Check interval:           0 ()

Reserved blocks uid:      0 (user root)

Reserved blocks gid:      0 (group root)

First inode:              11

Inode size:          128

Journal inode:            8

Default directory hash:   tea

Directory Hash Seed:      8c08c4c6-0d28-49ba-be38-e109a3fa011

7

Journal backup:           inode blocks

 

Group 0: (Blocks 0-32767)

  Primary superblock at 0, Group descriptors at 1-2

  Block bitmap at 1025 (+1025), Inode bitmap at 1026 (+1026)

  Inode table at 1027-1537 (+1027)

  22031 free blocks, 16340 free inodes, 2 directories

  Free blocks: 10737-32767

  Free inodes: 13-16352

Group 1: (Blocks 32768-65535)

  ......

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics