ext3
维基百科,自由的百科全书
ext3 | |
---|---|
开发商 | 开放源代码 |
全称 | 扩展文件系统3 |
发布 | 2001年11月 (Linux 2.4.15) |
分区标识 | 0x83 (MBR) EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT) |
结构 | |
目录内容 | 表, 树 |
文件分配 | 位图(空闲区域), 表(元数据) |
坏块 | 表 |
限制 | |
最大文件大小 | 16GiB – 64TiB |
最大文件数量 | 可变[1] |
最长文件名限制 | 255字节 |
最大卷大小 | 2TiB – 32TiB |
文件名允许的字符数 | 除NUL和'/'外的所有字节 |
功能 | |
记录日期 | 修改(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) |
ext3(或称为扩展文件系统3)是一个日志文件系统,常用于Linux操作系统。它是很多Linux发行版的默认文件系统 。Stephen Tweedie在1999年2月的内核邮件列表[2]中,最早显示了他使用扩展的ext2,该文件系统从2.4.15版本的内核开始,合并到内核主线中[3]。
目录 |
[编辑] 优势
虽然它的性能(速度)和安全性zh-hans:;zh-hant:[來源請求]不如它的竞争对手,例如JFS2, ReiserFS和XFS,但它具有重要的优势,那就是它允许在适当的时候从流行的ext2文件系统升级,而无需备份和恢复数据;除此之为,它还具有比ReiserFS和XFS更低的的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]。
[编辑] 反删除
和 ext2 不同,ext3 会在删除文件时把文件的节点(inode)中的块指标清除。这样做可以在unclean 载入文件系统后,重放日志时,可以减少对文件系统的访问。但也同样了文件在反删除上面的困难。用户唯一的补救是在硬盘中捞取数据,并且要知道文件的起始到结束的块指标。仅管提供了比 ext2 在删除文件上稍微高一些的安全性,却也无可避免的带来了不便之处。
[编辑] 压缩
Ext3不支持透明压缩(Ext2以非官方补丁支持)。
[编辑] 大小限制
ext3有一个相对较小的对于单个文件和整个文件系统的最大尺寸。这些限制依赖于文件系统的块大小;下面的表格总结了这些限制[5]:
块尺寸 | 最大文件尺寸 | 最大文件系统尺寸 |
---|---|---|
1KiB | 16GiB | 2TiB |
2KiB | 256GiB | 8TiB |
4KiB | 2TiB | 16TiB |
8KiB | 16TiB | 32TiB |
8KiB块,只能用于允许8KiB页面的架构(例如alpha)。
[编辑] 日志中没有校验和
Ext3在写入日志时,并不做校验和。如果barrier=1没有作为加载参数(在文件/etc/fstab),并且如果硬件在无次序的写入缓存,在崩溃时会严重损坏文件系统[6][7](该选项在大多数流行的Linux发行版中都没有被启用,所以大多数发行版的处境都很危险。)
考虑下面的情况:如果硬盘无序的做写入操作(因为现在的硬盘都使用缓存机制以便摊销写入速度),那么有可能出现在写入处理的提交块时,其他的相关的块已经被写入了。如果电源掉电、内核panic出现在其他块写入前,那么系统将必须重启。在重启后,文件系统将按照正常方式重演日志,并且重演“优胜者”(具有提交块的处理,包括上面无效的但被标记为有效的提交块的处理)。于是,上面没有完成的磁盘写入将处理,但使用已经损坏的日志数据。文件系统在重演日志的时候,将错误的使用已经损坏的数据覆盖正常数据。如果使用校验和(如果假的“优胜者”处理被标记为互斥的校验和),文件系统会处理的更好,并且不会在磁盘上重演错误的数据。截止到2007年6月24日,已经有补丁来修复这个问题。
[编辑] Ext4dev / Ext4
2006年10月10日发布了一个增强版本的文件系统,使用ext4作为名称。该文件系统包含很多新的功能。
[编辑] 注释和引用
- ^ 最大i节点(并且之后作为文件和目录的最大数量)数目在文件系统创建时确定。如果V是卷的大小(字节数),则默认的i节点数量位V/213(或块的数量,以最小的为准),且最小为V'/223。绝大多数应用程序认为默认值已经足够了。
- ^ Stephen C. Tweedie(February 17 1999年).Re: fsync on large files.Linux kernel mailing list.
- ^ Rob Radez(November 23 2001年).2.4.15-final.Linux kernel mailing list.
- ^ Andreas Dilger.Post to the ext3-users mailing list(英文).ext3-users mailing list post.
- ^ Matthew Wilcox.Documentation/filesystems/ext2.txt.Linux kernel source documentation.
- ^ http://archives.free.net.ph/message/20070518.134838.52e26369.en.html
- ^ http://archives.free.net.ph/message/20070519.014256.ac3a2e07.en.html
[编辑] 参考
- 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, 2000cn:Ext3