Linux 文件系统
文件系统是一组进程,用于控制从存储设备存储和检索数据的方式、位置和时间。高效的文件系统对于日常系统进程至关重要。
文章目录
一、介绍
文件系统是一组进程,用于控制从存储设备存储和检索数据的方式、位置和时间。高效的文件系统对于日常系统进程至关重要。
Linux 内核支持各种文件系统,但最常用的是 ext4 文件系统。
在本文中,您将了解有关 Linux 文件系统开发以及 ext4 系统的主要功能的更多信息。
注意:在 Linux 中,所有内容都存储为文件(例如,目录、打印机、分区、内核数据等)。这使得了解 Linux 文件系统的工作原理变得更加重要。
二、Linux 文件系统的演变
让我们仔细看看 Linux 文件系统的演变:
2.1 MINIX 文件系统
Minix 文件系统支持 Minix 操作系统。它由 Andrew S. Tanenbaum 于 1987 年首次推出。
Minix 操作系统及其文件系统主要用于教育编码目的。当时文件系统的性能没有达到标准。文件名长度限制为 14 个字符,分区限制为 64MB。当时,硬盘驱动器支持高达 140MB 的分区。
到 1992 年,由于缺乏性能和 ext 文件系统的发展,Minix 大部分已停止使用。
2.2 ext 文件系统
ext 文件系统代表“扩展文件系统”。它是第一个旨在支持 Linux 内核的文件系统。
虚拟文件系统 (VFS) 用于 ext 文件系统。它的主要目的是允许 Linux 内核访问 ext 文件系统。ext 文件系统将文件名长度限制为 255 个字符,并支持最大 2GB 的分区。
虽然它设法解决了 Minix 文件系统存在的问题,但它有一个主要缺陷——时间戳。与现在每个 Linux 文件都有三个时间戳(访问时间戳、修改时间戳和更改时间戳)不同,ext 文件系统只允许每个文件有一个时间戳。
1993 年 1 月,引入了 ext2 文件系统。随着时间的推移,所有用户都从 ext 切换到 ext2。
2.3 ext2 文件系统
Remi Card 设计了 ext2 文件系统,并于 1993 年 1 月发布,距离引入 ext 文件系统不到一年。
ext2 文件系统支持保留内部结构,同时扩展文件系统功能。文件中的数据保存在相同长度的数据块中。ext2 文件系统支持的最大文件大小为 2TiB。文件名长度不受字符限制,而是以字节为单位 – 255 字节。它不支持日记功能。
虽然这个文件系统被广泛使用,但它仍然存在两个主要问题:
文件损坏 – 如果在断电或系统崩溃时将数据写入磁盘,则会发生此现象。
性能损失 – 当单个文件被分成多个部分并分布在磁盘上的多个位置时,就会发生磁盘碎片。因此,文件的读取和写入时间会更长,从而导致性能下降。
ext2 系统主要使用到 2000 年代初引入 ext3 文件系统。它现在偶尔用于 USB 设备,因为它不支持日志系统。
2.4 ext3 文件系统
Stephen Tweedie 设计了 ext3 文件系统(Third Extended File System)。它于 2001 年 11 月推出,搭载 Linux 内核 2.4.15。它今天仍在使用。
ext3 文件系统是 ext2 文件系统的改进版本。它支持最大文件大小为 2TiB,并将最大文件名长度限制为 255 字节,就像 ext2 文件系统一样。这种改进反映在日记中。
日记系统保留数据结构中尚未提交的所有更改的“日志”。在断电或系统崩溃的情况下,通过日志系统存储的日志会在几秒钟内返回数据,从而降低损坏或数据丢失的风险。更新日志时,系统会将数据写入文件系统的正确区域。
Linux 内核支持三个级别的日志:
日志 – 它包括在对主文件系统进行更改之前将元数据和文件内容写入日志。这样可以在断电或系统崩溃的情况下保存数据。这种级别的日记的缺点是系统的性能下降。
Ordered (已排序) – 此日记级别将元数据写入日志,而文件内容自动存储在主文件系统中。该过程按特定顺序执行。首先,元数据被写入日志中。然后,文件内容将写入主文件系统。最终,元数据连接到主文件系统。因此,在系统崩溃时,主文件系统不会损坏。只有在崩溃期间正在写入的文件才会损坏。
Writeback (写回) – 此级别的日记功能仅将元数据写入日志。只有在更新日志后,文件内容才会写入主文件系统。由于元数据和文件内容缺乏同步,如果系统崩溃,文件系统可能会损坏。
ext4 文件系统
ext4 文件系统是当前 Linux 内核的默认文件系统。它于 2008 年 10 月随 Linux 内核 2.6.28 推出。
ext4 文件系统支持的最大文件大小为 16TiB,并将最大文件名长度限制为 255 字节。
三、ext4 文件系统的功能
让我们看看 ext4 文件系统的主要功能。
ext4 主要功能列表。
-
向后兼容性
ext4 文件系统支持与 ext3 和 ext2 文件系统的向后兼容性。另一个功能是使用 ext4 驱动程序在 ext3 模式下自动挂载 ext3 文件系统。 -
分配改进
ext4 文件系统在将存储块写入磁盘之前更有效地分配存储块。这可以提高读写性能。 -
时间戳改进
ext4 文件系统将时间戳再增加 408 年,并支持截至 2446 年 5 月 10 日的日期。时间戳的测量速度也更快,以纳秒为单位。 -
程度
ext 文件系统的过时版本会映射与每个文件关联的所有块。当涉及需要大量块的大文件时,该过程不起作用。扩展数据块解决了 ext4 文件系统中的问题。
扩展数据块减少了映射每个文件块所需的元数据量。系统会保存大文件对应的第一个和最后一个块的地址。
- 多数据块分配改进
块分配器搜索可用于将数据写入磁盘的空闲块。ext4 文件系统使用多个分配,允许每次调用分配多个块。这减少了磁盘碎片。
延迟分配
延迟分配功能仅在文件写入磁盘时分配块。使用此功能,缓存不会填充不必要的数据,并且系统的性能会提高。
-
无限数量的子目录
Linux 内核版本 2.6.23 支持无限数量的子目录。ext4 文件系统引入了 HTree 数据结构以避免性能下降。HTree 数据结构表示 B 树的专用版本。 -
日志校验和
ext4 文件系统使用 checksum 选项。引入此选项是为了降低文件损坏的风险。
日志系统是磁盘中最常用的部分。当发生硬件故障时,块将变得不可用,并发生文件损坏。校验和选项会不断检查数据块是否已损坏。此过程还可以提高性能,因为它缩短了日志记录时间。
= 更快的文件系统检查
在 ext4 文件系统中,将标记未分发的块组和 inode 表。运行 fsck 命令所需的时间显著缩短,因为跳过了标记的组。它提高了整体性能。
- 联机碎片整理
磁盘碎片会导致性能下降,这是 ext2 和 ext3 文件系统的一个重大问题。ext4 文件系统支持 e4defrag 工具,该工具允许用户对单个文件或整个文件系统进行碎片整理。
四、ext4 文件系统的限制
尽管 ext4 文件系统被认为是 Linux 发行版的最佳文件系统,但在系统的进一步开发中应考虑一些限制:
损坏的数据恢复 – ext4 文件系统无法检测或恢复已写入磁盘的损坏数据。
Maximum volume size (最大卷大小) – 最大卷大小设置为 1 EiB。但是,文件系统无法处理超过 100 TiB 的数据,而不会显著降低性能并增加磁盘碎片。
五、替代 Linux 文件系统
ext4 文件系统有多种替代方案。Linux 内核支持下面列出的所有替代方案。
注意:为避免出现问题,请在单独的目录下使用备用文件系统。
5.1 XFS 系列
XFS 是一种 64 位文件系统,于 1994 年首次推出,自 2001 年起内置于 Linux 内核中。它是 RedHat Linux 的默认文件系统。
XFS 支持的最大文件大小为 8 EiB,并将文件名长度限制为 255 字节。它支持日志功能,并且与 ext4 一样,它会在将更改提交到主文件系统之前将更改保存在日志中。这降低了文件损坏的可能性。
数据以 B+ 树的形式构建,这提供了高效的空间分配,从而提高了性能。
该系统的主要缺点反映在现有 XFS 文件系统的大小调整过程中很困难。
5.2 OpenZFS 公司
OpenZFS 是一个将文件系统与卷管理器相结合的平台。它于 2013 年首次推出。
OpenZFS 支持的最大文件大小为 16 EiB,并将最大文件名长度限制为 255 个字符。该系统的一些功能包括防止数据损坏、加密、支持高存储容量、写入时复制和 RAID-Z。
OpenZFS 的主要缺点是 CDDL (OpenZFS) 和 GPL (Linux 内核) 许可证之间的法律不兼容。通过编译 ZFS 代码并将其加载到 Linux 内核,可以解决这一问题。
5.3 BtrFS
Oracle 设计了 BtrFS(代表“B 树文件系统”),并于 2009 年与 Linux 内核 2.6.29 一起发布。
BtrFS 支持的最大文件大小为 16 EiB,并将最大文件名长度限制为 255 个字符。BtrFS 的一些功能包括在线碎片整理、在线块设备添加和删除、RAID 支持、可按文件或卷配置的压缩、文件克隆、校验和以及处理交换文件和交换分区的能力。
六、结论
Linux 文件系统发展了几十年,才获得了它的复杂性和功能性。每项新功能都解决了过时系统版本中存在的问题。
阅读本文后,您应该对 Linux 文件系统及其功能有了更好的了解。
更多推荐
所有评论(0)