Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第 5 章 ext4 文件系统

ext4 文件系统是 ext3 文件系统的可扩展扩展。对于 Red Hat Enterprise Linux 7,它可以支持最大大小为 16 TB 的单个文件大小,文件系统可以最多支持 50 TB,而 Red Hat Enterprise Linux 6 只支持最多 16 TB 的文件系统。它还支持无限数量的子目录(ext3 文件系统最多支持 32,000 个),但是一旦链接数超过 65,000 个,它将重置回 1 ,并且不再增加。目前不支持 bigalloc 功能。
注意
与 ext3 一样,必须卸载 ext4 卷才能执行 fsck。如需更多信息,请参阅 第 4 章 ext3 文件系统
主要功能
ext4 文件系统使用扩展(与 ext2 和 ext3 使用的传统块映射方案相反),这提高了使用大型文件时的性能,并减少大型文件的元数据开销。此外,ext4 还相应地标记未分配的块组和 inode 表部分,这允许在文件系统检查期间跳过它们。这样可加快文件系统检查的速度,随着文件系统大小的增加,这将变得更加有益。
分配功能
ext4 文件系统具有以下分配方案:
  • 持久性预分配
  • 延迟分配
  • 多块分配
  • 条带感知分配
由于延迟分配和其他性能优化,ext4 向磁盘写文件的行为与 ext3 不同。在 ext4 中,当程序写入文件系统时,无法保证为磁盘上,除非程序随后发出 fsync () 调用。
默认情况下,ext3 会自动立即将新创建的文件强制到磁盘,即使没有 fsync ()。此行为隐藏了程序中的错误,这些程序不使用 fsync () 来确保写入的数据在磁盘上。另一方面,ext4 文件系统通常会等待几秒钟才能将更改写入磁盘,从而允许它合并并重新排序写操作,以获得比 ext3 更好的磁盘性能。
警告
与 ext3 不同,ext4 文件系统不会在事务提交时强制数据写到磁盘。因此,将缓冲的写入刷新到磁盘需要更长的时间。与任何文件系统一样,请使用 fsync () 等数据完整性调用来确保数据被写入持久性存储。
其他 ext4 功能
ext4 文件系统还支持以下内容:
  • 扩展属性 (xattr) - 这允许系统为每个文件关联几个额外的名称和值对。
  • 配额日志 - 这避免了崩溃后需要冗长的配额一致性检查。
    注意
    ext4 中唯一支持的日志模式是 data=ordered (默认)。
  • 亚秒时间戳 - 这向亚秒提供时间戳。

5.1. 创建 ext4 文件系统

  • 要创建 ext4 文件系统,请使用以下命令:
    # mkfs.ext4 block_device
    • 使用到块设备的路径替换 block_device。例如: /dev/sdb1,/dev/disk/by-uuid/05e99ec8-def1-4a5e-8a9d-5945339ceb2a, 或 /dev/my-volgroup/my-lv
    • 一般说来,默认选项适用于大多数使用场景。

例 5.1. mkfs.ext4 命令输出

以下是这个命令的输出示例,它显示了生成的文件系统的几何结构和特性:
~]# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
245280 inodes, 979456 blocks
48972 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1006632960
30 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
 32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
重要
可以使用 tune2fs 在 ext3 文件系统上启用特定的 ext4 功能。但是,以这种方式使用 tune2fs 尚未经过充分测试,因此 Red Hat Enterprise Linux 7 不支持。因此,红帽不能保证使用 tune2fs 转换或挂载的 ext3 文件系统的一致性性能和可预测的行为。

条带块设备

对于条带块设备(如 RAID5 阵列),可以在创建文件系统时指定条带几何结构。使用正确的条带几何结构可大大提高 ext4 文件系统的性能。
在 LVM 或 MD 卷上创建文件系统时,mkfs.ext4 选择最佳的几何结构。在将几何结构信息导出到操作系统的某些硬件 RAID 中也是如此。
要指定条带几何结构,请使用 mkfs.ext4-E 选项(即扩展的文件系统选项),包含以下子选项:
stride=value
指定 RAID 块大小。
stripe-width=value
指定 RAID 设备中数据磁盘的数量,或者条带中条带单位的数量。
对于这两个子选项,必须在文件系统块单元中指定 value。例如,要在 4k 块文件系统上创建带有 64k (即 16 x 4096)的文件系统,请使用以下命令:
# mkfs.ext4 -E stride=16,stripe-width=64 /dev/block_device

配置 UUID

也可以为文件系统设置特定的 UUID。要在创建文件系统时指定 UUID,请使用 -U 选项:
# mkfs.ext4 -U UUID device
  • 使用您要设置的 UUID 替换 UUID:例如 7cd65de3-e0be-41d9-b66d-96d749c02da7
  • 使用 ext4 文件系统的路径替换 device,以将 UUID 添加到其中:例如 /dev/sda8
要更改现有文件系统的 UUID,请参阅 第 25.8.3.2 节 “修改持久性命名属性”

其它资源

有关创建 ext4 文件系统的详情,请参考:
  • mkfs.ext4(8) man page