性能

衡量一个新文件系统的最重要指标就是它的根本性能。这常常是最难实现的指标,因为当文件系统变得庞大并且要求实现高可靠性时,将会以损害性能为代价。但是,ext4 不仅解决了伸缩性和可靠性,它还提供各种改善性能的方法。

文件级预分配

某些应用程序,比如数据库或内容流,要求将文件存储在相邻的块上(利用相邻块的读优化和最大化读的命令-块比率)。尽管区段能够将相邻块划分为片段,但另一种更强大的方法是按照所需的大小预分配比较大的相邻块(XFS 以前就是采用这种方法)。ext4 通过一个新的系统调用来实现这个目的,这个调用将按照特定的大小预分配并初始化文件。然后,您就可以写入必要的数据,并为数据提供不错的读性能。

延迟块分配

另一个基于文件大小的优化是延迟分配。这种性能优化延迟磁盘上的物理块的分配,直到块被刷入到磁盘时才进行分配。这种优化的关键是延迟物理块的分配,直到需要在磁盘上写这些物理块时才对其进行分配并写到相邻的块。这类似于持久化预分配,惟一的区别是文件系统会自动执行这项任务。不过如果预先知道文件的大小时,持久化预分配是更好的选择。

多个块分配

这是最后一个与相邻块相关的优化,即针对 ext4 的块分配器。在 ext3 中,块分配器的工作方式是每次分配一个块。当需要分配多个块时,非相邻块中可能存在相邻的数据。ext4 使用块分配器修复了这个问题,它能够在磁盘上一次分配多个块。与前面其他优化一样,这个优化在磁盘上收集相关的数据,以实现相邻读优化。

多个块分配的另一个方面是分配块时需要的处理量。记住,ext3 一次只分配一个块。在最简单的情况下,每个块的分配都要有一个调用。如果一次分配多个块,对块分配器的调用就会大大减少,从而加快分配并减少处理量。

可靠性

ext4 文件系统可能会扩展得比较大,这将导致可靠性问题。但 ext4 通过许多自主保护和自主修复机制来解决这个问题。

执行文件系统日志校验和

和 ext3 一样,ext4 也是一个日志文件系统。日志记录 就是通过日记(磁盘上相邻区域的专门循环记录)记录文件系统的变更的过程。因此,根据日志对物理存储执行实际变更更加可靠,并且能够确保一致性,即使在操作期间出现系统崩溃或电源中断。这样做可以减少文件系统损坏的几率。

但是即使进行日志记录,如果日志出现错误仍然会导致文件系统损坏。为了解决这个问题,ext4 对日志执行校验和,确保有效变更能够在底层文件系统上正确完成。在 参考资料 小节可以找到其他关于日志记录(ext4 的重要部分)的资料。

ext4 支持根据用户需求采用多种模式的日志记录。例如,ext4 支持 Writeback 模式,它仅记录元数据;或 Ordered 模式,它记录元数据,但写为元数据的数据是从日志中写入的;或 Journal 模式(最可靠的模式),它同时记录元数据和数据。注意,虽然 Journal 模式是确保文件系统一致的最佳选择,但它也是最慢的,因为所有数据都要经过日志。

在线磁盘碎片整理

尽管 ext4 添加一些特性来减少文件系统的碎片(比如将相邻块分配为区段),但随着系统使用时间的增加,碎片是难以完全避免的。因此出现了在线碎片整理工具,它们可以对文件系统和单个文件执行碎片整理,从而改善性能。在线碎片整理程序是一个简单的工具,它将文件复制到引用相邻区段的新 ext4 inode。

在线碎片整理还可以减少检查文件系统所需的时间(fsck)。ext4 将未使用的块组标记到 inode 表中,并让 fsck 进程忽略它们以加快检查速度。当操作系统因内部损坏(随着文件系统变大,这是不可避免的)而检查文件系统时,ext4 的设计方式将能够提高总体可靠性。

结束语

针对 Linux 的扩展文件系统有着漫长而丰富的历史 — 从 1992 年首次引入 ext1 到 2008 年引入 ext4。ext4 是首个专门为 Linux 设计的文件系统,并且事实证明它是高效、稳定、强大的文件系统。ext4 随着文件系统研究的深入而不断发展,并且借鉴其他新文件系统的先进思想(比如 XFS、JFS、Reiser 和 IRON 容错文件系统技术)。尽管目前预测 ext5 将会是什么样子还为时过早,但有一点是很明确的,它将主导企业级 Liunx 系统。

linux系统ubuntu有哪些,Ubuntu Linux操作系统至少适合五种人使用相关推荐

  1. Linux系统编程及应用——ubuntu环境下

    Linux系统编程及应用--ubuntu环境下 程序由业务逻辑和系统访问两部分构成的.其中,业务逻辑是根据业务需求,按照设计好的逻辑规则,处理信息,与系统(平台)无关的:而系统访问则是利用操作系统所提 ...

  2. linux 的手机操作系统下载地址,Linux系统运维之下载Linux操作系统地址

    本文主要向大家介绍了Linux系统运维的下载Linux操作系统地址,通过具体的内容向大家展现,希望对的大家学习Linux运维知识有所帮助. 有很多初次接触Linux的新人都会发问,应该到哪里下载Lin ...

  3. linux系统创建操作系统用户,linux系统中用户组创建管理linux操作系统 -电脑资料...

    用户组管理包括对用户组创建,删除,修改及查看组操作命令,下面我们一起来看看希望本文章对各位同学会有所帮助哦, 1,创建组 groupadd test 增加一个test组 2,修改组 groupmod ...

  4. 大连东软信息学院linux系统编程,大连东软信息学院Linux系统编程考试资料

    大连东软信息学院Linux系统编程考试资料 Linux系统程序设计 第1章 Linux操作系统基础 1.1 Unix/Linux操作系统简介 1.2 相关术语 1.3 库函数与系统调用 1.4 项目构 ...

  5. linux系统用户属组,关于 Linux系统用户、组和权限管理

    一.用户与组 1.用户与组的概念 在Linux系统中,根据系统管理需要将用户分为三种类型: 1.超级用户:root是linux系统的超级用户,对系统拥有绝对权限.由于root用户权限太大,只有在进行系 ...

  6. 一文带你学会linux系统 史上最全linux命令大全

    一文带你学会linux系统 史上最全linux命令大全 文章目录 linux系统简介 linux命令 1.启动网络命令 2.pwd命令 2.ls命令 3.cd命令 4.mkdir命令 5.rmdir命 ...

  7. 一站式:虚拟机安装Linux系统(CentOS_7),多节点Linux环境打造,XShell的使用

    目录 01.Linux环境装在哪 02.虚拟机的下载与安装:Vmware 2.1.Vmware下载 2.2.Vmware安装 03.CentOS镜像下载 3.1.CentOS介绍(了解) 3.2.Ce ...

  8. linux系统怎么重启网卡?linux重启网卡的三种教程

    在实际工作中,经常会遇到Linux系统进行重启网卡的操作.在这里整理一下,进行多种方法的网卡重启. 一.service network restart 1.首先用CRT工具连接到Linux命令行界面. ...

  9. linux系统安全与防护课时,Linux系统安全与防护基本操作

    Linux系统安全与防护基本操作 登陆操作系统基本操作 1.远程登陆 1.1下载安装安全软件 1.2取消Telnet登陆,采用ssh方式并更改ssh服务端远程登陆配置 (Telnet登陆协议是明文不加 ...

最新文章

  1. Spring整合Hibernate的步骤
  2. 直播系统开发:功能创新提升用户留存
  3. php多表数据排除,thinkphp中多表查询中防止数据重复的sql语句(必看)
  4. 通过URL判断文件是否有存在
  5. 【博客话题】技术人,你肿么了
  6. 科技管理的作业选题 很重要
  7. 30+个必知的《人工智能》会议清单
  8. 删除vue打包大小限制_压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)...
  9. 把tomcat默认的8080段口改成80端口
  10. 均线策略---使用quartz实现策略
  11. 用python计算1~100的阶乘之和_在Python中递归函数调用举例and匿名函数lambda求1~100的和及计算阶乘举例...
  12. 正在连接至zimperium服务器,ZIMPERIUM Mobile IPS (zIPS)
  13. ssm-学子商城-项目第十二天
  14. PGP软件的安装及汉化
  15. 排序之low逼三人组及其python代码实现
  16. C#:using和new关键字
  17. 青岛大学计算机科学学院,青岛大学信息工程学院
  18. 计算机和影视结合专业,计算机专业专业建设总结与典型案例2.5微电影拍摄与后期制作(影视拍摄与后期制作技术)课....
  19. JavaScript 正则匹配中英文姓名
  20. Python os.symlink创建软链接

热门文章

  1. .net 实时通信_基于 RabbitMQ 的实时消息推送
  2. 代码与html混合,自定义的标签与html的标签混合应用_css
  3. Java多重链表_Java实现 LeetCode 143 重排链表
  4. 8屏 旌宇多屏管理软件_如何选择拼接屏,不能说的秘密,都在这!
  5. 向web服务器传文件,c++实现向web服务器上传文件
  6. jpa mysql查找_jpa查找数据库最新一条消息
  7. linux树莓派网易云音乐,基于树莓派的红外遥控版网易云音乐播放器
  8. 【OS】操作系统运行环境
  9. oracle 052考试,Oracle OCP认证考试题库解析052-5
  10. java输出栈的弹出序列_剑指offer:栈的压入、弹出序列(Java)