Linux 文件系统

2025年03月17日 | 阅读 9 分钟

Linux 文件系统是磁盘驱动器或分区上文件的一种结构化集合。分区是内存的一个段,包含一些特定的数据。在我们的机器中,内存可以有各种分区。通常,每个分区都包含一个文件系统。

通用计算机系统需要系统地存储数据,以便我们可以在更短的时间内轻松访问文件。它将数据存储在硬盘驱动器 (HDD) 或某些等效的存储类型上。维护文件系统可能有以下原因:

  • 计算机主要将数据保存到 RAM 存储器;如果计算机关闭,它可能会丢失数据。然而,有非易失性 RAM(闪存 RAM 和 SSD)可用于在断电后维护数据。
  • 与标准 RAM 相比,数据存储更倾向于硬盘驱动器,因为 RAM 比磁盘空间更昂贵。硬盘驱动器的成本相对于 RAM 正在逐渐下降。

Linux 文件系统包含以下部分:

  • 根目录 (/)
  • 特定的数据存储格式(EXT3、EXT4、BTRFS、XFS 等)
  • 具有特定文件系统的分区或逻辑卷。

什么是 Linux 文件系统?

Linux 文件系统通常是 Linux 操作系统的内置层,用于处理存储的数据管理。它有助于在磁盘存储上组织文件。它管理文件名、文件大小、创建日期以及有关文件的更多信息。

如果我们的文件系统中存在不支持的文件格式,我们可以下载软件来处理它。

Linux 文件系统结构

Linux 文件系统具有分层文件结构,因为它包含一个根目录及其子目录。所有其他目录都可以从根目录访问。一个分区通常只有一个文件系统,但它可能有一个以上的文件系统。

文件系统旨在管理和提供非易失性存储数据空间。所有文件系统都需要一个命名空间,这是一种命名和组织方法。命名空间定义了命名过程、文件名的长度或可用于文件名的字符子集。它还定义了内存段上文件的逻辑结构,例如使用目录来组织特定文件。一旦描述了命名空间,就必须为该特定文件定义元数据描述。

数据结构需要支持分层目录结构;此结构用于描述特定块的可用和已用磁盘空间。它还包含有关文件的其他详细信息,例如文件大小、创建、更新和上次修改的日期和时间。

此外,它还存储有关磁盘部分的高级信息,例如分区和卷。

高级数据及其表示的结构包含存储在驱动器上的文件系统信息;它与文件系统元数据不同且独立。

Linux 文件系统包含两部分文件系统软件实现架构。请看下图:

Linux File System

文件系统需要一个 API(应用程序编程接口)来访问函数调用,以便与文件和目录等文件系统组件进行交互。API 简化了创建、删除和复制文件等任务。它提供了一个算法,该算法定义了文件在文件系统上的排列方式。

给定文件系统的前两部分统称为 Linux 虚拟文件系统。它为内核和开发人员提供了一组统一的命令来访问文件系统。此虚拟文件系统需要特定的系统驱动程序来为文件系统提供接口。

目录结构

目录帮助我们存储文件并在需要时找到它们。此外,目录也被称为文件夹,因为它们可以被视为文件所在的文件夹,就像物理桌面类比一样。在 Linux 和其他几个操作系统中,目录可以组织成树状层次结构。

Linux 的目录结构在 Linux FHS (Filesystem Hierarchy Standard) 中有详细的文档和定义。通过使用由“/”正斜杠链接的逐层更深的目录名称(例如 /var/spool/mail 和 /var/log),可以访问这些目录。这些被称为路径。

下表提供了一个非常简短的标准、已定义且众所周知的顶级 Linux 目录列表及其用途:

  • /(根文件系统): 它是顶级文件系统目录。它必须包含在挂载其他文件系统之前引导 Linux 系统所需的所有文件。系统启动后,所有其他文件系统都挂载在根文件系统目录的明确定义的标准挂载点上。
  • /boot: 它包含启动 Linux 计算机所需的静态内核、引导加载程序配置和可执行文件。
  • /bin: 此目录包含用户可执行文件。
  • /dev: 它包含连接到系统的所有硬件设备的设备文件。这些不是设备驱动程序;相反,它们是指示系统上所有设备并提供对这些设备访问的文件。
  • /etc: 它包含主机系统的本地系统配置文件。
  • /lib: 它包含启动系统所需的共享库文件。
  • /home: 主目录存储可用于用户文件。所有用户在 /home 内部都有一个子目录。
  • /mnt: 它是基本文件系统的临时挂载点,可以在管理员正在处理或修复文件系统时使用。
  • /media: 用于挂载外部可移动媒体设备(如 USB 拇指驱动器)的地方,这些设备可能连接到主机。
  • /opt: 它包含可选文件,例如必须放置在此处的供应商提供的应用程序。
  • /root: 它是 root 用户的家目录。请记住,它不是“/”(根)文件系统。
  • /tmp: 这是一个临时目录,供操作系统和几个程序用于存储临时文件。用户也可以在此处临时存储文件。请记住,此目录中的文件可能随时在没有事先通知的情况下被删除。
  • /sbin: 这些是系统二进制文件。它们是用于系统管理的 executables。
  • /usr: 它们是只读和可共享的文件,包括可执行库和二进制文件、man 文件和几种文档类型。
  • /var: 在这里,可变数据文件被保存。它可以包含 MySQL、日志文件、其他数据库文件、电子邮件收件箱、Web 服务器数据文件等等。

Linux 文件系统特性

在 Linux 中,文件系统创建了一个树状结构。所有文件都排列成一棵树及其分支。最顶层的目录称为 根 (/) 目录。Linux 中的所有其他目录都可以从根目录访问。

Linux 文件系统的一些主要特性如下:

  • 指定路径: Linux 不使用反斜杠 (\\) 来分隔组件;它使用正斜杠 (/) 作为替代。例如,在 Windows 中,数据可能存储在 C:\\ 我的文档\\ 工作中,而在 Linux 中,它将存储在 /home/ 我的文档/ 工作中。
  • 分区、目录和驱动器: Linux 不像 Windows 那样使用驱动器盘符来组织驱动器。在 Linux 中,我们无法分辨我们是在处理分区、网络设备还是“普通”目录和驱动器。
  • 区分大小写: Linux 文件系统区分大小写。它区分小写和大写文件名。例如,在 Linux 中 test.txt 和 Test.txt 是不同的。此规则也适用于目录和 Linux 命令。
  • 文件扩展名: 在 Linux 中,文件可能具有扩展名“.txt”,但文件不一定必须具有文件扩展名。在使用 Shell 时,这给初学者区分文件和目录带来了一些问题。如果我们使用图形文件管理器,它会象征性地表示文件和文件夹。
  • 隐藏文件: Linux 区分标准文件和隐藏文件,在 Linux 操作系统中,大多数配置文件都是隐藏的。通常,我们不需要访问或读取隐藏文件。Linux 中的隐藏文件以文件名前的点 (.) 表示(例如,.ignore)。要访问这些文件,我们需要更改文件管理器中的视图或需要在 shell 中使用特定命令。

Linux 文件系统类型

当我们安装 Linux 操作系统时,Linux 提供了许多文件系统,例如 Ext、Ext2、Ext3、Ext4、JFS、ReiserFS、XFS、btrfsswap

Linux File System

让我们详细了解每个文件系统:

1. Ext、Ext2、Ext3 和 Ext4 文件系统

文件系统 Ext 代表 Extended File System。它最初是为 MINIX OS 开发的。Ext 文件系统是一个较旧的版本,由于一些限制而不再使用。

Ext2 是第一个允许管理两太字节数据的 Linux 文件系统。Ext3 是在 Ext2 的基础上开发的;它是 Ext2 的升级版本,并包含向后兼容性。Ext3 的主要缺点是它不支持服务器,因为此文件系统不支持文件恢复和磁盘快照。

Ext4 文件系统是所有 Ext 文件系统中最快的文件系统。它是 SSD(固态硬盘)磁盘的非常兼容的选项,并且是 Linux 发行版中的默认文件系统。

2. JFS 文件系统

JFS 代表 Journaled File System,由 IBM 为 AIX Unix 开发。它是 Ext 文件系统的替代方案。它也可以在 Ext4 的位置使用,在需要稳定性和少量资源的情况下。当 CPU 功率有限时,它是一个方便的文件系统。

3. ReiserFS 文件系统

ReiserFS 是 Ext3 文件系统的替代方案。它具有改进的性能和高级功能。早期,ReiserFS 被用作 SUSE Linux 的默认文件系统,但后来它改变了一些策略,因此 SUSE 返回到 Ext3。此文件系统动态支持文件扩展名,但它在性能方面有一些缺点。

4. XFS 文件系统

XFS 文件系统被认为是高速 JFS,它是为并行 I/O 处理而开发的。NASA 仍在将其用于其高存储服务器(300+ 太字节服务器)。

5. Btrfs 文件系统

Btrfs 代表 B 树文件系统。它用于容错、修复系统、有趣的管理、广泛的存储配置等。它不适合生产系统。

6. Swap 文件系统

在系统休眠期间,swap 文件系统用于 Linux 操作系统中的内存分页。一个永不进入休眠状态的系统需要与其 RAM 大小相等的交换空间。

Linux 文件系统中的挂载是什么?

在 Linux 中,文件系统术语 “挂载” 指的是计算的早期,当时可移动磁盘或磁带包需要物理地安装在正确的驱动器设备上。在磁盘包上,文件系统将由操作系统逻辑地挂载,以便在物理上定位在驱动器上后,其内容可供应用程序、操作系统和用户访问。

简单来说,挂载点是作为文件系统组件创建的目录。例如,主文件系统放置在 /home 目录中。文件系统可以放置在许多非根文件系统的挂载点上,但这不太常见。

  • Linux 的根文件系统在启动序列的早期就挂载在 / 目录(根目录)上。
  • 一些文件系统随后由 Linux 的启动程序挂载,在 SystemV 上是 rc,在新 Linux 版本中是通过 systemd。
  • 启动期间的文件系统挂载由配置文件 /etc/fstab 处理。
  • 一个简单的理解方法是 fstab 是 “文件系统表” 的缩写,它是一个文件系统列表,其中包含要挂载的文件系统、它们的选项以及特定文件系统可能需要的指定挂载点。

借助 mount 命令,文件系统可以挂载到可用的挂载点/目录。换句话说,任何用作挂载点的目录都不应包含其他文件,并且应为空。Linux 不会阻止用户将文件系统挂载到已经可用的文件系统或包含文件的目录上。如果我们将任何文件系统挂载到任何现有文件系统或目录上,实际内容将被覆盖,并且只显示新挂载的文件系统内容。


下一个主题Linux 创建文件