ext2 是一个旧的 Linux 档桉系统,没有日志功能. 启用的时间通常需要很久。目前有许多 日志型态 的档桉系统可以以更快的速度及更好的效率完成系统启用和检查。

ext3 为 ext2 的日志版,提供了 metadata 日志系统 并且可以快速地使用日志系统复原。ext3 是个相当不错并且可靠的档桉系统. 它有额外的 hashed b-tree 索引功能,开启他后几乎任何情况内都是高效能。你可以在 mke2fs 指令加上 -O dir_index 开启这个功能。简单来说,ext3 是一个很杰出的档桉系统。

ReiserFS 整体来说是个相当不错的系统,它处理小型档桉(少于4kb)时效能会比 ext2 和 ext3 来的好。他使用的是 B*-tree 为基础的档桉系统. 另外也能很有效率地处理大型档桉。Linux 核心版本 2.4.18+ 后,ReiserFS 是一个相当有值得推荐的系统, 从很少,到很多档桉。ReiserFS 都可以处理的非常好。开机分割区并不建议使用此档桉系统。

XFS 是一个 metadata 日志系统,并且拥有完整的功能及针对延展性最佳化。如果您使用高速 SCSI或是纤维的储存装置,并且有持续不断的电源供应,我们才推荐您使用 XFS。 如果没有,请使用其他档桉系统。因为 XFS 大量地将要转送的资料快取在记忆体中,设计不好的程式(的确有一些程式在写入磁碟时不做一般的预防措施)可能当系统意外断电时损失大量的资料。

JFS 是 IBM 发展的高效能日志系统。目前虽然已经可以算是个完成品,关于他的稳定度并没有太多的优点及缺点。

EXT3是第三代扩展文件系统(英语:Third extended filesystem,缩写为ext3),是一个日志文件系统,常用于Linux操作系统。它是很多Linux发行版的默认文件系统。Stephen Tweedie在1999年2月的内核邮件列表中,最早显示了他使用扩展的ext2,该文件系统从2.4.15版本的内核开始,合并到内核主线中。

如果在文件系统尚未shutdown前就关机如(停电)时,下次重开机后会造成文件系统的资料不一致,故这时必须做文件系统的重整工作,将不一致与错误的地方修复。然而,此一重整的工作是相当耗时的,特别是容量大的文件系统,而且也不能百分之百保证所有的资料都不会流失。
为了克服此问题,使用所谓“日志式文件系统 (Journal File System)” 。此类文件系统最大的特色是,它会将整个磁盘的写入动作完整记录在磁盘的某个区域上,以便有需要时可以回溯追踪。
由于资料的写入动作包含许多的细节,像是改变文件标头资料、搜寻磁盘可写入空间、一个个写入资料区段等等,每一个细节进行到
飞客数据恢复中心提供
一半若被中断,就会造成文件系统的不一致,因而需要重整。
然而,在日志式文件系统中,由于详细纪录了每个细节,故当在某个过程中被中断时,系统可以根据这些记录直接回溯并重整被中断的部分,而不必花时间去检查其他的部分,故重整的工作速度相当快,几乎不需要花时间。
 

2优势

虽然它的性能(速度)不如它的竞争对手,例如JFS2,ReiserFSXFS,但它具有重要的优势,那就是它允许在适当的时候从流行的ext2文件系统升级,而无需备份和恢复数据;除此之外,它还具有比ReiserFSXFS更低的的CPU使用率
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在面临资料损毁的情况下还有挽回的机会。
 

3劣势

功能

当初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调度层,通过在调度层中使用带有电梯算法的调度策略来消除碎片对性能的影响。
另外,如果将来固态硬盘普及乃至取代传统硬盘,也会让磁盘碎片的概念成为历史。

反删除

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

压缩

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

大小限制

ext3有一个相对较小的对于单个文件和整个文件系统的最大尺寸。这些限制依赖于文件系统的块大小;下面的表格总结了这些限制:
块尺寸
最大文件尺寸
最大文件系统尺寸
16GiB
2TiB
256GiB
8TiB
2TiB
16TiB
16TiB
32TiB
8KiB块,只能用于允许8KiB页面的架构(例如alpha)。

日志中没有校验和

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

4Ext3日志文件系统特点

1、高可用性
系统使用了ext3文件系统后,即使在非正常关机后,系统也不需要检查文件系统。宕机发生后,恢复ext3文件系统的时间只要数十秒钟。
2、数据的完整性
ext3文件系统能够极大地提高文件系统的完整性,避免了意外宕机对文件系统的破坏。在保证数据完整性方面,ext3文件系统有2种模式可供选择。其中之一就是“同时保持文件系统及数据的一致性”模式。采用这种方式,你永远不再会看到由于非正常关机而存储在磁盘上的垃圾文件。
3、文件系统的速度
尽管使用ext3文件系统时,有时在存储数据时可能要多次写数据,但是,从总体上看来,ext3比ext2的性能还要好一些。这是因为ext3的日志功能对磁盘驱动器读写头进行了优化。所以,文件系统的读写性能较之Ext2文件系统并来说,性能并没有降低。
4、数据转换

ext2文件系统转换成ext3文件系统非常容易,只要简单地键入两条命令即可完成整个转换过程,用户不用花时间备份、恢复、格式化分区等。用一个ext3文件系统提供的小工具tune2fs,它可以将ext2文件系统轻松转换为ext3日志文件系统。另外,ext3文件系统可以不经任何更改,而直接加载成为ext2文件系统。

5、多种日志模式
Ext3有多种日志模式,一种工作模式是对所有的文件数据及metadata(定义文件系统中数据的数据,即数据的数据)进行日志记录(data=journal模式);另一种工作模式则是只对metadata记录日志,而不对数据进行日志记录,也即所谓data=ordered或者data=writeback模式。系统管理人员可以根据系统的实际工作要求,在系统的工作速度与文件数据的一致性之间作出选择。[3] 

5Ext3概述

ext3索引节点

开发商:开放源代码

全称:Third extended file system
发布时间:2001年11月(Linux 2.4.15)
分区标识:0x83 (MBR);EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT)

ext3文件系统,reiserfs,xfs,jsf那种性能好点的更多相关文章

  1. Ext3文件系统mount选项和文件属性介绍

    mount选项 设置方式 ext3 mount选项可以通过多个方式进行设置:1)内核编译时: 内核menuconfig通过CONFIG_EXT3_DEFAULTS_TO_ORDERED编译控制选项,来 ...

  2. ext3文件系统基础

    http://blog.csdn.net/haiross/article/category/1488205/2   block size: 是文件系统最小的单位,Ext2/Ext3/Ext4 的区块大 ...

  3. Ext3文件系统及JDB介绍

    Ext3介绍 对于ext3文件系统,磁盘空间划分一系列block groups,每个group有位图来跟踪inode和data块的分配和范围.其物理布局如下: Superblock:位于group内第 ...

  4. 高性能Linux服务器 第6章 ext3文件系统反删除利器ext3grep extundelete工具恢复rm -rf 误删除的文件

    高性能Linux服务器 第6章  ext3文件系统反删除利器ext3grep  extundelete工具恢复rm -rf 误删除的文件 只能用于ext3文件系统!!!!!!!高俊峰(高性能Linux ...

  5. 在Linux环境中使用Ext3文件系统

      Linux缺省情况下使用的文件系统为Ext2,ext2文件系统的确高效稳定.但是,随着Linux系统在关键业务中的应用,Linux文件系统的弱点也渐渐显露出来了:其中系统缺省使用的ext2文件系统 ...

  6. Linux ext2/ext3文件系统详解

    转载: Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表.索引节点是一个结构,它包含了一个文件的长度.创建及修改时间.权限.所属关系.磁盘中的位置等信 ...

  7. 87 resize2fs-增大或者收缩未加载的“ext2/ext3”文件系统的大小

    resize2fs命令被用来增大或者收缩未加载的"ext2/ext3"文件系统的大小.如果文件系统是处于mount状态下,那么它只能做到扩容,前提条件是内核支持在线resize., ...

  8. 81 dumpe2fs-打印“ext2/ext3”文件系统的超级块和快组信息

    dumpe2fs打印"ext2/ext3"文件系统的超级块和快组信息. 语法 dumpe2fs (选项) (参数) 选项 -b:打印文件系统中预留的块信息: -ob<超级块& ...

  9. EXT2/EXT3文件系统(二)

         整理自<鸟哥的Linux私房菜>,整理者:华科小涛http://www.cnblogs.com/hust-ghtao/ 接EXT2/EXT3文件系统(一):   2.3 Supe ...

随机推荐

  1. 使用AVCaptureSession显示相机预览

    #import <UIKit/UIKit.h> #import <AVFoundation/AVFoundation.h> @interface ViewController ...

  2. Python:构建缓冲带提取区域平均坡度

    前一段时间做提取坡度的问题,当时首先想到的是使用ArcEngine来做,因为记得有ITopoOperator接口可以构建缓冲带,用IExtractionRaster可以掩膜栅格数据,利用IPixelB ...

  3. windows下安装redis和php的redis扩展

    1.redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(s ...

  4. POS tagging的解釋

    轉錄文章~~ 什么是词性标注(POS tagging) Tue, 04/13/2010 - 10:36 — Fuller 词性标注也叫词类标注,POS tagging是part-of-speech t ...

  5. 15、SQL Server 触发器

    SQL Server 触发器 触发器是一种特殊的存储过程,只有当试图用数据操作语言DML来修改数据时才会触发,DML包含对视图和表的增.删.改. 触发器分为DML触发器和DDL触发器,其中DML触发器 ...

  6. gulp完成javascript压缩合并,css压缩

    最近需要对项目进行优化,主要是对js的压缩合并和css文件的压缩,查找相关资料之后发现gulp可以实现相关的功能,特此分享一下使用心得. 1.安装gulp gulp是基于Node.js的前端构建工具. ...

  7. SQL:42601

    以前遇到SQL中触发器的问题, 添加一个字段后,发现以前的程序的SQL报错 看了下表定义,有这样的一行代码 CREATE TRIGGER chintai_keiyaku_audit AFTER INS ...

  8. java对象与xml相互转换 ---- xstream

    XStream是一个Java对象和XML相互转换的工具,很好很强大.提供了所有的基础类型.数组.集合等类型直接转换的支持. XStream中的核心类就是XStream类,一般来说,熟悉这个类基本就够用 ...

  9. classpath and path.

    simply talk about the <path> and the <classpath> in java development. when the <path& ...

  10. linux设置中文环境

    确认当前环境 [root@Oracle11g ~]# df –h Filesystem            Size  Used Avail Use% Mounted on /dev/sda1    ...