EXT4
- 格式:docx
- 大小:27.04 KB
- 文档页数:4
Ext 4 更新手册Ext 4有志成为Web程序革命性的开发平台。
框架中几乎每个组件都作了改进。
对于Ext3,4.0许多组件以及子系统都是表现得焕然一新!Ext 4概述一般性问题这些问题在Ext Core及Ext JS都有表现。
Ext 3的兼容性几次更新ExtJS累积下来,感觉当然就是第4版的变化幅度最大。
第4版带来了许多新的内容,这些内容并不全部兼容于Ext3。
然而,我们尽力可以做到最大化的兼容。
JS兼容化文件加载Ext4完毕后,你可选择加载兼容化文件。
该文件的目的在于提供兼容Ext3的简写方式和覆盖新参数为适合旧版的参数。
沙箱模式Ext4完全基于沙箱设计的,因此可以让旧版的Ext与Ext4在同一个浏览器运行时中做到兼容。
从JavaScript角度看,原来所有修改对象原型的方法已被转移,转移到全局对象Ext之下。
现在只需要建立一个Ext对象的引用,分配不同的名称,就可以从以前旧版本的Ext中区分开来。
在标签markup/CSS方面,由于Ext4采用了Compass和SASS框架并通过模板生成CSS,所以很容易设定一个前缀,供CSS规则之用,比如Ext.baseCSSPrefix属性就是对应的前缀。
结果,要与旧版Ext的CSS区分开来,也不是什么难事了。
包与命名空间的更新在重构过程中,全体类和包的结构已经发生了变化。
这些变化将是根据严格的命名规则来规范的,这一点对于重构的结果非常重要,以便于我们能更轻松地查找某一个类。
例如Ext3的Button类、CycleButton类和SplitButto类就连同其他类归类在/widgets中。
尽管不同层次的对象却也直接地命名在全局对象Ext身上。
在Ext 4,每一个类根据其特性的相似来决定其包的位臵。
虽然只是命名上的变化,但比起Ext3能更精确地描述对象。
同样拿Button 按钮为例子,Ext4的类这样分配:●单独设一个包src/button/●代码划分出一个新的命名空间●基于包改名,如Ext.SplitButton→Ext.button.Split为了尽可能地照顾Ext3的旧命名方式,Ext4的类有一个特殊属性称作“alternateClassName”,通过这个属性就可以让Ext3遗留项目采用Ext4新的类库。
Ext4⽂件系统架构分析(⼀)本⽂描述Ext4⽂件系统磁盘布局和元数据的⼀些分析,同样适⽤于Ext3和Ext2⽂件系统,除了它们不⽀持的Ext4的特性外。
整个分析分两篇博⽂,分别概述布局和详细介绍各个布局的数据结构及组织寻址⽅式等。
感兴趣的看官敬请留意和指导!1. Ext4⽂件系统布局综述⼀个Ext4⽂件系统被分成⼀系列块组。
为减少磁盘碎⽚产⽣的性能瓶颈,块分配器尽量保持每个⽂件的数据块都在同⼀个块组中,从⽽减少寻道时间。
以4KB的数据块为例,⼀个块组可以包含32768个数据块,也就是128MB。
1.1 磁盘布局Ext4⽂件系统的标准磁盘布局如下:Ext4⽂件系统主要使⽤块组0中的超级块和块组描述符表,在其他⼀些特定块组中有超级块和块组描述符表的冗余备份。
如果块组中不含冗余备份,那么块组就以数据块位图开始。
当格式化磁盘成为Ext4⽂件系统的时候,mkfs将在块组描述符表后⾯分配预留GDT表数据块(“Reserve GDT blocks”)以⽤于将来扩展⽂件系统。
紧接在预留GDT表数据块后的是数据块位图与inode表位图,这两个位图分别表⽰本块组内的数据块与inode表的使⽤,inode表数据块之后就是存储⽂件的数据块了。
在这些各种各样的块中,超级块、GDT、块位图、Inode位图都是整个⽂件系统的元数据,当然inode表也是⽂件系统的元数据,但是inode表是与⽂件⼀⼀对应的,我更倾向于将inode当做⽂件的元数据,因为在实际格式化⽂件系统的时候,除了已经使⽤的⼗来个外,其他inode表中实际上是没有任何数据的,直到创建了相应的⽂件才会分配inode表,⽂件系统才会在inode表中写⼊与⽂件相关的inode信息。
1.2 Flexible 块组(flex_bg)Flexible 块组(flex_bg)是从Ext4开始引⼊的新特性。
在⼀个flex_bg中,⼏个块组在⼀起组成⼀个逻辑块组flex_bg。
关于ext4⽂件系统概述前⾔: ⽬前⼤部分Linux操作系统使⽤的⽂件系统是ext4和xfs, 了解ext4在磁盘中的分布1. 容量概念对于储存⼏个概念的解析:sector(扇区) :1.磁盘最⼩的储存单位,可以通过命令⾏ fdisk -l得知单位每sector的⼤⼩(⼀般是512byte)2.机械硬盘HDD的可⽤空间⼤⼩计算公式是 heads(磁头数量) cylinders(柱⾯数量) sectors(扇区数量) * 每个sector⼤⼩(512byte)3.所以固态可⽤空间的总⼤⼩是 sectors(扇区数量) * 每个sector⼤⼩(512byte)。
4.这⼏个属性是固定不能修改,但可以通过命令读取得到。
因为固态硬盘SSD没有磁头柱⾯的概念。
// 1073741824 bytes的⼤⼩刚好是 sectors * 512 bytes 得出来的root@xxxxxx:~# fdisk -l /dev/rbd0Disk /dev/rbd0: 1 GiB, 1073741824 bytes, 2097152 sectorsUnits: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 4194304 bytes / 4194304 bytesDisklabel type: dosDisk identifier: 0x5510f42bDevice Boot Start End Sectors Size Id Type/dev/rbd0p1 8192 2097151 2088960 1020M 83 Linuxroot@xxxxxx:~#block (块) :1.是⽂件系统EXT4,FAT32,XFS等最⼩的储存单位,使⽤命令 blkid 可查看⽂件系统类型。
EXT2、EXT3、EXT4、XFS、GPT详解原创:运维老司机小柒博客7月18日EXT2与EXT3区别Linux之前缺省情况下使用的文件系统为Ext2,ext2文件系统的确高效稳定。
但是,随着Linux系统在关键业务中的应用,Linux文件系统的弱点也渐渐显露出来了:其中系统缺省使用的ext2文件系统是非日志文件系统。
这在关键行业的应用是一个致命的弱点,Ext3文件系统是直接从Ext2文件系统发展而来,目前ext3文件系统已经非常稳定可靠。
它完全兼容ext2文件系统。
用户可以平滑地过渡到一个日志功能健全的文件系统中来。
这实际上了也是ext3日志文件系统初始设计的初衷。
1) ext3和ext2的主要区别在于,ext3引入Journal(日志)机制,Linux内核从2.4.15开始支持ext3,它是从文件系统过渡到日志式文件系统最为简单的一种选择,ext3提供了数据完整性和可用性保证。
2) ext2和ext3的格式完全相同,只是在ext3硬盘最后面有一部分空间用来存放Journal的记录;3) 在ext2中,写文件到硬盘中时,先将文件写入缓存中,当缓存写满时才会写入硬盘中;4) 在ext3中,写文件到硬盘中时,先将文件写入缓存中,待缓存写满时系统先通知Journal,再将文件写入硬盘,完成后再通知Journal,资料已完成写入工作;5) 在ext3中,也就是有Journal机制里,系统开机时检查Journal的内容,来查看是否有错误产生,这样就加快了开机速度;EXT3日志文件系统的特点1、高可用性系统使用了ext3文件系统后,即使在非正常关机后,系统也不需要检查文件系统。
宕机发生后,恢复ext3文件系统的时间只要数十秒钟。
2、数据的完整性ext3文件系统能够极大地提高文件系统的完整性,避免了意外宕机对文件系统的破坏。
在保证数据完整性方面,ext3文件系统有2种模式可供选择。
其中之一就是"同时保持文件系统及数据的一致性"模式。
xfs和ext4文件格式
XFS和ext4是两种常见的Linux文件系统格式,它们都有各自
的特点和适用场景。
首先,让我们来看看XFS文件系统。
XFS是一种高性能的日志
文件系统,最初由SGI(Silicon Graphics International)开发。
它支持大容量的文件系统和大文件,适用于高性能的服务器环境。
XFS具有快速的格式化和快速的写入速度,同时也支持在线扩容和
快速恢复功能。
它还具有高度的并发能力,适合用于大规模的文件
存储和高负载的数据库环境。
然而,XFS在处理小文件和元数据更
新方面的性能可能不如其他文件系统。
而对于ext4文件系统,它是ext3文件系统的后继版本,是Linux内核中的一种成熟的日志文件系统。
ext4在向后兼容性和可
靠性方面进行了改进,同时也提供了更好的性能和更大的文件系统
支持。
它支持最大16TB的单个文件和最大1EB的文件系统,同时还
提供了更高的最大文件数量和更快的文件系统检查速度。
ext4还具
有较好的稳定性和广泛的应用支持,适用于绝大多数的Linux发行版。
总的来说,XFS适合用于大容量和高性能的服务器环境,而
ext4则更适合用于一般的桌面和服务器应用。
选择哪种文件系统取
决于具体的应用场景和需求,需要综合考虑文件系统的特性、性能、稳定性以及对应用程序的支持情况。
希望这些信息能够帮助你更好
地理解XFS和ext4文件系统。
⽂件系统Ext4详解1. 知识扫盲1.1. 磁盘介绍磁盘(disk):如上(⽹图)磁道(Track):将磁道划分为若⼲个⼩的区段,就是扇区。
柱⾯(cylinder):磁⽚中半径相同的同⼼磁道构成“柱⾯",意思是这⼀系列的磁道垂直叠在⼀起,就形成⼀个柱⾯的形状。
磁道数=柱⾯数扇区(sector):⼀个扇区512字节磁头(header):每张磁⽚的正反两⾯各有⼀个磁头,⼀个磁头对应⼀张磁⽚的⼀个⾯。
磁盘空间:512 * Track * Cylinder * header1.2. 寻址⽅式Chs寻址:有上述提到的三个参数决定,C代表Cylinder,H代表Header,S代表Sector。
举例说明:磁头数最⼤为255 (⽤ 8 个⼆进制位存储)。
从0开始编号。
柱⾯数最⼤为1023(⽤ 10 个⼆进制位存储)。
从0开始编号。
扇区数最⼤数 63(⽤ 6个⼆进制位存储)。
从1始编号。
所以CHS寻址⽅式的最⼤寻址范围为:255 * 1023 * 63 * 512 / 1048576 = 7.837 GB ( 1M =1048576 Bytes )或硬盘⼚商常⽤的单位:255 * 1023 * 63 * 512 / 1000000 = 8.414 GB ( 1M =1000000 Bytes )缺点:外圈磁盘空间利⽤率不⾜LBA寻址:LBA编址⽅式将 CHS这种三维寻址⽅式转变为⼀维的线性寻址,它把硬盘所有的物理扇区的C/H/S编号通过⼀定的规则转变为⼀线性的编号。
备注:有兴趣⾃⼰研究。
1.3. 设备分区:切蛋糕,把⼀块磁盘分成多个部分使⽤。
裸设备:⼜叫裸分区,未经过格式化,不⽤通过⽂件系统读取的特殊字符设备。
⽂件系统:⽂件的系统是操作系统⽤于明确磁盘或分区上的⽂件的⽅法和数据结构;即在磁盘上组织⽂件的⽅法。
块设备:系统中能够随机(不需要按顺序)访问固定⼤⼩数据⽚(chunks)的设备被称作块设备。
通常块设备有缓存。
Linux新文件系统Ext4Ext4(The fourth extended file system)是一种针对ext3系统的扩展日志式文件系统,是专门为 Linux 开发的原始的扩展文件系统(ext 或 extfs)的第四版。
Linux kernel 自 2.6.28 开始正式支持 Ext4。
兼容性Ext3升级到ext4能提供系统更高的性能,消除存储限制,和获取新的功能,并且不需要重新格式化分区,ext4会在新的数据上用新的文件结构,旧的文件保留原状。
以ext3 文件系统的方式mount到ext4上会不用新的磁盘格式,而且还能再用ext3来重新挂载,这样仅仅失去了ext4的优势。
大文件系统/文件大小现在ext3支持最大16TB的文件系统。
单个文件最大2TB。
Ext4增加了48位块地址,最大支持1EB文件系统,和单个16TB的文件。
1EB=1024PB 1PB=1024TB 1TB=1024GB。
子目录可伸缩性EXT3每个目录最大包含32000个子目录。
减去.和..也就是31998,ext4打破了这个限制可以无限制数量的子目录Extents传统的Unix派生文件系统,使用间接块映射方案,以跟踪每块用于块相应的数据文件,这对大文件来说是低效率的。
现代文件系统使用不同的方法称为“extends” 。
extends基本上指一串连续的物理快。
通常叫做数据在下面的N 个块中。
一个100MB的文件可以分配到一extends中。
而不需要创建一个间接映射表为256000个blocks,(每个block 4kb)大文件被分割为很多范围。
Extends 改进了性能并且减少了碎片。
因为extends鼓励在磁盘上连续布局。
Multiblock 分配ext4使用了一个多块分配来在一次调用中分配很多块。
替换掉每次分配一个块,减少系统开销。
在延时分配和extends上十分有用。
延迟分配延迟分配是一个性能特性(它不修改磁盘格式)。
ext4文件系统原理
ext4是一种高性能的Linux文件系统,是对ext3文件系统的改进和扩展。
它的设计目标是提供更高的性能、更好的可靠性、更高的可扩展性和更强的兼容性。
ext4文件系统原理如下:
1. 日志功能:ext4采用了日志功能(journaling),即在对文
件系统进行操作时,会先将操作记录在日志中,然后再执行操作。
这样可以在系统异常关机或崩溃时恢复文件系统的一致性。
2. 内存缓存:ext4使用了内存缓存,将磁盘上的数据加载到内存中进行读写操作,以提高文件的访问速度。
3. 数据块分配:ext4使用了多级索引结构来分配存储空间。
它将文件系统的空间分为固定大小的块,每个块可以存储一定大小的数据。
通过索引结构,可以快速定位文件的数据块。
4. 空闲块管理:ext4使用了位图和B树来管理空闲块。
位图
记录着每个块的使用情况,而B树则用于索引和定位空闲块。
5. 快照功能:ext4支持快照功能,可以在不影响原有数据的情况下对文件系统进行备份和恢复。
6. 后日志预分配:ext4采用了一种称为"delayed allocation"的
技术,即将数据块的分配推迟到真正需要写入数据时再进行。
这样可以提高写入性能,减少磁盘的碎片化。
7. 逐项更新:ext4在写入数据时,不会一次性更新整个文件,而是根据需要只更新部分数据。
这种逐项更新的方式可以减少磁盘的I/O次数,提高性能。
总的来说,ext4文件系统通过优化文件的读写性能、提供高效的存储空间管理和异常恢复机制等功能,来提供更高的性能和可靠性。
⽂件系统ext4查询 sudo ext4magic nandp5_ok.dump -B 7940sudo ext4magic p5_ext4.dump -I 27 -Tx2001 sudo debugfs p5_ext4.dump2002 ext4magic2003 sudo apt-get install ext4magiv2004 sudo apt-get install ext4magic2005 sudo ext4magic -I 29 -Tx2006 sudo ext4magic p5_ext4.dump2007 sudo ext4magic p5_ext4.dump -I 29 -Tx2008 sudo ext4magic p5_ext4.dump -I 2 -Tx2009 sudo ext4magic p5_ext4.dump -I 27 -Tx2010 sudo ext4magicB 79402011 sudo ext4magic p5_ext4.dump -B 79402012 ps -A2013 sudo ext4magic p5_ext4.dump -B 79402014 sudo ext4magic p5_ext4.dump -B 52682015 ghex &2016 sudo apt install ghex2017 ghex p5_ext4_2.dump2018 sudo ext4magic p5_ext4_2.dump -I 27 -Tx2019 calc2020 sudo apt-get install apcalc2021 sudo ext4magic p5_ext4_2.dump -I 27 -Tx2022 sudo ext4magic p5_ext4_2.dump -I 29 -Tx2023 sudo ext4magic p5_ext4_2.dump -I 27 -Tx2024 calc2025 ghex p5_ext4_2.dump2026 sudo debugfs p5_ext4_2.dump2027 sudo ext4magic p5_ext4_2.dump -I 27 -Tx2028 sudo ext4magic p5_ext4_2.dump -I 26 -Tx2029 sudo ext4magic p5_ext4_2.dump -B 362030 sudo ext4magic p5_ext4_2.dump -I 27 -Tx2031 sudo ext4magic p5_ext4_2.dump -B 362032 ghex p5_ext4_2.dump2033 sudo ext4magic p5_ext4_2.dump -I 27 -Tx2034 sudo ext4magic p5_ext4_2.dump -I 29 -Tx2035 sudo ext4magic p5_ext4_ok.dump -I 2 -Tx2036 sudo ext4magic nandp5_ok.dump -I 2 -Tx2037 sudo ext4magic nandp5_ok.dump -I 24 -Tx2038 sudo ext4magic nandp5_ok.dump -B 11682039 sudo ext4magic nandp5_ok.dump -I 2 -Tx2040 sudo ext4magic nandp5_ok.dump -I 24 -Tx2041 sudo ext4magic nandp5_ok.dump -B 11682042 sudo ext4magic nandp5_ok.dump -I 24 -Tx2043 sudo ext4magic nandp5_ok.dump -B 72142044 sudo ext4magic p5_ext4_2.dump -B 52682045 sudo ext4magic p5_ext4_2.dump -B 79402046 sudo ext4magic p5_ext4.dump -B 79402047 sudo ext4magic p5_ext4.dump -B 52682048 sudo ext4magic p5_ext4.dump -B 79402049 ls -l2050 sudo ext4magic nandp5_ok.dump -B 79402051 sudo ext4magic nandp5_ok.dump -b 79402052 sudo ext4magic nandp5_ok.dump -B 79402053 sudo ext4magic nandp5_ok.dump -B 7942054 sudo ext4magic nandp5_ok.dump -B 5000通过blktrace, debugfs 分析磁盘IO2054 sudo ext4magic nandp5_ok.dump -B 50002055 sudo ext4magic nandp5_ok.dump -B 52682056 sudo ext4magic p5_ext4.dump -B 52682057 sudo ext4magic p5_ext4.dump -I 27 -Tx2058 ghex p5_ext4.dump2059 sudo ext4magic p5_ext4.dump -B 14942060*2061 sudo ext4magic p5_ext4.dump -B 79402062 sudo ext4magic p5_ext4.dump -B 70002063 ext4magic p5_ext4.dump -B 70002064 ls -l2065 sudo ext4magic nandp5_ok.dump -B 7940前⼏天微博上有同学问我磁盘util 达到了100%时程序性能下降的问题,由于信息实在有限,我也没有办法帮太⼤的忙,这篇blog 只是想给他列⼀下在磁盘util 很⾼的时候如何通过blktrace+debugfs 找到发⽣IO 的⽂件,然blktrace 是Jens Axobe 写的⼀个跟踪IO 请求的⼯具,linux 系统发起的IO 请求都可以通过blktrace 捕获并分析,关于这个debugfs 是ext2, ext3, ext4⽂件系统提供的⽂件系统访问⼯具,通过它我们可以不通过mount ⽂件系统⽽直接访问⽂件系下⾯我来演⽰⼀下如何通过这两个⼯具的配合来找到磁盘IO 的源头。
mkfs.ext4 精简编译目录1. 前言2. mkfs.ext4 简介3. mkfs.ext4 编译步骤4. mkfs.ext4 参数解释5. 结语1. 前言在计算机领域,文件系统是操作系统用来管理文件在存储设备上的组织和存储的一种机制。
其中,ext4 是一种用于 Linux 操作系统的文件系统类型,是 ext3 文件系统的后继者。
在使用 ext4 文件系统之前需要进行格式化,而 mkfs.ext4 则是 Linux 上用来格式化 ext4 文件系统的命令。
2. mkfs.ext4 简介mkfs.ext4 是 Linux 系统上用于创建 ext4 文件系统的命令,通常情况下需要在格式化新建硬盘分区或者使用已有分区之前使用。
mkfs.ext4 命令可以在终端中直接执行,其基本格式为:mkfs.ext4 [选项] 设备在执行 mkfs.ext4 命令时,用户可以根据需要使用不同的选项来设置文件系统的参数,以满足特定的需求。
下面将介绍 mkfs.ext4 的编译步骤以及常用的参数解释。
3. mkfs.ext4 编译步骤编译 mkfs.ext4 命令需要经过以下步骤:- 下载源代码用户可以从 Linux 官方全球信息湾或者其他可信赖的源获取mkfs.ext4 的源代码,通常以 tar.gz 格式进行压缩。
解压源代码后,用户可以进入源代码目录进行后续操作。
- 配置在源代码目录中执行 ./configure 命令,用于配置编译参数和检查编译环境。
该步骤会生成 Makefile 文件,其中包含了编译 mkfs.ext4 所需的详细信息。
- 编译在配置完成后,用户可以执行 make 命令来进行编译,该步骤会生成可执行的 mkfs.ext4 文件。
- 安装用户可以执行 make install 命令来将编译生成的 mkfs.ext4 安装到指定的系统目录中,以便在任何位置都可以直接执行该命令。
通过以上步骤,用户可以成功编译并安装 mkfs.ext4 命令,从而在系统中使用该命令进行 ext4 文件系统的格式化。
ADSL扫盲[转]
Nod Esets32
ext2/ext3/ext4区别
linux之路2010-03-16 19:33:52 阅读515 评论0 字号:大中小订阅
今天被问到一个问题:ext4到底比ext3先进多少?当时脑子一片空白。
于是到网上爬了会,找点资料学习下。
ext2与ext3:
Ext2 文件系统加上日志支持的下一个版本是ext3 文件系统,它和ext2 文件系统在硬盘布局上是一样的,其差别仅仅是ext3 文件系统在硬盘上多出了一个特殊的inode(可以理解为一个特殊文件),用来记录文件系统的日志,也即所谓的journal。
参考:/thread-153696-1-1.html
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" 命令禁用该特性。
)
Ext4 随Linux kernel 2.6.28 正式发布已有数周,一直苦于找不到测试用的磁盘,正巧年前Intel 送来几块SSD 测试样品,这两天就顺带把SSD 也测了。
测试所使用的Linux 内核版本为2.6.28.2,测试工具为IOzone 3.318。
IOzone 测试命令为:
time /opt/iozone/bin/iozone -a -s 4G -q 256 -y 4 >|/root/ext4-iozone-stdout.txt
上述命令的说明如下:
Auto Mode
File size set to 4194304 KB
Using Maximum Record Size 256 KB
Using Minimum Record Size 4 KB
Command line used: /opt/iozone/bin/iozone -a -s 4G -q 256 -y 4
Output is in Kbytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 Kbytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
测试结果除了表明Intel SSD 的读写速度快得令人咋舌之外,还可以说明Ext4 的各方面性能都超过了上一代Ext3,甚至在大多数情况下,比没有日志功能的Ext2 还要快出不少:。