xfs 文件系统

XFS 日志文件系统是另一个最初为进入 Linux 世界的商业 Unix 系统而创建的文件系统。
Silicon Graphics Incorporated (SGI) 最初于 1994 年为其商业 IRIX Unix 系统创建了 XFS。
它于 2002 年发布到 Linux 环境中以供通用。

XFS 文件系统使用日志的回写模式,该模式提供了高性能,但确实会带来一定的风险,因为实际数据并未存储在日志文件中。
XFS 文件系统也允许在线调整文件系统的大小,类似于 ReiserFS 文件系统,除了 XFS 文件系统只能扩展不能收缩。

ext4 文件系统

扩展 ext3 文件系统的结果是(我们可能已经猜到)是 ext4 文件系统。
2008 年,Linux 内核正式支持 ext4 文件系统,现在是大多数流行 Linux 发行版(如 Fedora 和 Ubuntu)中使用的默认文件系统。

此外,为了支持压缩和加密,ext4 文件系统还支持一种称为范围的功能。
Extent 以块为单位在存储设备上分配空间,并且只将起始块位置存储在 inode 表中。
这有助于节省 inode 表中的空间,因为不必列出用于存储文件中数据的所有数据块。

ext4 文件系统还包含块预分配。
如果我们想在存储设备上为我们知道大小会增长的文件保留空间,使用 ext4 文件系统可以为文件分配所有预期的块,而不仅仅是物理上存在的块。
ext4 文件系统用零填充保留的数据块,并且知道不将它们分配给任何其他文件。

reiser 文件系统

2001 年,Hans Reiser 为 Linux 创建了第一个日志文件系统,称为 ReiserFS。
ReiserFS 文件系统仅支持回写日志模式,仅将 inode 表数据写入日志文件。
因为它只将 inode 表数据写入日志,所以 ReiserFS 文件系统是 Linux 中最快的日志文件系统之一。

ReiserFS 文件系统中包含的两个有趣功能是,我们可以在现有文件系统仍处于活动状态时调整其大小,并且它使用一种称为 tail打包的技术,该技术将一个文件中的数据填充到另一个文件中数据块中的空白空间。
如果我们必须扩展已创建的文件系统以容纳更多数据,则活动文件系统大小调整功能非常有用。

日志文件系统(JFS)

日志文件系统 (JFS) 可能是最古老的日志文件系统之一,它是由 IBM 在 1990 年为其 AIX 风格的 Unix 开发的。
然而,直到它的第二个版本才被移植到 Linux 环境中。

注 - 第二版 JFS 文件系统的 IBM 官方名称是 JFS2,但大多数 Linux 系统仅将其称为 JFS。

JFS 文件系统使用有序日志方式,在日志中只存储 inode 表数据,但在实际文件数据写入存储设备之前不会删除它。
这种方法是 ReiserFS 的速度和数据模式日志方法的完整性之间的折衷。

JFS 文件系统使用基于扩展的文件分配,为写入存储设备的每个文件分配一组块。
此方法可减少存储设备上的碎片。
在 IBM Linux 产品之外,JFS 文件系统并不常用,但我们可能会在 Linux 之旅中遇到它。

Linux 文件系统 – ext2、ext3、ext4、JFS 和 XFS

最初的 Linux 系统使用一个简单的文件系统来模仿 Unix 文件系统的功能。
在本教程中,我们将讨论 Linux 中使用的基本文件系统。

欢迎 on it road

ext3 文件系统

ext3 文件系统于 2001 年被添加到 Linux 内核中,直到最近,它还是几乎所有 Linux 发行版使用的默认文件系统。
它使用与 ext2 文件系统相同的 inode 表结构,但在每个存储设备中添加了一个日志文件,以记录写入存储设备的数据。

默认情况下,ext3 文件系统使用有序模式的日志方式,只将 inode 信息写入日志文件,但在数据块成功写入存储设备之前不会删除它。
创建文件系统时,我们可以使用简单的命令行选项将 ext3 文件系统中使用的日志记录方法更改为数据或者写回模式。

虽然 ext3 文件系统为 Linux 文件系统添加了基本的日志功能,但它仍然缺少一些东西。
例如,ext3 文件系统不提供任何意外删除文件的恢复,没有可用的内置数据压缩(尽管有一个可以单独安装的补丁提供此功能),并且 ext3 文件系统不提供'不支持加密文件。
出于这些原因,Linux 项目的开发人员选择继续改进 ext3 文件系统。

扩展的 Linux 日志文件系统

作为 Linux 项目的一部分开发 ext 和 ext2 文件系统的同一组也创建了文件系统的日志版本。
这些日志文件系统与 ext2 文件系统兼容,并且很容易在它们之间来回转换。
目前有两个独立的日志文件系统基于 ext2 文件系统。

日志文件系统

日志文件系统为 Linux 系统提供了一个新的安全级别。
日志文件系统不是直接将数据写入存储设备然后更新 inode 表,而是首先将文件更改写入临时文件(称为日志)。
数据成功写入存储设备和inode表后,日志条目被删除。

如果系统在将数据写入存储设备之前崩溃或者停电,日志文件系统只会读取日志文件并处理任何剩余的未提交数据。
Linux 中常用的日志记录方法共有三种,每种方法都有不同的保护级别。
这些如下表所示。

日志文件系统方法:

方法描述
Data modeinode 和文件数据都记录在日志中。 丢失数据的风险低,但性能不佳。
Ordered mode仅将 inode 数据写入日志,但在成功写入文件数据之前不会删除。 性能和安全性之间的良好折衷。
Writeback mode只将inode 数据写入日志,无法控制何时写入文件数据。 丢失数据的风险更高,但仍然比不使用日志要好。

局限性

数据模式日志方法是迄今为止保护数据最安全的方法,但也是最慢的。
写入存储设备的所有数据必须写入两次,一次写入日志,然后再写入实际存储设备。
这可能会导致性能不佳,尤其是对于进行大量数据写入的系统。
多年来,Linux 中出现了几种不同的日志文件系统。
以下部分描述了可用的流行 Linux 日志文件系统。

ext2 文件系统

原始的 ext 文件系统有很多限制,例如将文件大小限制为 2GB。
在首次引入 Linux 后不久,ext 文件系统被升级以创建第二个扩展文件系统,称为 ext2.
我们可以猜到,ext2 文件系统是对 ext 文件系统基本功能的扩展,但保持相同的结构。
ext2 文件系统扩展了 inode 表格式以跟踪有关系统上每个文件的添加信息。

ext2 inode 表为文件添加了创建、修改和上次访问的时间值,以帮助系统管理员跟踪系统上的文件访问。
ext2 文件系统还将允许的最大文件大小增加到 2TB(然后在 ext2 的更高版本中增加到 32TB)以帮助容纳数据库服务器中常见的大文件。

ext2文件系统除了扩展inode表外,还改变了文件在数据块中的存储方式。
ext 文件系统的一个常见问题是,当文件写入物理设备时,用于存储数据的块往往分散在整个设备中(称为碎片)。
数据块的碎片化会降低文件系统的性能,因为搜索存储设备以访问特定文件的所有块需要更长的时间。

ext2 文件系统通过在保存文件时按组分配磁盘块来帮助减少碎片。
通过对文件的数据块进行分组,文件系统不必在整个物理设备上搜索数据块来读取文件。
ext2 文件系统是多年来 Linux 发行版中使用的默认文件系统,但它也有其局限性。
inode 表虽然是一个很好的特性,它允许文件系统跟踪有关文件的添加信息,但可能会导致对系统来说可能是致命的问题。
文件系统每次存储或者更新文件时,都必须使用新信息修改 inode 表。
问题是这并不总是一个流畅的动作。

如果在正在存储的文件和正在更新的 inode 表之间计算机系统发生了某些事情,则两者将变得不同步。
ext2 文件系统因系统崩溃和断电而容易损坏而臭名昭著。
即使文件数据在物理设备上存储得很好,如果inode表条目没有完成,ext2文件系统甚至不会知道文件存在!不久之后,开发人员开始探索 Linux 文件系统的不同途径。

ext文件系统

Linux 操作系统引入的原始文件系统称为扩展文件系统(或者简称为 ext)。
它为 Linux 提供了一个基本的类 Unix 文件系统,使用虚拟目录来处理物理设备,并将数据存储在物理设备上的固定长度块中。

ext 文件系统使用称为 inode 的系统来跟踪有关存储在虚拟目录中的文件的信息。
inode 系统在每个物理设备上创建一个单独的表,称为 inode 表,用于存储文件信息。
虚拟目录中的每个存储文件在 inode 表中都有一个条目。
名称的扩展部分来自它在每个文件上跟踪的添加数据,包括:

  • 文件名
  • 文件大小
  • 文件的所有者
  • 文件所属的组
  • 文件的访问权限
  • 指向包含文件数据的每个磁盘块的指针

Linux 使用唯一编号(称为 inode 编号)引用 inode 表中的每个 inode,该编号在创建数据文件时由文件系统分配。
文件系统使用 inode 编号来标识文件,而不必使用完整的文件名和路径。

日期:2020-09-17 00:14:18 来源:oir作者:oir