CentOS中EXT4文件系统是什么?CentOS中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" 命令禁用该特性。)

时间: 2024-10-09 19:34:10

CentOS中EXT4文件系统是什么?CentOS中EXT4有什么用的相关文章

如何在CentOS 6.x x64系统中创建超过16TB的ext4文件系统

如何在CentOS 6.x x64系统中创建超过16TB的ext4文件系统 作者 digoal 日期 2016-09-18 标签 ext4 , 16TB 背景 在使用Ext4文件系统时,发现无法创建超过16TB的文件系统. 例如我的服务器中有多块8T的盘,使用逻辑卷或者软RAID做成较大的块设备,然后使用mkfs.ext4格式化,当LVM或软RAID设备大于16TB时,出现这样的报错 # mkfs.ext4 -b 4096 /dev/md0 mke2fs 1.41.12 (17-May-2010

Nexus S中的Android将使用ext4文件系统

Google 新发布的 Nexus S 智能手机将是 Android 设备第一个使用 Ext4 文件系统的手机.ext4(第四扩展文件系统)文件系统是Linux系统下的日志文件系统,是ext3文件系统的后继版本. Ext4 可以提供更佳的性能和可靠性,还有更为丰富的功能: 1. 与 Ext3 兼容. 执行若干条命令,就能从 Ext3 在线迁移到 Ext4,而无须重新格式化磁盘或重新安装系统.原有 Ext3 数据结构照样保留,Ext4 作用于新数据,当然,整个文件系统因此也就获得了 Ext4 所支

centos 中mysql5.5.37版本 springmvc中的serves 执行没包涵在事物中

问题描述 centos 中mysql5.5.37版本 springmvc中的serves 执行没包涵在事物中 centos 中mysql5.5.37版本 springmvc中的serves 执行DB操作直接成功,为什么没包涵在事物中啊,本地同样版本测试没有问题,本地测试执行 save 方法是等整个事物完成后DB中才有数据,如果中途失败是会回滚的,但是在linux中一执行到save方法DB就已经有这条数据了,不知道怎么回事,求指点 解决方案 http://blog.csdn.net/ufo2910

源代码-ext4文件系统中自带的debug信息如何查看?

问题描述 ext4文件系统中自带的debug信息如何查看? ext4文件系统代码中自带有用于调试的debug语句,如函数ext4_map_blocks中的 ext_debug("ext4_map_blocks(): inode %lu, flag %d, max_blocks %u," "logical block %lun", inode->i_ino, flags, map->m_len, (unsigned long) map->m_lblk

Linux中ext3与ext4文件系统区别

ext3还是使用15个inode来查找数据块,前12个为直接数据块,直接指向存储数据的数据块,接下来分别为一级间接块,二级间接块,三级间接块,如下图: 其中point本来也是数据块,现在拿来做数据块的索引用,其中ext3的头文件定义为:__u32 i_block[EXT3_N_BLOCKS];/* Pointers to blocks */,所以可以计算ext3文件系统的极限: 最大分区:     因为定义的是无符号32位数,所以可能定位的block范围为2^32,也就是4G,如果一个block

Linux的EXT4 文件系统的历史、特性以及最佳实践

让我们大概地从 EXT4 的历史.特性以及最佳实践这几个方面来学习它和之前的几代 EXT 文件系统有何不同. 在之前关于 Linux 文件系统的文章里,我写过一篇 Linux 文件系统介绍 和一些更高级的概念例如 一切都是文件.现在我想要更深入地了解 EXT 文件系统的特性的详细内容,但是首先让我们来回答一个问题,"什么样才算是一个文件系统 ?" 一个文件系统应该涵盖以下所有特点: 数据存储: 对于任何一个文件系统来说,一个最主要的功能就是能够被当作一个结构化的容器来存储和获取数据.

Ext4文件系统架构分析(二)

   接着上一篇博文,继续分析Ext4磁盘布局中的元数据. 1.7 超级块 超级块记录整个文件系统的大量信息,如数据块个数.inode个数.支持的特性.管理信息,等待. 如果设置sparse_super特性标志,超级块和块组描述符表的冗余备份仅存放在编号为0或3.5.7的幂次方的块组中.如果未设置sparse_super特性标志,冗余备份存在与所有的块组中.以下是2.6.32.18内核中对Ext4超级块的描述:   3.0的内核中,Ext4的超级块加入了以下相关元数据:快照.文件系统错误处理相关

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

本文描述Ext4文件系统磁盘布局和元数据的一些分析,同样适用于Ext3和Ext2文件系统,除了它们不支持的Ext4的特性外.整个分析分两篇博文,分别概述布局和详细介绍各个布局的数据结构及组织寻址方式等.感兴趣的看官敬请留意和指导! 1. Ext4文件系统布局综述 一个Ext4文件系统被分成一系列块组.为减少磁盘碎片产生的性能瓶颈,块分配器尽量保持每个文件的数据块都在同一个块组中,从而减少寻道时间.以4KB的数据块为例,一个块组可以包含32768个数据块,也就是128MB. 1.1 磁盘布局 Ex

Python检测字符串中是否包含某字符集合中的字符

  这篇文章主要介绍了Python检测字符串中是否包含某字符集合中的字符,需要的朋友可以参考下 目的 检测字符串中是否包含某字符集合中的字符 方法 最简洁的方法如下,清晰,通用,快速,适用于任何序列和容器 代码如下: def containAny(seq,aset): for c in seq: if c in aset: return True return False 第二种适用itertools模块来可以提高一点性能,本质上与前者是同种方法(不过此方法违背了Python的核心观点:简洁,清