这篇文章Understanding Linux filesystems: ext4 and beyond
是出自opensource
opensource.com 作者 Jim Salter
文章主要介绍ext
简要历史,ext4
一些特性及问题, 以及其他一些文件系统.
ext发展过程
ext主要经历了MINIX
文件系统, ext
,ext2
, ext3
, ext
几个阶段。
Minix文件系统
Andrew Tannenbaum 为了教学的目的而开发了MINIX,并于 1987 年发布。Minix有自己的文件系统, 不过比较简单最多只能处理14个字符的文件名,并且只能处理64MB的存储空间。
ext
ext是由一名发过软件开发人员 Rémy Card 1992 年实现,同时他也设计了ext2, ext使用VFS抽象层,并且能够支持2G存储,以及255长度的文件名。关于时间戳,ext只有一个.
ext2
Rémy Card 发现了ext的局限性,一年后也就是1993年他便设计出了ext2, ext2支持到GB级别文件大小和TB级别的文件系统大小, 但是磁盘碎片, 数据写入安全性上尚存在不足,比如: 如果在将数据写入磁盘时系统崩溃或断电,则容易发生灾难性损坏.
ext3
1998年, Stephen Tweedie 改进ext2, 2001合并如2.4.25内核版本主线。ext3实现了日志来解决异常情况下数据写入不一致问题。 像之前的ext2一样,ext3使用16位内部寻址。 这意味着块大小为4K时,它可以处理的最大文件大小为2 TiB,最大文件系统大小为16 TiB。
ext4
Theodore Ts’o , 中文名曹子德 ext3主要开发人员。 2006年,发布ext4, 两年后加入 2.6.28 内核主线。
ext4比较ext3有很多新的特征:可以参见以下链接,
https://ext4.wiki.kernel.org/index.php/New_ext4_features
作者文章发表的时候计划开发特征已经实现, 比如Metadata Checksums
3.1 Multiblock Allocation
3.2 Delayed Allocation
3.3 Exceed 32000 subdirectory limit
3.4 directory Inodes reservation
3.5 nsec timestamps
3.6 inode version on disk
3.7 uninitialized block groups
3.8 journal checksumming
3.9 persistent preallocation (fallocate)
3.10 Online Defragmentation
3.11 First Class Quota Support
3.12 Big Allocation Blocks
3.13 Metadata Checksums
3.14 Large file support
3.15 Large directory support
3.5 nsec timestamps 关于时间戳, ext4的inode信息中新增2位, 处理,使得时间延长到2446, 处理POSIX时间表示时涉及的2038年问题
0x84 __le32 i_ctime_extra
0x88 __le32 i_mtime_extra
0x8C __le32 i_atime_extra
ext4 只是一个纯文件系统,而不是存储卷管理器, 除了ext4外, XFS, ZFS, Btrfs 可以根据实际需要选择。
Be First to Comment