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文件系统存取结构详细介绍 EXT2文件系统是 Linux 系统中的标准文件系统,由 Minix 文件系统扩展而来,具有高效的存取性能。在 EXT2 文件系统中,文件由 inode 进行唯一标识,每个文件可能对应多个文件名,只有...
它最初是为了解决当时存在的MINIX和EXT文件系统的局限性而设计的,特别是在处理大文件和大量小文件方面。EXT2文件系统在Linux社区中广泛使用,直到后来被EXT3和EXT4等更先进的文件系统所取代。本文将详细介绍如何...
Linux的EXT2(第二扩展文件系统)是早期广泛使用的文件系统之一,特别是在嵌入式系统和Linux服务器上。EXT2的C语言实现是一项技术性极强的任务,涉及到对操作系统底层机制的理解,包括文件系统的结构、inode、超级块...
它比早期的ext文件系统更为高效和稳定,支持大容量存储设备,是Linux环境下的主流文件系统之一。ext2文件系统的特点包括了对分区进行格式化的操作,格式化会指定一个特定的文件系统,并且一个分区通常只能有一个文件...
Linux的ext2(第二扩展文件系统)是早期广泛使用的文件系统之一,它的设计简洁,适合小型设备和资源有限的环境。这个C语言实现的工程旨在模拟ext2文件系统,为学习者提供一个直观的平台来理解和研究其工作原理。下面...
EXT2,全称为“Extended File System 2”,是Linux操作系统早期广泛使用的日志文件系统之一。这个压缩包“模拟EXT2文件系统.zip”包含了几个关键的源代码文件,如`init.c`、`main.c`、`init.h`和`main.h`,这暗示着...
Linux内核源代码导读-陈香兰-中国科学技术大学-ext2文件系统
Linux EXT2 文件系统是Linux操作系统中的一个重要组成部分,它是由Rey Card设计的,旨在为Linux提供一个强大且可扩展的文件系统。EXT2是Linux早期广泛使用的文件系统,它的成功在于其简洁的设计和高效的性能。EXT3...
本文主要介绍了 Linux 下 Ext2 文件系统的精剪与优化设计,提出了基于 Linux 系统的 Ext2 文件系统的精剪和优化设计,通过精细剪裁和优化设计,构建了一个 Linux 多级用户的 Ext2 二级文件系统,以作 GPS 等专业...
EXT2是EXT文件系统的扩展,而EXT3则是EXT2的扩展,它们在硬盘布局上基本相同,主要区别在于EXT3引入了日志功能以提高文件系统的稳定性和性能。然而,本文主要关注EXT2的磁盘布局,其内容同样适用于EXT3。 在EXT2...
**EXT2文件系统详解** EXT2,全称是Second Extended File System,是Linux操作系统中最早广泛使用的日志文件系统之一。它由法国程序员Rene Rebeau开发,并于1992年首次引入Linux内核。EXT2在当时是作为EXT...
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 ...
### ext2 和 ext3 文件系统详解 #### 一、概述 `ext2` 和 `ext3` 是广泛应用于 Linux 操作系统中的文件系统格式。它们的设计目标是在保持高性能的同时提供可靠性和稳定性。`ext2` 是第二扩展文件系统,而 `ext3` ...
EXT2(Second Extended File System)是Linux操作系统中广泛使用的文件系统之一,主要设计于1992年,作为EXT文件系统的扩展。EXT2文件系统在Linux社区中具有重要的地位,因为它提供了一种可靠且高效的存储数据的方式...
Ext2(Extended File System 2)是Linux早期广泛使用的文件系统之一,它作为Ext文件系统的后续版本,在保持兼容性的同时,引入了许多改进和新特性,旨在提高性能和稳定性。Ext2的设计重点在于提供快速的数据访问和...
俺花了两块的大洋在论文网载的,希望你们喜欢。很不错的,和Fat文件系统比照收获更大啊!查看需要特殊阅读器,需要的mailto:gwx324@126.com
用文件仿硬盘的C语言程序——模仿linux下的EXT2文件系统,类EXT2文件系统
用C语言写的,非常好的代码~~直接解压,然后gcc main.c就可以了