精华内容
下载资源
问答
  • Linux Ext2/Ext3/Ext4文件系统

    千次阅读 2019-05-18 19:43:00
    一、Ext2磁盘结构 二、Ext2 索引节点和数据块管理 三、Ext3文件系统 四、Ext4文件系统 一、Ext2磁盘结构 Ext2文件系统的磁盘结构如下图: 任何Ext2分区的第一个块都是引导块,引导块保存了分区和内核启动...

    目录

    一、Ext2磁盘结构

    二、Ext2 索引节点和数据块管理

    三、Ext3文件系统

    四、Ext4文件系统


    一、Ext2磁盘结构

          Ext2文件系统的磁盘结构如下图:

          任何Ext2分区的第一个块都是引导块,引导块保存了分区和内核启动加载器相关的信息,不受文件系统管理。其余磁盘块被Ext2分成块组,每组包含的数据块和索引节点等都存放在相邻的磁道上,所有的块组大小相同且顺序的存放在磁盘上,内核可以根据块组的整数索引很快计算该块组在磁盘上的具体位置。由于内核尽可能的把同一个文件的数据块存放在同一个块组中,所以块组减少了文件碎片,减少了访问该文件的磁盘平均寻道时间。每个块组都包含如下信息:

     1、超级块

          是描述文件系统相关信息的超级块的一个拷贝,数据结构为ext2_super_block,主要记录了索引节点总数,块总数,空闲块数,空闲索引节点数,每块组的块数和索引节点数,分区的状态,安装操作计数器和最后一次安装时间等,用于文件系统一致性检查。

    2、组描述符

        记录当前块组相关信息,数据结构为ext2_group_desc,主要包含数据块位图,索引节点位图对应的块号,第一个索引节点表块的块号,组中空闲块和空闲索引节点的个数,即可以根据组描述符快速定位数据块位图,索引节点位图和索引节点表。

    3、数据库块位图和索引节点位图

         位图就是位的序列,其中0表示该位对应的数据块或者索引节点是空闲的,1表示占用的,每个位图都存放在单独的块中,比如块的大小是1024字节,可以描述的1024*8=8192个块的状态。根据位图可以快速定位处于空闲的数据块或者索引节点。

    4、索引节点表 

         索引节点表就是一组连续的索引节点,存放在一组连续的磁盘块上,第一个磁盘块的块号保存在组描述符中的bg_inode_table字段中。所有的索引节点大小相同,即128字节,比如大小为4096字节的块可以包含32个索引节点。每个Ext2索引节点的数据结构为ext2_innode,主要包含了文件类型,文件访问控制列表,目录访问控制列表,文件大小,文件数据块数,最后访问时间,最后修改时间,指向第一个数据块的指针等文件属性信息。

        索引节点大小有限制,如果需要增加其他的文件属性则需要使用增强属性机制,增加的属性都保存在一个单独的数据块中,索引节点的i_file_acl字段指向该数据块,linux提供setxattr(),getxattr(),listxattr()等系统调用来处理增强属性。增强属性机制主要是为了实现ACL访问控制列表而引入的,通过该列表可以限定某个文件允许访问的用户或者用户组及其对应的权限。

    5、数据块

          不同文件类型使用数据块的方式不同,主要有以下几种情形:

    • 普通文件在创建时是空的,不需要数据块,只有写入数据时才分配数据块,也可通过truncate()系统调用清空其对应的数据块。
    • 目录对应的数据块是一个特殊的数据结构,ext2_dir_entry_2,包含了索引节点号,目录项长度,文件名长度,文件类型和文件名5个属性,根据索引节点号可以快速定位对应的索引节点,根据目录项长度可以找到下一个目录项的起始地址。
    •  符号链接的数据块取决于符号链接的路径名长度,如果小于60个字符则放在索引节点的i_blocks字段,如果大于60个字符则采用跟目录相同的数据块。
    •  设备文件,管道和套接字都不需要数据块,相关信息都存放在索引节点中

         参考:Linux Ext2 数据结构及文件存储解析

    二、Ext2 索引节点和数据块管理

       Linux上通过superformat或者fdformat程序格式化磁盘,然后通过mke2fs程序创建Ext2文件系统,创建时需要指定块大小和分配的索引节点个数,保留块的百分比(默认5%),然后初始化所有的块组的组描述符,索引节点表和位图等,对有缺陷的块会用一个链表组织起来放到lost+found目录下。

       创建索引节点即文件或者目录等时,会先从父目录所属的块组开始往后查找空闲索引节点足够多的合适的块组,然后根据该该块组的索引节点位图找到一个空闲的索引节点,将相应的位置位,初始化索引节点属性和访问控制列表,更新关联的计数器属性和链表,最后将包含该索引节点的磁盘块读入页高速缓存中并返回新索引节点对象的地址。

       删除索引节点时会根据索引节点号和每个块组包含的索引节点数找到该索引节点所属的块组,找到对应的索引节点位图,更新关联的计数器,将位图对应的位置0。删除索引节点前必须删除内核相关的数据结构,删除指向该索引节点的硬链接并回收对应的数据块。

       从相对于文件起始位置的偏移量f开始读取a字节时,需要根据f和块大小计算偏移量f的字节所处的文件块号,因为数据块在磁盘上不一定是连续存储,所以需要将文件块号同相对于磁盘分区起始位置的逻辑块号建立映射,Ext2是通过索引节点内的i_block字段保存对应映射关系,该字段是一个定长的数组,长度通过EXT2_N_BLOCKS指定,默认为15。前12个数组元素表示0-11文件块号对应的逻辑块号;下标为12的元素包含的逻辑块号指向的数据块包含一个数组,假设块大小为b字节,逻辑块号为4字节,能够映射的文件块号的范围是12~b/4+11; 下标为13的元素包含的逻辑块号指向的数据块包含一个数组,数组每个元素包含的逻辑块号对应的数据块同样包含一个数组,即二级间接映射,能够映射的文件块号范围是b/4+12~(b/4)^2+b/4+11; 下标为14的元素为三级映射,能够映射的文件块号范围是(b/4)^2+b/4+12~(b/4)^3+(b/4)^2+b/4+11,如下图所示:

        

        如果读取的文件块号小于12,则两次磁盘访问就可以读取目标数据,一次找到逻辑块号,一次读取逻辑块号对应的磁盘块,如果大于12个则可能需要多次访问磁盘,因为索引节点和数据块的数据都在页高速缓存中,所以可以极大的减少磁盘访问次数,提高访问效率。上述数据块的查找机制表明块的大小会直接影响寻址方式并限制文件系统支持的文件最大字节数,如下图:

          文件的洞是普通文件的一部分,具体来说是一堆随机数量的空字符,但是这些空字符不存放在磁盘上,通常用于对文件做散列。每个索引节点的i_size字段定义程序所看到的文件大小,包含洞的,i_blocks字段存放实际分配给文件的以512字节为单位的有效的数据块的数量,即i_size会大于i_blocks算出来的文件大小。

         进程创建一个新的文件时只是创建了一个新的索引节点,只有当有数据需要写入该文件时才会分配数据块,分配数据块通过ext2_get_block()函数完成,如果存在未写满数据的已分配数据块则返回该数据块,否则分配一个新的空闲的数据块,在获取目标块的同时,Linux也会给文件分配一组多达8个的相邻的预分配块。为了减少文件碎片,Ext2首先在预分配块中查找符合条件的目标块,如果失败则尽可能在已分配给文件的最后一个块的附近找一个新块,如果失败则尝试在包含该索引节点的块组找一个空闲的块,还是失败则从邻近的块组中查找空间的块。

       当进程删除文件或者将文件大小设置为0时必须释放文件所属的所有数据块,通过ext2_truncate()函数完成。该函数会扫描i_block字段,找到该文件的所有的逻辑块号,然后循环调用ext2_free_blocks()函数来逐一释放这些块,释放时会找到数据块所属的块组的数据块位图,将对应的位置0,然后更新相关计数器即可。

         参考:ext2文件系统

    三、Ext3文件系统

        Linux系统启动过程中会调用e2fsck程序检查文件系统超级块对象的s_mount_state字段,如果他不等于EXT2_VALID_FS,说明文件系统因为断电故障或者系统崩溃等原因未正常退出,此时保存在内存中的未及时刷新到磁盘上的相关数据结构可能处于不一致状态,e2fsck程序就开始检查并适当修正磁盘上文件系统的所有数据结构。这种文件系统一致性检查的所花费的时间取决于要检查的文件数和目录数,随着磁盘容量扩大,文件数和目录数不断增加,耗时也不断加长。为了避免这种耗时性的一致性检查引入了日志文件系统,通过一个特殊的磁盘区来记录磁盘的写操作,这种记录就叫做日志,当文件系统不一致后通过日志来修复相关数据结构就很快了,因为可以通过日志很快定位故障前发生修改的磁盘数据结构。所谓日志是指执行任何磁盘写操作时,先把待写的块的副本写入日志中,等写入日志的I/O数据传送完成时就会开始该块与对应磁盘逻辑块之间的I/O数据传输,即正常的磁盘写入,等写入完成,日志中的块副本就会被丢弃,视为无效的。当从系统故障中恢复时,e2fsck程序会将故障前已经提交到日志的未写入磁盘的块副本重新写入文件系统,故障前未提交到日志的未写入磁盘块则忽略,保证一定程度的数据一致性。

        Ext3是Ext2的增强版,与Ext2兼容,其磁盘数据结构与Ext2基本相同,在Ext2的基础上重点强化了日志功能。文件系统通常有两种块,包含元数据的块和包含普通文件数据的块,Ext2和Ext3中元数据是指超级块,块组描述符,索引节点,位图块等,不同文件系统使用不同的元数据。Ext3支持将元数据块和普通文件数据块都写入日志中,具体提供了三种不同大的日志模式:

    1. 日志(journal),文件系统的所有文件数据和元数据的改变都写入日志中。该模式减少了文件修改丢失,但是增加了额外的磁盘开销,是最安全和最慢的模式
    2. 预定(ordered),只有文件系统的元数据的修改才写入日志,但是保证当元数据块和相关的文件数据块都需要写入磁盘时,文件数据块会比元数据块先写入磁盘,此时元数据块已经在日志中保存了一个副本。该模式是Linux的默认模式,可以减少普通文件修改的丢失,因为要维护元数据块和普通文件块的相关性和两者的磁盘写入顺序,相比写回模式有轻微的性能损耗。
    3. 写回(writeback),只有文件系统的元数据的修改才写入日志,对元数据块和普通文件数据块写入磁盘的顺序不做限制,由页高速缓存的脏页刷新机制决定。该模式是其他日志文件系统使用的方式,是最快的模式,但是当系统故障时存在文件损坏的风险。

    可以通过mount命令在设备挂载的时候指定日志模式,如mount –t ext3 –odata=writeback /dev/sda2 /jdisk。

         Ext3的日志通常放在根目录下名称.journal的隐藏文件中,Ext3本身不处理日志,而是借助日志块设备(JDB)的通用内核层实现,JDB本身必须保证所有的日志记录不能因系统故障而损坏。Ext3与JDB交互时基于以下三个单元:

        1、日志记录,本质是对文件系统将要执行的一次低级操作的描述,JDB层使用的日志记录是由低级操作所修改的整个缓冲区组成,日志记录在日志内部表现为普通的数据块。

        2、原子操作处理,即一个系统调用对磁盘数据结构的一组低级操作,当从系统故障中恢复时,文件系统确保这组低级操作要么都成功,要么都失败。

        3、事务,将一个处理如一次函数调用涉及的多个原子操作处理放在一个事务中,一个事务下的所有日志记录都存放在日志的连续块中,只有当该事务下所有的日志记录的块副本都写入磁盘即事务已完成时才会回收该事务使用的块,即丢弃该事务下所有的日志记录。事务一旦被创建就能接受新的原子操作处理,当事务持续的时间超过5s或者没有空闲块保存日志记录则会停止接受新的原子处理。事务未完成时按照其是否接受新的原子操作处理分为以下几种状态:

    •      T_RUNNING,还在接受新的原子操作处理
    •      T_LOCKED,不接受新的原子操作处理,其中一部分未完成
    •     T_FLUSH,所有原子操作都已完成,磁盘写入未完成
    •     T_COMMIT,所有的日志记录都已写入磁盘,此时事务被标记为未完成

    日志中可能包含多个事务,任何时刻只有一个事务出于T_RUNNING状态下,称为活动事务。

           参考:《深入理解Linux内核》(第三版)

                       Ext3日志原理

    四、Ext4文件系统

         Ext4完全向后兼容Ext3,其磁盘数据结构与Ext3基本一致,因为是基于Ext3做的改进,所以Ext4对Linux只是一种临时的过渡解决方案,最终会被一种全新的下一代文件系统取代。目前Ext4尚未完全成熟,部分新特性如数据校验和、一流的配额支持和大分配块等还在开发完善中,其与Ext3的主要区别如下:

    1. ext3 文件系统使用 32 位寻址,这限制它最大支持 2 TiB 文件大小和 16 TiB 文件系统系统大小;ext4 使用 48 位寻址,理论上可以在文件系统上分配高达 16 TiB 大小的文件,其中文件系统大小最高可达 1000000 TiB(1 EiB)
    2. ext3目前只支持32,000个子目录,而ext4支持无限数量的子目录。
    3. ext4引入区段extent,extent是存放文件块号和逻辑块号映射关系的数据结构,是对Ext3中inode数据结构的一个改进,从而节省大文件下多次访问磁盘获取索引节点表的性能开销。
    4. ext4增加了日志校验,检查日志文件的正确和完整性,避免被非法篡改
    5. ext3 提供粒度为一秒的时间戳,ext4 通过纳秒级的时间戳
    6. ext2 和 ext3 都不直接支持在线碎片整理 —— 即在挂载时会对文件系统进行碎片整理,ext4 通过 e4defrag 提供支持

    参考:   Linux.ext4文件系统.inode和extent

                  深入理解 ext4 等 Linux 文件系统

     

    展开全文
  • 在windows下使用Ext2Fsd可以访问EXT4格式的分区,试试吧
  • Linux之ext\ext2\ext3\ext4的介绍与区别 文件系统名称 介绍 特点 优势 ext 第一代扩展文件系统,一种文件系统,于1992年4月发表,是为linux核心所做的第一个文件系统。采用Unix文件系统(UFS)的元数据...

    Linux之ext\ext2\ext3\ext4的介绍与区别

    文件系统名称介绍特点优势
    ext第一代扩展文件系统,一种文件系统,于1992年4月发表,是为linux核心所做的第一个文件系统。采用Unix文件系统(UFS)的元数据结构,以克服MINIX文件系统性能不佳的问题。它是在linux上,第一个利用虚拟文件系统实现出的文件系统克服MINIX文件系统性能不佳的问题
    ext2第二代扩展文件系统是LINUX内核所用的文件系统。它开始由Rémy Card设计,用以代替ext,于1993年1月加入linux核心支持之中。ext2 的经典实现为LINUX内核中的ext2fs文件系统驱动,最大可支持2TB的文件系统,至linux核心2.6版时,扩展到可支持32TB。在ext2文件系统中,文件由inode(包含有文件的所有信息)进行唯一标识。一个文件可能对应多个文件名,只有在所有文件名都被删除后,该文件才会被删除。此外,同一文件在磁盘中存放和被打开时所对应的inode是不同的,并由内核负责同步。文件系统高效稳定
    ext3EXT3是第三代扩展文件系统(英语:Third extended filesystem,缩写为ext3),是一个日志文件系统,常用于Linux操作系统。.Ext3文件系统是直接从Ext2文件系统发展而来,目前ext3文件系统已经非常稳定可靠。它完全兼容ext2文件系统。用户可以平滑地过渡到一个日志功能健全的文件系统中来。1、高可用性:系统使用了ext3文件系统后,即使在非正常关机后,系统也不需要检查文件系统。 2、数据的完整性:避免了意外宕机对文件系统的破坏。 3、文件系统的速度:因为ext3的日志功能对磁盘的驱动器读写头进行了优化。所以,文件系统的读写性能较之Ext2文件系统并来说,性能并没有降低。 4、数据转换 :“由ext2文件系统转换成ext3文件系统非常容易。 5、多种日志模式
    ext4EXT4是第四代扩展文件系统(英语:Fourth extended filesystem,缩写为 ext4)是Linux系统下的日志文件系统,是ext3文件系统的后继版本。Ext4是由Ext3的维护者Theodore Tso领导的开发团队实现的,并引入到Linux2.6.19内核中。Ext4是Ext3的改进版,修改了Ext3中部分重要的数据结构,而不仅仅像Ext3对Ext2那样,只是增加了一个日志功能而已。Ext4可以提供更佳的性能和可靠性,还有更为丰富的功能1.与Ext3兼容:执行若干条命令,就能从Ext3在线迁移到Ext4,而无须重新格式化磁盘或重新安装系统。 2.更大的文件系统和更大的文件:较之Ext3目前所支持的最大16TB文件系统和最大2TB文件,Ext4分别支持1EB(1,048,576TB,1EB=1024PB,1PB=1024TB)的文件系统,以及16TB 的文件。 3.无限数量的子目录:Ext3目前只支持32,000个子目录,而Ext4支持无限数量的子目录。 4.Extents:Ext4引入了现代文件系统中流行的extents概念,每个 extent 为一组连续的数据块,相比Ext3采用间接块映射,提高了不少效率。 5.多块分配:Ext4 的多块分配器“multiblock allocator”(mballoc) 支持一次调用分配多个数据块。 *6.延迟分配 7.快速 fsck 8.日志校验 9.“无日志”(No Journaling)模式 10.在线碎片整理 11.inode 相关特性:较之Ext3默认的inode大小128字节,ext4默认inode大小为256字节
    展开全文
  • 可以读写Ext2,以Ext2方式挂载Ext3文件系统(不支持Ext3日志),不支持中文! It provides Windows NT4.0/2000/XP/2003/Vista/2008 with full access to Linux Ext2 volumes (read access andwrite access). This ...
  • ext2、ext3与ext4的区别

    万次阅读 2018-09-03 11:15:43
    ext2与ext3 Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表。索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。一个文件系统...

    ext2与ext3

    Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表。索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应。系统给每个索引节点分配了一个号码,也就是该节点在数组中的索引号,称为索引节点号。 linux文件系统将文件索引节点号和文件名同时保存在目录中。所以,目录只是将文件的名称和它的索引节点号结合在一起的一张表,目录中每一对文件名称和索引节点号称为一个连接。 对于一个文件来说有唯一的索引节点号与之对应,对于一个索引节点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问它。
    Linux之前缺省情况下使用的文件系统为Ext2,ext2文件系统的确高效稳定。但是,随着Linux系统在关键业务中的应用,Linux文件系统的弱点也渐渐显露出来了:其中系统缺省使用的ext2文件系统是非日志文件系统。这在关键行业的应用是一个致命的弱点。本文向各位介绍Linux下使用ext3日志文件系统应用。
    Ext3文件系统是直接从Ext2文件系统发展而来,目前ext3文件系统已经非常稳定可靠。它完全兼容ext2文件系统。用户可以平滑地过渡到一个日志功能健全的文件系统中来。这实际上了也是ext3日志文件系统初始设计的初衷。

    Ext3日志文件系统的特点
    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模式。系统管理人员可以根据系统的实际工作要求,在系统的工作速度与文件数据的一致性之间作出选择。


    实际使用Ext3文件系统
    创建新的ext3文件系统,例如要把磁盘上的hda8分区格式化ext3文件系统,并将日志记录在/dev/hda1分区,那么操作过程如下:
    [root@stationxx root]# mke2fs -j /dev/hda8
    mke2fs 1.24a (02-Sep-2001)
    Filesystem label=
    OS type: Linux
    Block size=1024 (log=0)
    .. .. ..
    Creating journal (8192 blocks): done
    Writing superblocks and filesystem accounting information: done
    This filesystem will be automatically checked every 30 mounts or
    180 days, whichever comes first. Use tune2fs -c or -i to override.
    在创建新的文件系统时,可以看到,ext3文件系统执行自动检测的时间为180天或每第31次被mount时,实际上这个参数可以根据需要随意调节。

    以下将新的文件系统mount到主分区/data目录下:
    [root@stionxx root]# mount -t ext3 /dev/hda8 /data
    说明:以上将已格式化为ext3文件系统的/dev/hda8分区加载到/data目录下。
    ext3 基于ext2 的代码,它的磁盘格式和 ext2 的相同;这意味着,一个干净卸装的 ext3 文件系统可以作为 ext2 文件系统重新挂装。Ext3文件系统仍然能被加载成ext2文件系统来使用,你可以把一个文件系统在ext3和ext2自由切换。这时在ext2文件系统上的ext3日志文件仍然存在,只是ext2不能认出日志而已。

    以转换文件系统为例,将ext2文件系统转换为ext3文件系统,命令如下:
    [root@stationxx root]# tune2fs -j /dev/hda9
    tune2fs 1.24a (02-Sep-2001)
    Creating journal inode: done
    This filesystem will be automatically checked every 31 mounts or
    180 days, whichever comes first. Use tune2fs -c or -i to override.
    这样,原来的ext2文件系统就转换成了ext3文件系统。注意将ext2文件系统转换为ext3文件系统时,不必要将分区缷载下来转换。
    转换完成后,不要忘记将/etc/fstab文件中所对应分区的文件系统由原来的ext2更改为ext3。

    ext3日志的存放位置
    可以将日志放置在另外一个存储设备上,例如存放到分区/dev/hda8。例如要在/dev/hda8上创建一个ext3文件系统,并将日志存放在外部设备/dev/hda2上,则运行以下命令:
    [root @stationxx root]#mke2fs -J device=/dev/hda8 /dev/hda2
    ext3文件系统修复
    新的e2fsprogs中的e2fsck支持ext3文件系统。当一个ext3文件系统被破坏时,先卸载该设备,在用e2fsck修复:
    [root @stationxx root] # umount /dev/hda8
    [root @stationxx root] #e2fsck -fy /dev/hda8

     

    ext3的优点
    为什么你需要从ext2迁移到ext3呢?以下有四个主要原因:可用性、数据完整性、速度、易于迁移。
    1、可用性
    在非正常当机后(停电、系统崩溃),只有在通过e2fsck进行一致性校验后,ext2文件系统才能被装载使用。运行e2fsck的时间主要取决于 ext2文件系统的大小。校验稍大一些的文件系统(几十GB)需要很长时间。如果文件系统上的文件数量多,校验的时间则更长。校验几百个GB的文件系统可能需要一个小时或更长。这极大地限制了可用性。相比之下,除非发生硬件故障,即使非正常关机,ext3也不需要文件系统校验。这是因为数据是以文件系统始终保持一致方式写入磁盘的。在非正常关机后,恢复ext3文件系统的时间不依赖于文件系统的大小或文件数量,而依赖于维护一致性所需“日志”的大小。使用缺省日志设置,恢复时间仅需一秒(依赖于硬件速度)。
    2、数据完整性
    使用ext3文件系统,在非正常关机时,数据完整性能得到可靠的保障。你可以选择数据保护的类型和级别。你可以选择保证文件系统一致,但是允许文件系统上的数据在非正常关机时受损;这是可以在某些状况下提高一些速度(但非所有状况)。你也可以选择保持数据的可靠性与文件系统一致;这意味着在当机后,你不会在新近写入的文件中看到任何数据垃圾。这个保持数据的可靠性与文件系统一致的安全的选择是缺省设置。
    3、速度
    尽管ext3写入数据的次数多于ext2,但是ext3常常快于ext2(高数据流)。这是因为ext3的日志功能优化硬盘磁头的转动。你可以从3种日志模式中选择1种来优化速度,有选择地牺牲一些数据完整性。
    4、易于迁移
    你可以不重新格式化硬盘,并且很方便的从ext2迁移至ext3而享受可靠的日志文件系统的好处。对,不需要做长时间的、枯燥的、有可能失误的“备份-重新格式化-恢复”操作,就可以体验ext3的优点。有两种迁移的方法:
    · 如果你升级你的系统,Red Hat Linux安装程序会协助迁移。需要你做的工作 就是为每一个文件系统按一下选择按钮。
    · 使用tune2fs程序可以为现存的ext2文件系统增加日志功能。如果文件系统在转换的过程已经被装载了(mount),那么在root目录下会出现文件”.journal”;如果文件系统没有被装载,那么文件系统中不会出现该文件。转换文件系统,只需要运行tune2fs –j /dev/hda1(或者你要转换的文件系统所在的任何设备名称),同时把文件/etc/fstab中的ext2修改为ext3。如果你要转换自己的根文件系统,你必须使用initrd引导启动。参照mkinitrd的手册描述运行程序,同时确认自己的LILO或GRUB配置中装载了initrd(如果没有成功,系统仍然能启动,但是根文件系统会以ext2形式装载,而不是ext3,你可以使用命令cat /proc/mounts 来确认这一点。)详情可参看tune2fs命令的man page在线手册(执行man tune2fs)。

    总而言之,ext3日志文件系统是目前linux系统由ext2文件系统过度到日志文件系统最为简单的一种选择,实现方式也最为简洁。由于是直接从ext2文件系统发展而来,系统由ext2文件系统过渡到ext3日志文件系统升级过程平滑,可以最大限度地保证系统数据的安全性。目前linux系统要使用日志文件系统,最保险的方式就是选择ext3文件系统。

     


    最新的ext4
    Linux kernel 自 2.6.28 开始正式支持新的文件系统 Ext4。 Ext4 是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性,还有更为丰富的功能:

    1. 与 Ext3 兼容。 执行若干条命令,就能从 Ext3 在线迁移到 Ext4,而无须重新格式化磁盘或重新安装系统。原有 Ext3 数据结构照样保留,Ext4 作用于新数据,当然,整个文件系统因此也就获得了 Ext4 所支持的更大容量。
    2. 更大的文件系统和更大的文件。 较之 Ext3 目前所支持的最大 16TB 文件系统和最大 2TB 文件,Ext4 分别支持 1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的文件系统,以及 16TB 的文件。
    3. 无限数量的子目录。 Ext3 目前只支持 32,000 个子目录,而 Ext4 支持无限数量的子目录。
    4. Extents。 Ext3 采用间接块映射,当操作大文件时,效率极其低下。比如一个 100MB 大小的文件,在 Ext3 中要建立 25,600 个数据块(每个数据块大小为 4KB)的映射表。而 Ext4 引入了现代文件系统中流行的 extents 概念,每个 extent 为一组连续的数据块,上述文件则表示为“该文件数据保存在接下来的 25,600 个数据块中”,提高了不少效率。
    5. 多块分配。 当写入数据到 Ext3 文件系统中时,Ext3 的数据块分配器每次只能分配一个 4KB 的块,写一个 100MB 文件就要调用 25,600 次数据块分配器,而 Ext4 的多块分配器“multiblock allocator”(mballoc) 支持一次调用分配多个数据块。
    6. 延迟分配。 Ext3 的数据块分配策略是尽快分配,而 Ext4 和其它现代文件操作系统的策略是尽可能地延迟分配,直到文件在 cache 中写完才开始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来可以显著提升性能。
    7. 快速 fsck。 以前执行 fsck 第一步就会很慢,因为它要检查所有的 inode,现在 Ext4 给每个组的 inode 表中都添加了一份未使用 inode 的列表,今后 fsck Ext4 文件系统就可以跳过它们而只去检查那些在用的 inode 了。
    8. 日志校验。 日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。Ext4 的日志校验功能可以很方便地判断日志数据是否损坏,而且它将 Ext3 的两阶段日志机制合并成一个阶段,在增加安全性的同时提高了性能。
    9. “无日志”(No Journaling)模式。 日志总归有一些开销,Ext4 允许关闭日志,以便某些有特殊需求的用户可以借此提升性能。
    10. 在线碎片整理。 尽管延迟分配、多块分配和 extents 能有效减少文件系统碎片,但碎片还是不可避免会产生。Ext4 支持在线碎片整理,并将提供 e4defrag 工具进行个别文件或整个文件系统的碎片整理。
    11. inode 相关特性。 Ext4 支持更大的 inode,较之 Ext3 默认的 inode 大小 128 字节,Ext4 为了在 inode 中容纳更多的扩展属性(如纳秒时间戳或 inode 版本),默认 inode 大小为 256 字节。Ext4 还支持快速扩展属性(fast extended attributes)和 inode 保留(inodes reservation)。
    12. 持久预分配(Persistent preallocation)。 P2P 软件为了保证下载文件有足够的空间存放,常常会预先创建一个与所下载文件大小相同的空文件,以免未来的数小时或数天之内磁盘空间不足导致下载失败。 Ext4 在文件系统层面实现了持久预分配并提供相应的 API(libc 中的 posix_fallocate()),比应用软件自己实现更有效率。
    13. 默认启用 barrier。 磁盘上配有内部缓存,以便重新调整批量数据的写操作顺序,优化写入性能,因此文件系统必须在日志数据写入磁盘之后才能写 commit 记录,若 commit 记录写入在先,而日志有可能损坏,那么就会影响数据完整性。Ext4 默认启用 barrier,只有当 barrier 之前的数据全部写入磁盘,才能写 barrier 之后的数据。(可通过 "mount -o barrier=0" 命令禁用该特性。)

    展开全文
  • Windows读取Ext4分区的工具 Ext2Read

    热门讨论 2012-09-17 11:24:00
    Ext2Read 它能查看 ext2/3/4 分区并从中拷贝文件和目录,支持 LVM2 和 EXT4 extent ,以及递归拷贝整个目录。
  • Ext2、Ext3、Ext4的区别

    千次阅读 2018-10-09 23:16:51
    Ext3对Ext2只是增加了一个日志功能而已,Ext4是Ext3的改进版,修改了Ext3中部分重要的数据结构,提供更加的性能和可靠性,更丰富的功能,更大的文件系统和更大的文件。(Ext3支持最大16TB文件系统和最大2TB文件,Ext...

    这三个都是文件的系统格式

    1>Linux kernel自2.6.28开始正式支持新的文件系统Ext4;

    2>Ext3对Ext2只是增加了一个日志功能而已,Ext4是Ext3的改进版,修改了Ext3中部分重要的数据结构,提供更加的性能和可靠性,更丰富的功能,更大的文件系统和更大的文件。(Ext3支持最大16TB文件系统和最大2TB文件,Ext4分别支持1EB的文件系统,和16TB的文件);

    3>Ext3只支持32000个子目录,而E相同支持理论值无限数量的子目录;

    4>Ext3的数据块分配策略是尽快分配,而Ext4是尽可能的额延迟分配,直到文件再cache中写完才开始分配数据块并写入磁盘,提升性能;

    5>可以快速的进行文件系统检查fsck,之前的fsck会很慢,因为它会检查所有的索引节点(inode),而Ext4给每个组的索引节点表中添加了一份未使用的inode的列表,执行fsck就可以跳过它们而只去检查那些在用的索引节点;

    6>Ext4在文件系统层面实现了持久化预分配并提供了相应的API,比应用软件自己实现更有效率。

     

     

    展开全文
  • ext2read

    千次阅读 2018-05-21 09:18:22
    最近在采用ext2read读取读硬盘里ext2文件系统分区文件的数据,该开源库是读取MBR分区下的各分区数据,对ext2read库里面的主要接口大概整理下: 1.int Ext2Read::scan_partitions(char *path, int diskno) scanMBR...
  • ext2、ext3、ext4文件系统区别

    千次阅读 2016-05-15 00:20:12
    ext2与ext3 Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表。索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。一个文件系统...
  • ext2文件系统源代码之ext2.h

    千次阅读 2016-03-16 15:09:21
    今天,我们看一下ext2文件系统源代码里面的ext2.h文件,这是一个头文件,里边都是一些函数的声明和一些结构体的定义,很多引用ext2的函数的地方都需要包含这个头文件,所以这个头文件用处是很广泛的,但是这个文件很...
  • linux文件系统ext2\ext3\ext4\xfs详解

    千次阅读 2020-03-15 14:25:43
    1.ext2 介绍: 第二代扩展文件系统是LINUX内核所用的文件系统,用以代替ext,是 EXT文件系统的升级版, 特点: 在ext2文件系统中,文件由inode(包含有文件的所有信息)进行唯一标识。一个文件可能对应多个...
  • Windows 7下使用Ext2Fsd读取写入Linux Ext3&Ext4分区文件
  • 【Linux】Linux Ext2文件系统

    千次阅读 2018-08-02 20:21:47
    下面以Linux的Ext2为例介绍文件系统的组成。 Ext2采用了分立式目录结构,即一个文件的目录分为目录项和索引节点两个部分。   Ext2的索引节点 在一个实际分立式目录的文件系统中,索引节点(inode)主要需要两...
  • Linux分区类型EXT2、EXT3、EXT4详解

    万次阅读 2016-05-04 14:29:25
    一、EXT2与EXT3  Linux之前缺省情况下使用的文件系统为Ext2ext2文件系统的确高效稳定。但是,随着Linux系统在关键业务中的应用,Linux文件系统的弱点也渐渐显露出来了:其中系统缺省使用的ext2文件系统是非日志...
  • Linux ext2 ext3 ext4 比较

    千次阅读 2012-12-07 11:29:56
    Ext4 是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性,还有更为丰富的功能: 1. 与 Ext3 兼容。 执行若干...
  • Ext2Fsd-0.62 实现在windows系统上对ext格式硬盘的读写 可以在win7 64位上完美支持中文文件名 网络上到处都是0.51版的,不能完美支持win7 64位
  • 文件系统名称 介绍 特点 优势 ext 第一代扩展文件系统,一种文件系统,于1992年4月发表,是为linux核心所做的第一个文件系统。采用Unix文件系统(UFS)的...ext2 第二代扩展文件系统是LINUX内核所用的文件系统。...
  • Ext2Fsd是在windows下读写ext2 和ext3格式的小工具,当经过linux系统格式化为ext3格式的U盘插入到windows系统下时,windows系统会提示不识别磁盘格式,建议格式化磁盘。安装了Ext2Fsd工具后,你就可以像读写FAT格式...
  • 之前我们讲过vfs虚拟文件系统的lookup文件查找的实现,知道当内核的缓存没有找到的时候,就会调用到inode_operations结构体的lookup函数来实现,我们今天以ext2文件系统为例,来讲解一下对应文件系统的lookup函数的...
  • Ext2文件系统详解

    千次阅读 2016-12-24 22:05:15
    任何Ext2分区中的第一个块从不受Ext2文件系统的管理,因为这一块是为分区的引导扇区所保留的。Ext2分区的其余部分被分割成块组(blockgroup),每个块组的分布图如下图1所示。正如你从图中所看到的,一些数据结构...
  • ext2、ext3、ext4、brtfs文件系统区别

    千次阅读 2013-01-18 19:24:18
    ext2、ext3、ext4、brtfs文件系统区别   EXT2 EXT2是second extended file system的简写。这个文件最早的目的是取代minix文件系统。开发于1993年。在设计之初没有提供journal的功能。 EXT2的磁盘分布 在ext2...
  • dumpe2fs是一个命令行工具,用于去转储 ext2/ext3/ext4 文件系统信息,这意味着它可以显示设备上文件系统的超级块和块组信息。 以下是dumpe2fs的一些常见用法: 1、展示文件系统快组信息 dumpe2fs /dev/sda1 2、检查...
  • ext2和ext3比较

    千次阅读 2012-05-08 17:48:11
    ext2文件系统:   ext2文件系统的数据块大小一般为 1024B、2048B 或 4096B  ext2文件系统采用的索引节点(inode):  索引节点采用了多重索引结构,主要体现在直接指针和3个间接指针。直接指针包含12个直接指针...
  • ext2fs/ext2_fs.h:没有那个文件或目录

    千次阅读 2017-07-28 11:06:09
    解决错误:ext2fs/ext2_fs.h:没有那个文件或目录
  • WIN10访问linux分区「ext2fsd」

    万次阅读 2019-03-26 17:07:46
    尝试ext2explore、Paragon ExtFS都不好用,强烈安利ext2fsd,可读写,很强大 转自:https://blog.csdn.net/cruise_h/article/details/12894135 ext2fsd是国人发起的项目,主页http://www.ext2fsd.com/下载:...
  • ext2与ext3 Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表。索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。一个文件系统...
  • 实际中,如何选择磁盘的文件系统,我进行了归纳和总结 1、查看linux系统下支持的文件系统 ll /lib/modules/3.10.0-229.el7.x86_64/kernel/fs/ ...ext2 255 bytes 2 TB 16 TB ext3 255 bytes 2 TB 16 TB ...
  • Windows 7下读写Ext2/Ext3/Ext4文件系统

    万次阅读 2012-05-11 13:29:52
    Linux文件系统格式一般是Ext3,现在Ext4也出来了。如何在Windows上读写这些分区呢? 推荐以下几款软件: ...在Windows7下,安装文件Ext2Fsd-0.51.exe需要设置为管理员运行和兼容WindowsXP SP3模式。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 559,483
精华内容 223,793
关键字:

ext2