ext3是由Stephen C. Tweedie博士为2.2版内核编写的。
这一文件系统由Peter Braam、Andreas Dilger、Andrew Morton和Stephen Tweedie迁移到2.4版内核上。Ted Ts''o维护着极为重要的e2fsprogs工具,并为ext3功能设计与实现提供了宝贵建议。Alexander Viro贡献了ext3目录搜索部分代码。
对本文的任何评注,请电邮至Andrew Morton。
如对本软件有怀疑、问题或者bug报告,请电邮至ext3用户邮件列表。
该邮件列表订阅指南参见https://listman.redhat.com/mailman/listinfo/ext3-users/
一个比较突出的问题是磁盘限额。在2.4.7内核的磁盘限额代码中,有一些已知的因素会引起死锁,ext3又增加了新的不稳定因素。这与在-ac内核中的磁盘限额代码有很大不同,一旦这部分并入Linus的内核中,我们会继续开发并测试ext3的磁盘限额代码。这并不是说ext3加上磁盘限额一定会引起崩溃--但如果你长时间大负荷使用文件系统,代码将会引起锁死,你必须重启才能恢复受影响的文件系统操作。我们只对-ac内核进行了磁盘限额代码测试--在这种情况下工作完全正常。
在filesystems菜单中选取ext3。请同时勾选“JBD debugging support”,因为如果出了什么错,这可以给出有用的诊断信息。通常不用选取“Buffer head tracing”--它将耗用大量内存。然而如果你遇到ext3的‘声明失败’错,请在提出bug报告前,设置为允许“缓冲跟踪”,看看能否重复产生这个问题--那会产生大量有用信息。
ext3文件系统支持可以编译进内核,也可以编译成可挂载模块。编进内核的好处在于,如果出现错误,可以简化诊断信息的收集工作。
你需要从http://e2fsprogs.sourceforge.net/下载e2fsprogs 1.25或更新的版本。
tune2fs -j /dev/hdXX命令。文件系统现在就成为ext3了。换句话说,只要简单的卸载/重挂载它(当然要在相应修改/etc/fstab之后),你就可以把这个区作为ext3格式使用了。要用ext3格式挂载根分区,最简单的方法是重启。
mke2fs -j /dev/hdXX命令在该设备上建立新的ext3文件系统。
e2fsprogs提供的e2fsck程序可以进行日志回溯,因此在已经破坏的ext3文件系统上运行
e2fsck -fy /dev/hdXX就可以修复它,并允许以ext2格式挂载。
ext3软件将拒绝挂载ext2文件系统--目前文件系统上一定要有日志文件才可以。
LILO: linux rootfstype=ext2
LILO: linux rootflags=data=journal
这在根文件系统是ext3,并且未正常关机的情况下会引起问题。处在这种状态下的ext3与ext2不兼容--需要首先执行恢复操作。这一不兼容性记录在文件系统的超级块中,完全兼容ext2的引导管理器应该给出错误提示,并拒绝打开这个文件系统上的文件。这就是我们不希望见到的,系统不能启动!
看来Open Firmware没做完整的超级块兼容性检查,所以它仍然会从需要修复的ext3文件系统载入文件。只能说万幸。
然而SILO要进行完整的兼容性检查,从需要修复的ext3文件系统引导会令SILO产生“too many symlinks”错误,或别的什么问题。要避免这类严重问题的发生,你需要确保引导区文件系统是ext2类型而不是ext3的(或打上补丁让SILO略过兼容性检查?)。
最新版的mount能认识ext3并自动选择ext3文件系统类型。The version of fsck in e2fsprogs-1.23
and later can also do this if the fstype is auto. Here''s
the state of play:
注意:要使fstypeauto能正常工作,你必须使用e2fsprogs-1.23或更高版本!
注意:如果你使用的是最近的Red Hat发行版,并且从官方安装包自己编译util-linux,你可能会在挂载文件系统时遇到挂载失败问题。这是由于Red Hat在他们发行的版本中,给mount命令加上了“-O”参数。这一选项加在他们的/etc/rc.d/rc.sysinit里,这就使得标准的mount命令返回“unrecognised option -O”错误。
解决方法是,编辑/etc/rc.d/rc.sysinit,去掉任何“-O no_netdev”字符串。
注意:使用“自动”来指定根文件系统类型将使/bin/df不正常,从而使根文件系统的信息不能输出。
解决方法:始终在/etc/fstab中指定根文件系统为ext3。
这一例行检查对ext3同样有效,很可能你不希望这样--我们选择ext3的目的之一就是减少由fsck引起的漫长的停机时间。
因此对于ext3来说,关闭这一功能比较好。用以下命令
tune2fs -i 0 -c 0 /dev/hdxx
注意:这意味着周期性的停机并手动检查磁盘是你的责任。多数Linux发行版中,通过建立/forcefsck文件然后重启,很容易做到。
你需要一个非常新的e2fsprogs,版本为1.23-WIP-0727或更高。
安装trd:
mknod /dev/trd b 240 0
insmod trd.o trd_size=50000(对一个50MB的设备)
mke2fs -O journal_dev /dev/trd
mke2fs -J device=/dev/trd /dev/hda5
mount /dev/hda5 /mnt/some/place -t ext3
当然,你可以使用真正硬盘上的分区作为外部日志设备--只要用/dev/hdXX替换上述/dev/trd。
注意:只能在测试中使用虚拟磁盘驱动器来模拟NVRAM设备。这样做会失去日志带来的恢复时间上的好处(你一定要用fsck完整检查文件系统),事实上在系统崩溃后,你将丢失数据并增大文件系统毁坏的几率。