`

(转)ext4文件系统新特性

阅读更多
本文转载自:http://linux.chinaunix.net/bbs/thread-1059437-1-1.html

Ext4是内核版本2.6.28的重要部分。

介绍

Ext4是Linux文件系统的一次革命。在很多方面,Ext4相对于Ext3的进步要远超过Ext3相对于Ext2的进步。Ext3相对于 Ext2的改进主要在于日志方面,但是Ext4相对于Ext3的的改进是更深层次的,是文件系统数据结构方面的优化。一个高效的、优秀的、可靠的和极具特点的文件系统就此诞生。

兼容性

任何Ext3文件系统都可以轻松的迁移到Ext4文件系统,你只需要在只读模式下运行几条命令即可。这就意味着你完全可以不格式化硬盘、不重装操作系统、不重装软件环境,就能够顺利的升级到Ext4文件系统。这种升级方法不会损害到你硬盘上的数据和资料,因为Ext4仅会在新的数据上使用,而基本不会改动原有数据。

更大的文件系统/文件大小

Ext3支持最大16TB的文件系统,2TB的文件大小。Ext4将支持最大1EB的文件系统,16TB的文件大小。

1EB=1024PB=1024*1024TB=1024*1024*1024GB

上述这个特性是由于Ext4采用了48位寻址。有人会问,为什么不是64位呢?因为就目前的开发进展来看,实现64位寻址存在一些技术限制,但是Ext4已经在考虑这个问题了,在不久的将来,Ext4将实现完全的64位支持。

子目录可扩展性

目前的Ext3中,单个目录下的子目录数目的上限是32000个。而在Ext4中打破了这种限制,可以创建无限多个子目录。

Extents

传统的类UNIX文件系统,比如Ext3,都是使用一个间接数据块映射表来记录每一个数据块的分配情况的。但是这种机制对于超大文件的存储是有缺陷
的,特别是当对超大文件进行删除和截断操作时。映射表会对每一个数据块进行记录,而一个超大文件将占有很多的数据块,因此造成映射表将变得无比臃肿,难于
维护。Ext4引入了一个新的概念,叫做“Extents”。一个Extents是一个地址连续的数据块的集合。比如一个100MB的文件将被分配给一个
单独的Extents,这样就不用像Ext3那样新增25600个数据块的记录(一个数据块是4KB)。而超大型文件会被分解在多个extents里。

Extents的实现提高了文件系统的性能,减少了文件碎片。

多块分配

在Ext3中,“将新的数据写入磁盘的哪些空闲块”是由块分配器来控制的。但是Ext3的块分配器存在一定缺陷,那就是它一次只能够分配一个数据块
(4KB),这就意味着,如果系统需要向磁盘中写入100MB的数据,那么需要调用块分配器25600次,而且由于块分配器无法获知总的分配块数,所以也
无法对分配空间和分配位置进行优化。

在Ext4中,使用了“多块分配器”,即一次调用可以分配多个数据块,这种机制提高了系统的性能,而且使得分配器有了充足的优化空间。

延迟分配

延迟分配(Delayed allocation)是一项仅仅少数现代文件系统才具有的优秀特性,比如XFS、ZFS、btrfs(better
FS)以及Reiser4。它能够尽可能的积累更多的数据块再分配出去,相对比,传统的文件系统则会尽快的将数据块分配出去,如Ext3,reiser3
等。

这项特性会和Extents特性以及多块分配特性相结合,使得磁盘IO性能得到显著提高。

更快速的FSCK

在Ext3中,Fsck本身是个速度很慢的操作,因为它要检查文件系统里的每一个“i节点”。但是,Ext4会维护一个未使用的“i节点”表,在进行
fsck操作时,会跳过表中节点,只检查正在使用中的i节点。这种机制使得fsck的效率提高为原有Ext3文件系统的2到20倍。不过,你要注意到一
点,那就是这个未使用的i节点表是由fsck来维护的,而不是由Ext4,因此你必须要首先运行一次fsck来生成,这样,在下次再运行fsck时才可以
享受提速。(虽然表是由fsck来维护的,但你还是需要从Ext3升级到Ext4才能够享受这项功能)

日志校验

日志要算是磁盘中最常用的部分了,也是最容易使硬盘出问题的机制之一。如果你不幸使用一个已经崩溃的日志来恢复系统的话,将导致更大规模的系统崩溃。
Ext4提供校验日志数据的功能,可以查看其潜在错误。而且,Ext4还会将Ext3日志机制中的“两阶段提交”动作合并为一个步骤,这种改进将使文件系
统的操作性能提升20%。这就是Ext4在日志机制方面对可靠度和性能的双重提升。

在线磁盘整理

这个特性没有包括在内核版本2.6.28之中,但是它很有可能会在下一个版本中引入。

虽然Extents、多块分配和延迟分配都有助于减少磁盘碎片,但是磁盘碎片仍然会产生。举例来说:你在一个目录下建立了三个文件 (f1,f2,f3),它们被按序写入到连续的一段内存之
中。然而几天之后,你想要更新文件f2,也就是位于这段连续内存的中间那一段的那个文件。我要向
这个文件中增加一些字符。很明显,在这段连续内存之中已经没有地方放下增加的这些字符,这别无选择,只能将这个f2文件移动到一个能容纳下的新的连续内存
之中。这导致了f2文件和f1、f3文件离的非常远,读取也相对缓慢了。看,这就产生了磁盘碎片了。

还有,可引导文件应该被放在连续的内存之中,但是磁盘整理机制并不知道哪些文件是可引导文件。

为了解决上述问题,Ext4将支持在线磁盘整理,e4defrag工具也被用来支持更智能的磁盘碎片整理功能。

结点相关特性

更大的i结点:Ext3支持自定义i结点大小,但是默认的i结点大小是128字节,Ext4将默认大小提升到256字节。增加的空间用来存储更多的结点信息,这样有利于提升磁盘性能。

i结点预留机制:当新建一个目录时,若干i结点会被预留下来,等新的文件在此目录中创建时,这些预留的i结点就可以立即被使用。文件的建立和删除将变得更加高效。

毫微秒级的时间戳:在Ext3中,时间精度是秒。在Ext4中,时间精度提升到了毫微秒。

可持续预分配

这个特性,已经出现在了Ext3的最后几个内核版本中,并且也可以由glibc在不支持此功能的文件系统中模拟产生,允许应用程序去预分配磁盘空间。应用程序告知文件系统给预留出一定的空间,文件系统会据此预分配必要的数据块,但是这些数据块将会是空的,直到应用程序向里面写入数据为止。这个机制会常常在P2P应用程序中用到,因为P2P应用程序下载文
件常常需要几天的时间。这种机制也防止了磁盘碎片的产生,因为文件系统会一次性分配尽可能连续的数据块给应用程序。再者,这种机制对于实时系统非常重要,
因为一旦没有这种机制,可能将会导致在一次重要操作的半截,磁盘空间已满。这项特性是通过调用posix_fallocate()来实现的。

如何使用Ext4

目前的Ext4文件系统是第一个稳定版本,整个的开发进度和发布计划都被放缓了,就是为了保证用户可以享受到“和使用Ext3同等级”的稳定。

一个非常重要的事情是,目前还没有Ext4 Grub。更准确的说,就是目前没有grub支持ext4。换句话说,就是你目前的发行版本的grub不支持ext4。目前我们的Grub2正在开发之中,在ubuntu和debian发行版中已经有了grub2的grub-pc软件包了,但是目前官方仍没有宣布正式支持。在Google SoC中也包含了一个开发版本,且发布了相关补丁。你可以试用一下,你自己选择喽。

在你的发行版本的下一个新版本之中,可能会有相关的支持出现。所以安全起见,尽量保持你的/boot目录为Ext3文件系统类型。

警告归警告,转换到Ext4其实是件很容易的事情,如下方法均可:

1 建立一个全新的Ext4文件系统。

这是最简单的方法,你只需要升级你的e2fsprogs到Ext4,并且使用mkfs.ext4命令创建文件系统即可。

2 从Ext3迁移到Ext4。

你需要使用tune2fs命令和fsck命令,并且当前文件系统需要被卸载才可以。运行命令

tune2fs -O extents,uninit_bg,dir_index /dev/yourfilesystem

此后,你务必运行fsck命令,否则Ext4将无法挂载你的新文件系统。在fsck过程中,可能会有一些error需要你的确认。你可以考虑使用 -p选项,来告诉fsck你想要的是“automatic repair”,即fsck -pf /dev/yourfilesystem

3 使用Ext4来挂载一个Ext3文件系统。

你可以使用mount
-t ext4 /dev/yourpartition
/mnt来将一个Ext3文件系统用Ext4来挂载,但你将享受不到那些需要改变磁盘格式才可以享受得到的特性,比如Extents。你可以享受到的只有
那些不需要改变磁盘格式即可享受得到的特性,比如多块分配、延迟分配等。我们当然不建议您这么做,因为Ext4的优秀特性,您将无法体会….

分享到:
评论

相关推荐

    Ext4文件系统

    Ext3文件系统可以在线转换为Ext4,但这样并不能用到Ext4的全部新特性,只有将文件系统重新创建为Ext4才比较彻底。 Ext4的向后兼容,向后兼容就是指可以将Ext4文件系统挂载为Ext3文件系统使用,但是前提是Ext4文件...

    Ext4文件系统介绍

    ### Ext4文件系统介绍 #### 一、Ext4文件系统的动机...综上所述,Ext4通过引入一系列的新特性,不仅解决了传统文件系统面临的问题,还极大地提升了文件系统的性能和可扩展性,成为Linux系统中广泛使用的文件系统之一。

    ext4文件系统源码

    此外,EXT4引入了快速分配、延迟分配、 extents(块连续存储)等特性,提高了文件系统的效率。 快速分配是一种优化策略,它允许文件系统在创建文件时预分配空间,避免了碎片问题,提高了写入速度。延迟分配则是在...

    WINDOWS下查看EXT4文件系统

    通过以上介绍,我们可以了解到在Windows下查看EXT4文件系统的需求和实现方法,以及EXT4文件系统本身的特性。正确理解和使用这些工具和知识,可以帮助我们更好地在多操作系统环境中管理和共享数据。

    EXT3文件系统下的手工定位文件 .docx

    EXT3的主要特点是其日志式特性,这使得在系统崩溃或不正常关机后,文件系统的完整性能够得到维护。 EXT3文件系统的结构主要包括超级块(Superblock)、组描述符表、块位图、节点位图和i节点表。下面是这些组成部分...

    ext4 文件映像制作工具 linux-tools

    1. **mkfs.ext4**:用于创建新的ext4文件系统。它允许用户指定各种参数,如块大小、预留空间等,以适应不同的应用场景。 2. **debugfs**:这是一个文件系统调试工具,可以用来查看和修改ext4文件系统的元数据,对于...

    模拟Linux ext2文件系统

    下面我们将深入探讨ext2文件系统的关键特性、结构以及如何通过模拟器进行理解和实践。 1. **ext2文件系统概述** - **设计目标**:ext2主要针对当时的Linux内核,提供了比FAT更高效、更可靠的数据存储方案。 - **...

    ext2 and ext3文件系统

    ### ext2 和 ext3 文件系统详解 #### 一、概述 `ext2` 和 `ext3` 是广泛应用于 Linux 操作系统中的文件系统格式。它们的设计目标是在保持高性能的同时提供可靠性和稳定性。`ext2` 是第二扩展文件系统,而 `ext3` ...

    Linux EXT2 文件系统介绍和实例分析

    EXT2文件系统的这些特性使得它在处理大量小文件时表现出色,而且由于其简单的设计,EXT2的读写速度相对较快。然而,EXT2缺乏日志功能,对数据安全性的保障不如EXT3。随着技术的发展,EXT4和其他更先进的文件系统如...

    ext4_utils

    首先,开发者会使用mkfs.ext4命令格式化存储设备,创建一个新的ext4文件系统。接着,他们会将系统映像、应用程序、库文件等数据写入这个文件系统。然后,通过tune2fs调整文件系统参数以优化性能,比如增加日志大小以...

    Linux2.6内核下Ext3文件系统的数据结构及性能分析.pdf

    Linux内核版本的迭代带来的更新不仅仅是性能上的提升,更重要的是在文件系统上增加了许多新的特性和功能。Linux 2.6内核相较于之前的版本,在文件系统方面做了大量的增强,如添加扩展属性,增加POSIX访问控制,优化...

    Windows读取Ext4分区的工具 Ext2Read

    1. **支持多种EXT文件系统**: Ext2Read不仅支持EXT2,还支持更先进的EXT3和EXT4文件系统。EXT4是目前Linux发行版广泛采用的文件系统,其特点是速度快、支持大文件和大量文件。 2. **查看与复制**: 用户可以像在...

    Linux最新文件格式ext4

    Ext4 文件系统作为 Ext 家族的最新成员,不仅解决了之前版本中存在的问题,还引入了诸多新特性,极大地提升了性能和稳定性,成为了学习与开发 Linux 软件的强大工具。 #### 文件系统的演变历程 1. **Ext (Extended...

    ext4写文件流程分析

    ### ext4写文件流程分析 #### 概述 在Linux操作系统中,文件系统的管理与...此外,了解诸如extent特性和delay allocation机制这样的高级特性,有助于我们更好地理解ext4文件系统的设计思想及其在实际应用中的表现。

    Ext2Fsd - Ext2文件系统驱动

    3. **文件系统特性**:Ext2Fsd支持如日志记录(用于Ext3和Ext4)、权限管理(ACLs)、软链接、硬链接、文件权限、文件所有权等Linux特有的文件系统特性。 4. **命令行工具**:除了图形界面,Ext2Fsd还提供命令行...

    ExtReader(ext3文件系统读取器)

    ext4是ext3的后续版本,引入了更多的增强特性,如更大的文件系统和文件大小支持,更快的性能等。 **8. 开发工具:** 项目使用Visual Studio 2010进行开发,这是一个强大的集成开发环境(IDE),提供了编写、调试和...

    ext4-exactor.zip

    在Android系统中,EXT4文件系统是广泛使用的主文件系统,用于存储应用程序、系统文件和其他数据。EXT4-extractor是一个专为Android设计的工具,它能够帮助开发者和故障排除人员解析EXT4格式的镜像文件,将其转换为一...

    深入理解linux内核(中文第三版) 第18章+Ext2和Ext3文件系统

    Ext3是Ext2的升级版本,除了继承Ext2的所有特性外,还引入了日志功能,能够提供更快的文件系统恢复能力。虽然本章对Ext3的描述较为简短,但可以看出Ext3在Ext2的基础上进一步提升了性能和可靠性。 在深入理解Ext2和...

    ext2文件系统 linux 下的文件系统说明

    为了解决这个问题,后续出现了EXT3(添加了日志功能)和EXT4(进一步优化了性能和扩展性)文件系统。 ### 使用场景 尽管EXT2在现代Linux系统中已被更先进的EXT3和EXT4取代,但在一些特定场景下,如嵌入式设备或旧...

    fat ntfs ext文件系统详解

    总的来说,了解和掌握FAT、NTFS和EXT文件系统的特性和操作,对于任何IT专业人员来说都是至关重要的,无论是在日常的文件管理还是在面临数据丢失问题时,都能提供必要的知识支持。通过深入学习这三种文件系统,你可以...

Global site tag (gtag.js) - Google Analytics