Ext3

ext3
开发者史提芬·崔迪
全称第三代扩展文件系统
发布2001年11月 (Linux 2.4.15)
分区标识0x83(MBR
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7(GPT
结构
目录内容表,树
文件分配位图(空闲区域),表(元数据)
坏块
限制
最大文件尺寸16GiB – 2TiB
最大文件数量可变[1]
最长文件名255字节
最大卷容量4TiB – 32TiB
文件名字符集除NULL和'/'外的所有字节
功能
日期记录修改(mtime),属性修改(ctime),访问(atime)
日期范围1901年12月14日-2038年1月18日
日期分辨率1秒
岔流
属性No-atime, append-only, synchronous-write, no-dump, h-tree (directory), immutable, journal, secure-delete, top (directory), allow-undelete
文件系统权限Unix权限,ACLs和arbitrary security attributes(Linux 2.6 and later)
透明压缩
透明加密否(块设备级上提供)
操作系统支持Linux、BSD、Windows(通过IFS或Ext2Fsd)

第三代扩展文件系统(英語:Third extended filesystem,縮寫為ext3),是一个日志文件系统,常用于Linux操作系统。它是很多Linux发行版的默认文件系统史提芬·崔迪在1999年2月的内核邮件列表[2]中,最早显示了他使用扩展的ext2,该文件系统从2.4.15版本的内核开始,合并到内核主线中[3]

优势

虽然它的性能(速度)不如它的竞争对手,例如JFS2,ReiserFSXFS,但它具有重要的优势,那就是它允许在适当的时候从流行的ext2文件系统升级,而无需备份和恢复数据;除此之外,它还具有比ReiserFSXFS更低的的CPU使用率[1](页面存档备份,存于互联网档案馆) 。

ext3文件系统增加的超越其前代的包括:

  • 日志
  • 位目录跨越多个块提供基于树的目录索引
  • 在线系统增长

如果没有这些,ext3文件系统也同时是个有效的ext2文件系统。这样,经过良好测试的、成熟的文件系统工具来管理和修复ext2文件系统工具,可以无需大的变动,就应用于ext3文件系统。ext2和ext3文件系统共享相同的工具集,带有fsck工具的e2fsprogs。这种紧密的联系也将两种文件系统之间进行转换(包括升级到ext3和降级为ext2)变得非常容易。

Linux实现的ext3文件系统,包括3个级别的日志:

  • 日记:(慢,但风险小)元数据和文件内容都在提交到主文件系统前写入。这样将提高稳定性但性能上有所损失,因为所有的数据都要写入2次。如果没有在/etc/fstab中加上这个选项,修改中的档案遇上kernel panic或突然断电的时候就可能发生损毁的情况,当然,这还是得看软体是怎么写入档案的。
  • 顺序:(中速,中等风险)顺序和写回类似,但在对应的元数据标记为提交前,强制写入文件内容。这是很多Linux发行版默认的方式。
  • 回写:(快,但风险最大;在某种感觉上和ext2相当)这边会写入日志的只有metadata而已,档案的内容并不会跟著写入日志里面。这样的作法让整个效率变快了不少,不过也同样造成了档案写入时不按顺序的结果。举例来说,档案在附加变大的同时发生了crash的情况,就可能造成下次挂载时档案后面就附加一堆垃圾数据的情况。

尽管ext3缺少一些当代文件系统的特点,像是动态的inode、树状的资料储放结构等等,都是被视作ext3的缺点之一,不过在这些特点之外,ext3在文件系统回复上面就有了很好的表现。跟树状结构的文件系统相比,在ext3上面metadata是放在固定的位置,而且在写入的同时会重复写入的一些资料让ext2/3在面临资料损毁的情况下还有挽回的机会。

劣势

功能

当初ext3的设计目标就是提供对於ext2的高度相容,很多磁盘上的结构和都和ext2很相似。也因为这样,ext3缺乏很多最新设计中的功能,例如动态分配inode和可变块大小(frags或tails)。

ext3文件系统在被挂载为写入的时候,是不能进行fsck的。ext3档案系统的倾倒作业在这个档案系统还是挂载中的时候执行可能会造成资料的损坏。

ext3不支持在其他文件系统上已经支持(例如:JFS2和ext4)的扩展。

磁盘碎片

在文件系统级别上,没有在线的ext3磁盘碎片整理工具。

离线的ext2磁盘碎片整理工具e2defrag,可以用于ext3文件系统,但前提是在使用前要将文件系统转换回ext2。但依赖于功能位在文件系统中打开,e2defrag可能会毁灭数据;目前仍然不知道如何处理新的ext3功能。[4]

有一些用户使用的磁盘碎片整理工具,例如Shake[2](页面存档备份,存于互联网档案馆) 和defrag[3](页面存档备份,存于互联网档案馆),这些工具通过复制文件来实现新分配的文件不存在碎片。但这只在文件系统相当空的情况下有效,并且该文件系统不经常出现碎片。目前没有真正的用于ext3的磁盘碎片整理工具[4](页面存档备份,存于互联网档案馆) 。

事实上,磁盘碎片整理完全是一种人们在单用户单进程环境下(如DOS/早期Windows)工作时养成的旧习。

在多任务环境下,磁盘碎片的出现根本是不可避免的,而且碎片化的速度非常之快。操作系统的任务不是不负责任地给用户提供一个整理工具,而是应该在系统设计的时候消除碎片化对性能的伤害。比如Linux块设备操作都要经过一个I/O调度层,通过在调度层中使用带有电梯算法的调度策略来消除碎片对性能的影响。

另外,如果将来固态硬盘普及乃至取代传统硬盘,也会让磁盘碎片的概念成为历史。

反删除

和ext2不同,ext3会在删除文件时把文件的节点(inode)中的块指标清除。这样做可以在unclean载入文件系统后,重放日志时,可以减少对文件系统的访问。但也同样也增加了文件在反删除上面的困难。用户唯一的补救是在硬盘中捞取数据,并且要知道文件的起始到结束的块指标。尽管提供了比ext2在删除文件上稍微高一些的安全性,却也无可避免的带来了不便之处。

压缩

Ext3不支持透明压缩(Ext2以非官方补丁支持)。

大小限制

ext3有一个相对较小的对于单个文件和整个文件系统的最大尺寸。这些限制依赖于文件系统的块大小;下面的表格总结了这些限制[5]

區塊大小 最大檔案容量 最大檔案系統容量
1KiB 16GiB 2TiB
2KiB 256GiB 8TiB
4KiB 2TiB 16TiB
8KiB[limits 1] 2TiB 32TiB
  1. ^ 8KiB块,只能用于允许8KiB页面的架构(例如alpha)。

日志中没有校验和

Ext3在写入日志时,并不做校验和。如果barrier=1没有作为加载参数(在文件/etc/fstab),并且如果硬件在无次序的写入缓存,在崩溃时会严重损坏文件系统[6][7](该选项在大多数流行的Linux发行版中都没有被启用,所以大多数发行版的处境都很危险。)

考虑下面的情况:如果硬盘无序的做写入操作(因为现在的硬盘都使用缓存机制以便摊销写入速度),那么有可能出现在写入处理的提交块时,其他的相关的块已经被写入了。如果电源掉电、内核panic出现在其他块写入前,那么系统将必须重启。在重启后,文件系统将按照正常方式重演日志,并且重演“优胜者”(具有提交块的处理,包括上面无效的但被标记为有效的提交块的处理)。于是,上面没有完成的磁盘写入将处理,但使用已经损坏的日志数据。文件系统在重演日志的时候,将错误的使用已经损坏的数据覆盖正常数据。如果使用校验和(如果假的“优胜者”处理被标记为互斥的校验和),文件系统会处理的更好,并且不会在磁盘上重演错误的数据。截止到2007年6月24日,已经有补丁来修复这个问题。

Ext4dev / Ext4

2006年10月10日发布了一个增强版本的文件系统,使用ext4作为名称。该文件系统包含很多新的功能。

注释和引用

  1. ^ 最大i节点(并且之后作为文件和目录的最大数量)数目在文件系统创建时确定。如果V是卷的大小(字节数),则默认的i节点数量位V/213(或块的数量,以最小的为准),且最小为V'/223。绝大多数应用程序认为默认值已经足够了。
  2. ^ Stephen C. Tweedie. Re: fsync on large files. Linux kernel mailing list. February 17, 1999 [2007-09-01]. (原始内容存档于2021-02-25). 
  3. ^ Rob Radez. 2.4.15-final. Linux kernel mailing list. November 23, 2001 [2007-09-01]. (原始内容存档于2011-08-26). 
  4. ^ Andreas Dilger. Post to the ext3-users mailing list(英文). ext3-users mailing list post. [2007-09-01]. (原始内容存档于2021-02-24). 
  5. ^ Matthew Wilcox. Documentation/filesystems/ext2.txt. Linux kernel source documentation. [2007-09-01]. (原始内容存档于2007-08-24). 
  6. ^ 存档副本. [2007-09-01]. (原始内容存档于2007-09-28). 
  7. ^ 存档副本. [2007-09-01]. (原始内容存档于2007-09-28). 

参考

  • ext2
  • ext4
  • List of file systems
  • Comparison of file systems

外部链接

  • Linux ext3 FAQ(页面存档备份,存于互联网档案馆
  • Introducing ext3 - IBM developerWorks Advanced filesystem implementor's guide, Part 7(页面存档备份,存于互联网档案馆
  • Ext2 File System For Windows(页面存档备份,存于互联网档案馆) GPL ext2/ext3 file system driver for Windows NT/2000/XP/Vista(opensource, supports read & write, supports 2K/XP/VISTA on X86/AMD64)
  • Ext2 Installable File System For Windows(页面存档备份,存于互联网档案馆) ext2/ext3 file system driver for MS Windows NT/2000/XP(freeware, supports read & write on Windows NT4.0/2000/XP/2003 on x86 processors only)
  • EXT2 IFS ext2/ext3 file system driver for MS Windows NT/2000/XP(opensource, doesn't support writing, doesn't support Windows XP SP2 or Windows Vista)
  • Explore2fs(页面存档备份,存于互联网档案馆) An explorer-like GUI tool for accessing ext2/ext3 filesystems under MS Windows
  • ext2/ext3 resizing tools(页面存档备份,存于互联网档案馆
  • Presentation on EXT3 Journaling Filesystem(页面存档备份,存于互联网档案馆) by Dr. Stephen Tweedie at the Ottawa Linux Symposium, 20 July, 2000

磁盘
  • ADFS英语Advanced Disc Filing System
  • AdvFS
  • Amiga FFS英语Amiga Fast File System
  • Amiga OFS英语Amiga Old File System
  • APFS
  • AthFS英语AtheOS File System
  • Bcachefs
  • BFS
    • Be文件系统英语Be File System
    • 启动文件系统英语Boot File System
  • Btrfs
  • DFS英语Disc Filing System
  • EFS
  • Episode英语Episode filesystem
  • ext
    • ext2
    • ext3
    • ext3cow英语ext3cow
    • ext4
  • FAT
  • Files-11英语Files-11
  • Fossil
  • HAMMER英语HAMMER
  • HFS
  • HFS+
  • HPFS
  • HTFS英语High Throughput File System
  • IBM通用并行文件系统英语IBM General Parallel File System
  • JFS
  • LFS英语Log-structured File System (BSD)
  • MFS
    • Macintosh文件系统英语Macintosh File System
    • Tivo媒体文件系统英语Tivo Media File System
  • MINIX
  • NetWare文件系统英语NetWare File System
  • Next3英语Next3
  • NILFS英语NILFS
    • NILFS2英语NILFS2
  • NSS英语Novell Storage Services
  • NTFS
  • OneFS英语OneFS distributed file system
  • PFS英语Professional File System
  • QFS英语QFS
  • QNX4FS英语QNX4FS
  • ReFS
  • ReiserFS
    • Reiser4英语Reiser4
  • Reliance英语Reliance (file system)
  • Reliance Nitro英语Reliance Nitro
  • RFS
  • SFS英语Smart File System
  • Soup英语Soup (Apple)
  • Tux3英语Tux3
  • UBIFS
  • UFS
  • VxFS英语Veritas File System
  • WAFL英语Write Anywhere File Layout
  • Xiafs英语Xiafs
  • XFS
  • Xsan英语Xsan
  • zFS英语zFS (z/OS file system)
  • ZFS
  • HSF英语High Sierra Format
  • ISO 9660
  • ISO 13490英语ISO 13490
  • UDF
  • CXFS英语CXFS
  • GFS2英语GFS2
  • Google檔案系統
  • OCFS2英语OCFS2
  • OrangeFS英语OrangeFS
  • PVFS英语Parallel Virtual File System
  • QFS英语Quantcast File System
  • Xsan英语Xsan
  • 更多...
NAS
特殊
  • Aufs
  • AXFS英语AXFS
  • 启动文件系统英语Boot File System
  • CDfs英语CDfs
  • 光盘文件系统英语Compact Disc File System
  • Cramfs
  • Davfs2英语Davfs2
  • EROFS
  • FTPFS
  • FUSE
  • GmailFS
  • Lnfs
  • LTFS英语Linear Tape File System
  • MVFS英语Rational MultiVersion File System
  • SquashFS
  • UMSDOS英语FAT filesystem and Linux
  • OverlayFS
  • UnionFS英语UnionFS
  • WBFS英语WBFS
  • configfs英语configfs
  • devfs英语Device file
  • debugfs英语debugfs
  • kernfs英语kernfs (BSD)
  • procfs
  • specfs
  • sysfs
  • tmpfs
  • WinFS
加密英语Filesystem-level encryption
类型
  • 集群
    • 全局英语Global file system
    • 网格英语Grid File System
    • 自我认证英语Self-certifying File System
  • 闪存
  • 日志
  • 日志结构英语Log-structured file system
  • 对象
  • 面向记录英语Record-oriented filesystem
  • 语义英语Semantic file system
  • 隐写英语Steganographic file system
  • 合成英语Synthetic file system
  • 版本英语Versioning file system
特性
访问控制英语Computer access control
接口