Ext4的名称来源于4th extended filesystem,它是广泛应用于Linux的Ext3文件系统的后继。同Ext3类似,Ext4也是日志文件系统。而与Ext3仅仅是将日志功能加入到Ext2中不同,Ext4对Ext3做了很多深层次的改进,文件系统的数据结构也有变化。目前的Ext4文件系统设计更合理、性能有所提高、可靠性得到增强,还引入了一些新功能。

新特性

做为新一代文件系统,Ext4文件系统具有很多新特性:

新功能

  • 大文件系统与大文件支持

  • Ext4文件系统最大支持1 exabyte(10006B=10003GB)的卷,最大文件可达16TB。

  • 在线碎片整理(Online defragmentation)

  • (开发中)尽管ext4引入了很多避免碎片产生的技术,一个用了很长时间的文件系统总归要产生一些碎片。Ext4将提供一个可以为单个文件及整个文件系统进行碎片整理的工具。虽然目前已经有不少在线整理磁盘的解决方法,但主流内核还未加入对他们的支持。

  • 打破子文件夹数限制

  • ext3中一个文件夹的子文件夹数不能超过32000,在ext4中,这一限制被取消。

  • 时间戳的改进

  • 由于计算机总是越来越快,不过任务对时间精度的要求不断提升,精确到“秒”的时间戳越来越显得不够用了。为此,Ext4引入了精确到“纳秒”的时间戳。另外,ext4还在将秒的表示增加了2个比特,这就避免了“2038年问题”,使时间的表示范围增加了约500年。ext4还引了对文件创建时间戳的支持。不过正如Theodore Ts'o所指出的,要使更多的程序支持这一特性,可能还需要修改诸如stat()之类的系统调用函数,而如glibc等依赖于它们的库也需要做相应的更新。正因如此,“文件创建时间戳”走入用户应用程序可能还需要一段时间。

  • 无日志模式

  • 有些特殊应用可能希望通过取消日志来提高性能,Ext4提供无日志模式以适应这些特殊需求(从2.6.29内核开始支持)。

性能提升

  • 更快速的文件系统检查

  • fsck检查磁盘速度慢的一个重要原因是它在第一步要扫描所有的inode。ext4对未分配的inode做了适当标记,这让fsck检查磁盘时可以将它们整块地忽略掉,大大加快了磁盘检查的时间。

  • Extents

  • Ext2/3等老Linux文件系统使用间接块映射模式(block mapping),文件的每一个块都要被记录下来,这使得对大文件的操作(如删除)效率低下。Ext4引入Extents这一概念来代替ext2/3使用的传统的块映射(block mapping)方式。“extent”是一个大的连续的物理块区域,它的引入加快了处理大文件的性能、减少了碎片。当块大小为4KB时,ext4中的一个extent最大可以映射128MB的连续物理存储空间。

  • 持续预分配空间(Persistent pre-allocation)

  • ext4文件系统允许为文件预分配磁盘空间。目前多数文件系统实现这一功能的方法是在要分配的空间中添满0。 在ext4中不再采用这一方法,而是用一个新的fallocate()内核系统调用来实现(支持ext4和XFS),且其分配的空间很可能是连续的。这一技术在流媒体、P2P等多种场合中都有广泛应用。

  • 延时分配(Delayed allocation)

  • 该技术也称为allocate-on-flush,可以提升文件系统的性能。只有数据将要被真正写入磁盘时,文件系统才为其分配块,这与其它文件系统在早期就分配好必要的块是不同的。另外,由于ext4的这种做法可以根据真实的文件大小做块分配决策,它还减少了碎片的产生。

  • 多块分配(Multiblock allocator)

  • Ext3文件系统为每次写操作最多分配一个4K块(block),在处理大文件时会导致性能的下降。Ext4在一次操作中可以分配多个块,并尽力让这些块连续,这有助于减少磁盘碎片。当启用了延时分配或使用O_DIRECT时这一功能即被启用。

可靠性增强

  • 日志校验

  • 日志通常用于在硬件故障发生后恢复数据,它是日志文件系统中最重要的部分之一,按照损坏的日志执行恢复操作可能导致严重的后果。所以Ext4为日志增加了校验和以提升可靠性。这一特性还可以安全地避免写日志进程的磁盘I/O等待时间,并略微提高了性能。

兼容性

  • 前向兼容

  • ext4文件系统与ext3部分向前兼容。即只要不启用extents(ext4的一项新特性),ext4文件系统就可以做为ext3文件系统挂载。

  • 后向兼容

  • ext4后向兼容与ext3和ext2,即可以将ext3或ext2文件系统做为ext4分区挂载。由于此时可以使用ext4的一些新特性(如新的块分配算法),这样做时还可以稍稍提升性能。

转载于:https://blog.51cto.com/michaelkang/951434

ext4 文件系统新特性相关推荐

  1. Linux新特性之btrfs文件系统

    centos7以上独有的特性,其他版本系统需要安装btrfs包 btrfs文件系统是技术预览版,全称Btrfs (B-tree, Butter FS, Better FS), GPL, Oracle, ...

  2. 学习笔记:EXT4文件系统特性

    图: 大型文件系统 ext4文件系统可支持最高1 Exbibyte的分区与最大16 Tebibyte的文件. 1 EB = 1024 * 1024 TB block size: 4 bytes 向下兼 ...

  3. 【JDK7】新特性(6) 监听文件系统的更改

    为什么80%的码农都做不了架构师?>>> 我们用IDE(例如Eclipse)编程,外部更改了代码文件,IDE马上提升"文件有更改".Jdk7的NIO2.0也提供了 ...

  4. 【JDK7】新特性(7) 监听文件系统的更改

    2019独角兽企业重金招聘Python工程师标准>>> 有时需要递归遍历一个文件树,比如查找一个文件夹内符合条件的文件,查找某一天创建的文件--.jdk7 nio包提供一个新的接口 ...

  5. 【JDK7】新特性(4) NIO2.0 文件系统

    2019独角兽企业重金招聘Python工程师标准>>> java.io.File 不够完美吧.Jdk7提供了一套新的文件系统,会让你满意的. 先来聊聊java.io.File的七宗罪 ...

  6. 社区说|Android 13 新特性 EROFS-只读文件系统解析

    活动时间 7 月 28 日(本周四) 20:00 - 21:00 活动日程 20:00 - 20:45 主题分享 Android 13新特性 EROFS-只读文件系统解析 介绍 Android 13的 ...

  7. EXT4文件系统磁盘分布和部分特性介绍

    1.ext4 磁盘布局 先说一下使用的emmc配置:大小:30253514752bytes,28G,块大小4096.以下布局皆以此为基础 2.sparse_super 效果为:超级块和GDT备份只出现 ...

  8. Ext4文件系统架构分析(一)

    本文描述Ext4文件系统磁盘布局和元数据的一些分析,同样适用于Ext3和Ext2文件系统,除了它们不支持的Ext4的特性外.整个分析分两篇博文,分别概述布局和详细介绍各个布局的数据结构及组织寻址方式等 ...

  9. ext4 文件系统的优化

    ext4作为ext3的下一代,是Linux上的经典文件系统,功能上虽不及zfs.btrfs那么花哨,但是可靠实用,被广泛部署在企业级的生产环境中. ext4 作为一个通用文件系统,默认情况下已经工作良 ...

最新文章

  1. mysql常用转换函数_MySQL中常用转换函数介绍
  2. cm 怎么限制hue数据下载_0724-6.2.0-CM接管rpm方式安装的无CM的CDH集群-2
  3. python pycharm 增量选择 ctrl+w
  4. linux下文件以及目录权限修改(摘抄)
  5. 如何理解左操作数必须为左值
  6. 记一次clickhouse查询问题Double-distributed IN/JOIN subqueries is denied (distributed_product_mode = ‘deny‘)
  7. 在linux服务器上安装Jenkins
  8. 剑指 Offer 34. 二叉树中和为某一值的路径【附完整可运行代码】
  9. 京东数科上市首轮问询「答卷」:与蚂蚁集团有本质区别、信用风险损失有限
  10. ehcache 程序_将Ehcache添加到Openxava应用程序
  11. 服装关键点检测算法(CNN/STN)含(4点、6点以及8点)
  12. android的简单知识,Android基础知识(简单实例计算器)
  13. 第三章 垃圾回收的一些概念
  14. 算法竞赛入门经典--大整数类
  15. 洛谷试炼场 普及常见模板
  16. Linux7安装oracle11g报错 Error in invoking target 'agen
  17. 网络爬虫:Scrapy爬虫框架
  18. 类动态规划求解较小规模的最大团问题(Python实现)
  19. 以太坊Whisper协议
  20. 利用多线程与网络编程编写的实时聊天小程序

热门文章

  1. MapReduce DataJoin 链接多数据源
  2. Java1.5语言新特性简单总结
  3. java兩個矩陣相乘_Day12 練習java-矩陣乘法
  4. POJ1149 PIGS(最大流)
  5. 【Android 逆向】代码调试器开发 ( ptrace 函数 | 读取进程内存数据 )
  6. 完全搞懂傅里叶变换和小波(3)——泰勒公式及其证明
  7. idea2019的安装与激活
  8. 模板方法及策略设计模式实践
  9. 前端开发之JavaScript基础篇四
  10. [Windows]ping itsafe环境变量