Ext3的劣势
当初ext3的设计目标就是提供对于ext2的高度兼容,很多磁盘上的结构和都和ext2很相似。也因为这样,ext3缺乏很多最新设计中的功能,例如动态分配inode和可变块大小(frags或tails)。
ext3文件系统在被挂载为写入的时候,是不能进行fsck的。 ext3档案系统的倾倒作业在这个档案系统还是挂载中的时候执行可能会造成资料的损坏。
ext3不支持在其他文件系统上已经支持(例如:JFS2和ext4)的扩展。 在文件系统级别上,没有在线的ext3磁盘碎片整理工具。
离线的ext2磁盘碎片整理工具e2defrag,可以用于ext3文件系统,但前提是在使用前要将文件系统转换回ext2。 但依赖于功能位在文件系统中打开,e2defrag可能会毁灭数据;目前仍然不知道如何处理新的ext3功能。
有一些用户使用的磁盘碎片整理工具,例如Shake和defrag,这些工具通过复制文件来实现新分配的文件不存在碎片。但这只在文件系统相当空的情况下有效,并且该文件系统不经常出现碎片。目前没有真正的用于ext3的磁盘碎片整理工具。
事实上,磁盘碎片整理完全是一种人们在单用户单进程环境下(如DOS/早期Windows)工作时养成的旧习。
在多任务环境下,磁盘碎片的出现根本是不可避免的,而且碎片化的速度非常之快。操作系统的任务不是不负责任地给用户提供一个整理工具,而是应该在系统设计的时候消除碎片化对性能的伤害。比如Linux的块设备操作都要经过一个I/O调度层,通过在调度层中使用带有电梯算法的调度策略来消除碎片对性能的影响。
另外,如果将来固态硬盘普及乃至取代传统硬盘,也会让磁盘碎片的概念成为历史。 Ext3在写入日志时,并不做校验和。如果barrier=1没有作为加载参数(在文件/etc/fstab),并且如果硬件在无次序的写入缓存,在崩溃时会严重损坏文件系统(该选项在大多数流行的Linux发行版中都没有被启用,所以大多数发行版的处境都很危险。)
考虑下面的情况:如果硬盘无序的做写入操作(因为现在的硬盘都使用缓存机制以便摊销写入速度),那么有可能出现在写入处理的提交块时,其他的相关的块已经被写入了。如果电源掉电、内核panic出现在其他块写入前,那么系统将必须重启。在重启后,文件系统将按照正常方式重演日志,并且重演“优胜者”(具有提交块的处理,包括上面无效的但被标记为有效的提交块的处理)。于是,上面没有完成的磁盘写入将处理,但使用已经损坏的日志数据。文件系统在重演日志的时候,将错误的使用已经损坏的数据覆盖正常数据。如果使用校验和(如果假的“优胜者”处理被标记为互斥的校验和),文件系统会处理的更好,并且不会在磁盘上重演错误的数据。截止到2007年6月24日,已经有补丁来修复这个问题 。
2024-10-30 广告