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)
......
相关推荐
EXT2文件系统存取结构的详细介绍且有实例分析
Linux内核源代码导读-陈香兰-中国科学技术大学-ext2文件系统
制作ext2文件系统的方法 , 挺好用的,谁用谁知道。
认识ext2文件系统 本资料是对ext2文件系统中的结构的说明,同时也对ext3文件系统作了补充,因为ext3也是兼容于ext2的.
C语言实现的工程。模拟了Linux中的ext2文件系统,可以快熟帮助我们理解ext2文件系统的组成和原理。
linux ext2 文件系统模拟 c语言实现 我从google上下了修改些代码增加了一些东西 对学习ext2文件系统很有帮助
关于EXT2文件系统的磁盘布局的本科毕业论文(2009年)
Ext2. The reader should have a good understanding of the purpose of a file system as well as the associated vocabulary (file, directory, partition, etc). Implementing file system drivers is already ...
俺花了两块的大洋在论文网载的,希望你们喜欢。很不错的,和Fat文件系统比照收获更大啊!查看需要特殊阅读器,需要的mailto:gwx324@126.com
Linux下Ext2文件系统的精剪与优化设计.pdf
用文件仿硬盘的C语言程序——模仿linux下的EXT2文件系统,类EXT2文件系统
用C语言写的,非常好的代码~~直接解压,然后gcc main.c就可以了
ext2文件系统 linux linux 下的文件系统说明,可以参考
通过mke2fs 命令生成一个 ext2 文件系统的磁盘镜像,然后一个字节一个字节分析其格式,来了解linux文件系统!
Linux 文件系统介绍和实例分析,非常翔实的实例分析,和规格的介绍,对于掌握Linux文件系统非常有帮助
Ext3文件系统是直接从Ext2文件系统发展而来,目前ext3文件系统已经非常稳定可靠。它完全兼容ext2文件系统。用户可以平滑地过渡到一个日志功能健全的文件系统中来。这实际上了也是ext3日志文件系统初始设计的初衷。...
用c语言编程,通过文件模拟磁盘来模拟EXT2文件系统
ext2 and ext3文件系统,ext2 and ext3文件系统,ext2 and ext3文件系统