首页 >> 百科

linux是什么系统?linux系统是哪个国家的

2023-03-12 百科 174 作者:admin

译者:

本文旨在从高层次讨论 Linux 文件系统的概念,而不是具体描述特定文件系统(如 EXT4)的工作原理。 此外,本文不是有关文件系统命令的教程。

每台通用计算机都需要在硬盘驱动器 (HDD) 或其他类似设备(例如 USB 存储器)上存储各种数据。 这样做有两个原因。 首先,当计算机关闭时,内存 (RAM) 会丢失其内容。 虽然有非易失性类型的 RAM 即使在计算机断电时也能保留数据(例如 USB 闪存驱动器和固态驱动器中的闪存),但闪存和标准的易失性 RAM(例如 DDR3 和其他类似内存)相比RAM的类型,它要贵得多。

数据需要存储在硬盘驱动器上的另一个原因是,即使是标准 RAM 也比普通硬盘驱动器贵得多。 虽然 RAM 和硬盘的价格都在快速下降,但 RAM 的价格仍然以字节为单位。 让我们以字节为单位快速计算一下:基于 16 GB 大内存和 2 TB 大硬盘驱动器的价格。 计算表明,RAM 的价格大约是硬盘驱动器的 71 倍。 如今,典型的 RAM 成本约为 0.3750 美元/字节。

很久以前,为了形象化 RAM 的价格,在计算的早期,一种类型的 RAM 是基于 CRT 屏幕上的点。 这种 RAM 非常昂贵,大约 1 美元/字节。

定义

您可能听说过其他人以各种令人困惑的方式谈论文件系统。 文件系统这个词本身有多重含义,您需要从讨论或文档的上下文中理解它的正确含义。

我将根据我观察到的在不同上下文中使用的内容来定义“文件系统”一词的不同含义。 请注意,尽管我已尝试遵循标准的“官方”含义,但我打算根据其不同用法(如下)来定义该术语。 也就是说,我将在本文的后续章节中更详细地探讨它。

从顶级根 (/) 目录开始的整个 Linux 目录结构。

一种特定类型的数据存储格式,如EXT3、EXT4、BTRFS、XFS等。 Linux 支持近百种文件系统,包括一些非常古老的和一些非常新的文件系统。 每种文件系统类型都使用自己独特的元数据结构来定义数据的存储和访问方式。

使用特定类型的文件系统格式化的分区或逻辑卷可以挂载到 Linux 文件系统的指定挂载点。

文件系统的基本功能

磁盘存储是文件系统的必备功能,它附带了一些有趣且不可或缺的细节。 显然,文件系统是用来为非易失性数据的存储提供空间的,这是它的基本功能。 但是,它也有很多从需求出发的重要功能。

所有的文件系统都需要提供命名空间,命名空间是一种命名和组织的方式。 它定义了文件的命名方式、文件名的最大长度以及所有可用字符中可用于文件名的字符子集。 它还为磁盘数据定义了一种逻辑结构,例如使用目录来组织文件,而不是将所有文件聚合成一个单一的、巨大的文件混乱。

定义命名空间后,需要一个元数据结构来为该命名空间提供逻辑基础。 这包括需要的数据结构能够支持分层目录结构,同时能够通过该结构判断硬盘空间中的块是否被使用或可用,支持修改文件名或目录,提供有关文件大小、创建时间和上次访问或修改时间等信息,以及数据所属文件在磁盘空间中的位置或位置。 其他元数据用于存储有关磁盘细分的高级信息,例如逻辑卷和分区。 这种更高级别的元数据及其表示的结构包含描述文件系统在驱动器或分区上的存储位置的信息,但独立于文件系统元数据。

文件系统还需要一个应用程序编程接口 (API),它提供对系统函数调用的访问,这些函数调用对文件系统对象(例如文件和目录)进行操作。 API还提供了创建、移动和删除文件等功能。 它还提供算法来确定某些信息,例如文件在文件系统中的存储位置。 此类算法可用于考虑磁盘速度和最小化磁盘碎片等术语。

现代文件系统还提供了一种安全模型,这是一种用于定义文件和目录访问权限的方案。 Linux 文件系统安全模型确保用户只能访问自己的文件,而不能访问其他用户或操作系统本身的文件。

最后一个构建块是实现所有这些功能所需的软件。 Linux 使用两层软件实现来提高系统和程序员的效率。

图 1:Linux 两层文件系统软件实现。

这两层中的第一层是 Linux 虚拟文件系统。 虚拟文件系统为内核和开发人员提供了一个单一的命令集来访问所有类型的文件系统。 虚拟文件系统软件通过调用特殊的设备驱动程序与不同类型的文件系统进行交互。 特定文件系统的设备驱动程序是第二层实现。 设备驱动程序将一组标准的文件系统命令解释为分区或逻辑卷上特定于类型的文件系统命令。

目录结构

作为一个通常非常有条理的处女座,我喜欢把东西放在更小、更有条理的容器里,而不是放在一个大容器里。 目录的使用允许我存储文件并在我想查看它们时找到它们。 目录也叫文件夹,之所以叫文件夹,是因为里面的文件类比存放在物理桌面上。

在 Linux 和许多其他操作系统中,目录可以组织成树状层次结构。 Linux目录结构在Linux文件系统层次标准[1]中定义(LCTT译注:见此[2])。 当通过目录引用访问目录时,更深层次的目录名称由正斜杠 (/) 连接以形成一个序列,例如 /var/log 和 /var/spool/mail。 这些被称为路径。

下表简要列出了标准的、众所周知的、预定义的顶级 Linux 目录及其用途。

目录说明

/(根文件系统)

根文件系统是文件系统的顶级目录。 它必须包含在安装其他文件系统之前启动 Linux 系统所需的所有文件。 它必须包含启动文件系统其余部分所需的所有可执行文件和库。 文件系统启动后,所有其他文件系统都作为根文件系统的子目录安装在标准的、预定义的安装点上。

/垃圾桶

/bin 目录包含用户可执行文件。

/引导

包含启动Linux系统所需的静态和内核可执行文件和配置文件。

/开发

该目录包含连接到系统的每个硬件设备的设备文件。 这些文件不是设备驱动程序,而是代表了计算机上的每一个设备,计算机可以访问这些设备。

/ETC

包含主机的本地系统配置文件。

/家

home目录存放用户文件,每个用户在/home目录下都有一个子目录(作为他们的home目录)。

/库

包含启动系统所需的共享库文件。

/媒体

安装外部可移动设备的地方,例如可能连接到主机的 USB 驱动器。

/mnt

通用文件系统(如不可移动媒体)的临时挂载点,可在管理员修复或处理文件系统时使用。

/选择

应在此处安装可选文件,例如供应商提供的应用程序。

/根

这不是根 (/) 文件系统。 它是 root 用户的主目录。

/sbin

系统二进制文件。 这些是用于系统管理的可执行文件。

/tmp

临时目录。 由操作系统和许多程序用来存储临时文件。 用户也可以在这里临时存储文件。 请注意,此处存储的文件可能随时被删除,恕不另行通知。

/usr

此目录包含可共享的只读文件,包括可执行二进制文件和库、手册文件和其他类型的文档。

/变量

可变数据文件存储在这里。 这些文件包括日志文件、MySQL 和其他数据库的文件、Web 服务器的数据文件、邮件等等。

表 1:Linux 文件系统层次结构的顶层

这些目录及其子目录如表1所示,在所有的子目录中,粗体表示的目录为根文件系统所需的部分。 也就是说,它们不能创建为单独的文件系统并在引导时挂载。 这是因为它们(尤其是它们包含的内容)必须在系统启动时出现,系统才能正常启动。

/media 目录和 /mnt 目录是根文件系统的一部分,但它们从不包含任何数据,因为它们只是一个临时挂载点。

表 1 中剩余的非粗体目录不需要在系统启动期间出现,而是随后安装在根文件系统上,为主机在启动阶段进行有用的工作做准备。

有关每个目录及其子目录的更多详细信息,请参阅官方 Linux 文件系统层次结构标准 [3] (FHS) 网页。 维基百科上对 FHS [4] 也有很好的介绍。 应尽可能严格遵守这些标准,以确保操作和功能的一致性。 无论主机上使用何种类型的文件系统,这种层次目录结构都是相同的。

Linux统一目录结构

在某些非 Linux PC 上,如果有多个物理硬盘或多个分区,每个硬盘或分区都会分配一个盘符。 了解文件或程序位于哪个硬盘驱动器(例如 C: 或 D:)非常有用。 然后,可以使用命令中的盘符,以D:为例,为了进入D:盘,可以使用cd命令将工作目录切换到正确的目录,以定位需要的文件。 每个硬盘驱动器都有自己独立的、完整的目录树。

Linux 文件系统将所有物理硬盘驱动器和分区统一到一个目录结构中。 它们都从顶级根目录 (/) 开始。 所有其他目录及其子目录都位于单个 Linux 根目录下。 这意味着只有一个目录树可以搜索文件和程序。

因为只有一个文件系统,所以可以在与根(/)文件系统不同的物理硬盘、分区或逻辑分区上创建/home、/tmp、/var、/opt或/usr,然后挂载在挂载点(目录)上,因此成为根文件系统树的一部分。 即使是可移动驱动器,如 USB 驱动器或外部 USB 或 ESATA 硬盘驱动器,也可以挂载在根文件系统上,并成为目录树的组成部分。

当从一个版本的 Linux 发行版升级到另一个版本或从一个发行版更改为另一个发行版时,以这种方式创建不同分区的好处会变得很明显。 通常,除了 dnf-in 之类的任何升级工具外,明智的做法是在升级过程中偶尔重新格式化包含操作系统的硬盘驱动器,以清除长期积累的垃圾。 如果 /home 目录是根文件系统的一部分(在同一硬盘驱动器上),它也会被格式化,然后需要从以前的备份中恢复。 如果 /home 目录用作单独的文件系统,则安装程序将识别它并跳过其格式化。 /var 目录也是如此,它存储数据库、邮箱、网页和其他可变的用户和系统数据。

将 Linux 系统目录树的某些部分保留为单独的文件系统还有其他原因。 例如,很久以前,在我意识到将我需要的所有 Linux 目录作为根 (/) 文件系统的一部分可能存在的问题之前,一些非常大的文件填满了 /home 目录。 由于 /home 目录和 /tmp 目录都不是单独的文件系统,而是根文件系统的简单子目录,因此整个根文件系统都被填满了。 这样操作系统就没有更多的空间来存储临时文件或扩展现有的数据文件。 首先,应用程序开始抱怨没有空间来保存文件,然后,操作系统也开始出现异常行为。 开机进入单用户模式,清理掉/home目录下的多余文件后,终于可以继续工作了。 然后我使用非常标准的多文件系统设置重新安装了 Linux 系统,这防止了崩溃再次发生。

我曾经有过这样的情况,Linux 主机正在运行,但不允许用户通过 GUI 桌面登录。 我可以通过命令行界面 (CLI) 在本地登录,然后通过虚拟控制台之一远程使用 SSH [5]。 出现问题的原因是/tmp文件系统已满,无法创建一些GUI桌面登录需要的临时文件。 由于命令行界面登录不需要在 /tmp 目录中创建文件,因此没有可用空间不会阻止我使用命令行界面登录。 在这种情况下,/tmp 目录是一个分离的文件系统,并且 /tmp 所在的逻辑卷上仍有大量可用空间。 我简单地扩展了/tmp 逻辑卷[6] 的容量以容纳主机需要的临时文件,问题就解决了。 请注意,此解决方法不需要重新启动,并且当 /tmp 文件系统扩大时用户可以登录到桌面。

当我在一家大型科技公司担任实验室管理员时,我遇到了另一个小故障。 开发人员将应用程序安装在错误的位置 (/var)。 结果,应用程序崩溃了,因为 /var 文件系统已满,并且存储在 /var/log 中的日志文件由于空间不足而无法添加新的日志消息。 但是,系统仍在运行,因为根文件系统和/tmp 文件系统还没有被填满。 删除应用程序并将其重新安装到 /opt 文件系统后,问题就解决了。

文件系统类型

Linux 系统支持大约 100 种分区类型进行读取,但只能创建和写入其中的一小部分。 然而,在同一个根文件系统上挂载不同类型的文件系统是可能的,也是很常见的。 在此上下文中,我们使用术语文件系统来指代在硬盘驱动器或逻辑卷上的分区中存储和管理用户数据所需的结构和元数据。 Linux系统的fdisk命令可以识别的文件系统类型的完整列表在这里[7]。 你可以感受到Linux系统对多种系统的高度兼容性。

Linux支持读取这么多类型的分区系统的主要目的是为了提高兼容性,使其至少可以与其他一些计算机系统的文件系统进行交互。 下面是在以下位置创建新文件系统时所有可选类型的列表:

其他发行版以不同方式支持创建文件系统类型。 例如,6 只支持创建上表中粗体标记的文件系统类型。

在 Linux 系统上“挂载”文件系统这一术语指的是这样一个事实,即在计算的早期,需要将磁带或可移动磁盘组物理挂载到合适的驱动器设备上。 将文件系统物理放置在驱动器上后,操作系统会将文件系统从逻辑上挂载到磁盘上,以便操作系统、应用程序和用户可以访问文件系统的内容。

挂载点只是一个目录,与任何其他目录一样,它是作为根文件系统的一部分创建的。 因此,例如,主文件系统挂载在目录 /home 下。 文件系统可以挂载在其他非根文件系统的挂载点上,但这并不常见。

在Linux系统启动阶段的初始阶段,根文件系统会被挂载到根目录(/)。 其他文件系统然后由 Linux 引导程序挂载,例如 rc 在某些较新的 Linux 发行版下或中。 引导过程中文件系统的挂载由 /etc/fstab 配置文件管理。 一个容易记住的方法是 fstab 代表“文件系统表”,它包含需要挂载的文件系统列表,其中指定了挂载点,以及特定文件系统可能需要的选项。

使用 mount 命令将文件系统挂载到现有目录/挂载点。 通常,作为挂载点的任何目录都应该是空的,并且不包含任何其他文件。 Linux系统不禁止用户挂载已挂载文件系统的目录,或在包含文件的目录上挂载文件系统。 如果您在现有目录或文件系统上挂载文件系统,其原始内容将被隐藏,只有新挂载文件系统的内容可见。

综上所述

我希望本文已经澄清了围绕术语文件系统可能存在的一些歧义。 我花了很长时间,并在一位导师的帮助下,才真正理解和欣赏 Linux 文件系统的复杂性、优雅性和强大功能,以及它的全部含义。

如果您有任何问题,请将它们写在下面的评论中,我会尽力回答。

下个月

Linux 的另一个重要概念是:一切皆文件[8]。 这个概念对用户和系统管理员有一些有趣和重要的实际应用。 说完这个道理,你可能想看我的文章:一切皆文件[9],写在我下个月打算写的关于/dev目录的文章之前。 (LCTT ,也可参考此[10])

郑重声明:本文版权归原作者所有,转载文章仅出于传播更多信息之目的。 如作者信息标注有误,请第一时间联系我们修改或删除,谢谢。

关于我们

最火推荐

小编推荐

联系我们


Copyright 8S新商盟 Rights Reserved.
联系YY号:2949821684
邮箱:chenjing919994@sohu.com
备案号:浙ICP备2023016511号-1