转载:https://blog.csdn.net/zhaoyoulin2016/article/details/80221101

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

  1. 与 Ext3 兼容。 执行若干条命令,就能从 Ext3
    在线迁移到 Ext4,而无须重新格式化磁盘或重新安装系统。原有 Ext3 数据结构照样保留,Ext4 作用于新数据,当然,整个文件系统因此也就获得了 Ext4
    所支持的更大容量。

更大的文件系统和更大的文件。 较之 Ext3 目前所支持的最大 16TB 文件系统和最大 2TB 文件,Ext4 分别支持
1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的文件系统,以及 16TB 的文件。

  1. 无限数量的子目录。 Ext3 目前只支持 32,000
    个子目录,而 Ext4 支持无限数量的子目录。

  2. Extents。 Ext3
    采用间接块映射,当操作大文件时,效率极其低下。比如一个 100MB 大小的文件,在 Ext3 中要建立 25,600 个数据块(每个数据块大小为
    4KB)的映射表。而 Ext4 引入了现代文件系统中流行的 extents 概念,每个 extent
    为一组连续的数据块,上述文件则表示为“该文件数据保存在接下来的 25,600 个数据块中”,提高了不少效率。

  3. 多块分配。 当写入数据到 Ext3
    文件系统中时,Ext3 的数据块分配器每次只能分配一个 4KB 的块,写一个 100MB 文件就要调用 25,600 次数据块分配器,而 Ext4
    的多块分配器“multiblock allocator”(mballoc) 支持一次调用分配多个数据块。

  4. 延迟分配。 Ext3 的数据块分配策略是尽快分配,而
    Ext4 和其它现代文件操作系统的策略是尽可能地延迟分配,直到文件在 cache
    中写完才开始分配数据块并写入磁盘,这样就能优化整个文件的数据块分配,与前两种特性搭配起来可以显著提升性能。

  5. 快速 fsck。 以前执行 fsck
    第一步就会很慢,因为它要检查所有的 inode,现在 Ext4 给每个组的 inode 表中都添加了一份未使用 inode 的列表,今后 fsck Ext4
    文件系统就可以跳过它们而只去检查那些在用的 inode 了。

  6. 日志校验。
    日志是最常用的部分,也极易导致磁盘硬件故障,而从损坏的日志中恢复数据会导致更多的数据损坏。Ext4 的日志校验功能可以很方便地判断日志数据是否损坏,而且它将
    Ext3 的两阶段日志机制合并成一个阶段,在增加安全性的同时提高了性能。

  7. “无日志”(No Journaling)模式。
    日志总归有一些开销,Ext4 允许关闭日志,以便某些有特殊需求的用户可以借此提升性能。

  8. 在线碎片整理。 尽管延迟分配、多块分配和
    extents 能有效减少文件系统碎片,但碎片还是不可避免会产生。Ext4 支持在线碎片整理,并将提供 e4defrag
    工具进行个别文件或整个文件系统的碎片整理。

inode 相关特性。 Ext4 支持更大的 inode,较之 Ext3 默认的 inode 大小 128 字节,Ext4 为了在 inode
中容纳更多的扩展属性(如纳秒时间戳或 inode 版本),默认 inode 大小为 256 字节。Ext4 还支持快速扩展属性(fast extended
attributes)和 inode 保留(inodes reservation)。

  1. 持久预分配(Persistent
    preallocation)。 P2P
    软件为了保证下载文件有足够的空间存放,常常会预先创建一个与所下载文件大小相同的空文件,以免未来的数小时或数天之内磁盘空间不足导致下载失败。 Ext4
    在文件系统层面实现了持久预分配并提供相应的 API(libc 中的 posix_fallocate()),比应用软件自己实现更有效率。

  2. 默认启用 barrier。
    磁盘上配有内部缓存,以便重新调整批量数据的写操作顺序,优化写入性能,因此文件系统必须在日志数据写入磁盘之后才能写 commit 记录,若 commit
    记录写入在先,而日志有可能损坏,那么就会影响数据完整性。Ext4 默认启用 barrier,只有当 barrier 之前的数据全部写入磁盘,才能写
    barrier 之后的数据。(可通过 “mount -o barrier=0” 命令禁用该特性。)

Ext4 随 Linux kernel

在linux中挂载磁盘ext3和ext4之间的区别相关推荐

  1. Ext2、Ext3和Ext4之间的区别

    ext2与ext3 Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表.索引节点是一个结构,它包含了一个文件的长度.创建及修改时间.权限.所属关系.磁盘 ...

  2. Linux中profile、bashrc、bash_profile之间的区别和联系

    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置. 英文描述为: # /etc/pr ...

  3. linux中cd / cd~ cd cd- 和cd..之间的区别

    cd 进入用户主目录 cd ~ 进入用户主目录 cd - 返回进入此目录之前所在目录 cd - 返回上一级目录 cd -/- 返回上两级目录 cd !$ 把上个命令的参数作为cd 参数使用 cd / ...

  4. 安装linux无法挂载磁盘分区,Linux 磁盘分区挂载

    1. 分区类型 linux 下有主分区.扩展分区.逻辑分区.主分区最多有4个,扩展分区最多只能有一个.但是主分区+扩展分区最多只能有4个.扩展分区无法进行数据读写,只能装在逻辑分区(在扩展分区中,逻辑 ...

  5. linux 重新分区挂载,Linux:挂载磁盘分区,linux已挂载磁盘重新分区

    Linux:挂载磁盘分区,linux已挂载磁盘重新分区 查看挂载的分区 df 命令主要用来了解系统中已经挂载的各个文件系统的磁盘使用情况. 常用选项: "-h" ,显示更易读的容量 ...

  6. linux中original_如何在 Linux 中整理磁盘碎片

    如何在 Linux 中整理磁盘碎片 转载自: 如何在 Linux 中整理磁盘碎片​linux.cn 有一个神话是 linux 的磁盘从来不需要整理碎片.在大多数情况下这是真的,大多数因为是使用的是优秀 ...

  7. linux中关于磁盘配额的描述,Linux中的磁盘配额

    Linux中的磁盘配额 制作人:丁琪 QQ:854804038 1.添加新的磁盘(这里我使用的虚拟机,如果是真实的设备的话,买一个SCSI硬盘接上就行,哈哈) 选择SCSI 选择磁盘的容量 选择默认就 ...

  8. linux整理碎片命令,如何在 Linux 中整理磁盘碎片

    如何在 Linux 中整理磁盘碎片 有一个神话是 linux 的磁盘从来不需要整理碎片.在大多数情况下这是真的,大多数因为是使用的是优秀的日志文件系统(ext3.4等等)来处理文件系统.然而,在一些特 ...

  9. linux 限额系统,Linux中的磁盘限额点点滴滴

    Linux中的磁盘限额点点滴滴 发布时间:2006-12-11 16:01:38来源:红联作者:Emperor 为普通用户和用户组加入磁盘配额限制 Linux的quota程序允许为系统上每一用户或用户 ...

最新文章

  1. php exec grep 写错误,又遇到了grep的结果毫无意义的错误性显示
  2. LGOJ P3919【模板】可持久化数组(可持久化线段树/平衡树)
  3. python购物车程序2019_Python——购物车程序(列表的应用)
  4. 【MySql】linux下,设置mysql表名忽略大小写
  5. sox处理mp3_SoX 音频处理工具使用方法
  6. 要写related_name的两种情况
  7. preg_match 参数获取两个_「死磕 Spring」—– IOC 之 获取 Document 对象
  8. 网站服务器检测工具,服务器网络监测工具
  9. 超硬核Java工程师秋招回忆录+面经汇总,为了拿BAT的研发offer我都做了那些准备?
  10. Windows server 2016 安装小度WiFi网卡驱动
  11. 图说粒子群优化算法(PSO)附源码
  12. 软件工程关于教务系统的测试,软件工程课程设计——教务成绩管理系统摘要.doc...
  13. 三个基本的布尔逻辑算符是_常用布尔逻辑运算符有哪些
  14. 数字信号和模拟信号抗干扰能力分析
  15. IOC 之深入理解 Spring IoC
  16. Python中路径的写法
  17. 路由器上端口转发_如何在路由器上转发端口
  18. 为什么OSPF在广播网络里面,DD和LSR采用单播,而LSU hello采用组播。
  19. linux gprs 拨号上网,linux下用wvdial实现gprs拨号上网
  20. Ubuntu安装opencv的viz模块

热门文章

  1. Eclipse ADT 使用空格替代Tab键缩进整块整块代码
  2. 放弃吧,Hibernate 4直到4.3.0 Beta1还没有解决Proxool连接池不可用的问题
  3. 对R语言发展与历史的一个初步认识
  4. vue - process.env 定义
  5. C#.NET 权限管理系统组件 - 大数据读写分离实现的例子
  6. Hibernate 对c3p0配置不支持导致的错误
  7. C++中 栈的简单封装
  8. R 绘制风洞实验数据曲线
  9. 21天让你成为Horizon View高手—Day11:手动池的创建
  10. 分析Vector、ArrayList、Hashtable、HashMap数据结分享一下