Understanding Linux filesystems: ext4 and beyond

这篇文章Understanding Linux filesystems: ext4 and beyond

是出自opensource opensource.com 作者 Jim Salter

文章主要介绍ext简要历史,ext4一些特性及问题, 以及其他一些文件系统.

ext发展过程

ext主要经历了MINIX文件系统, extext2, 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

发表回复