LINUX入门:Linux 文件系统概览
《LINUX入门:Linux 文件系统概览》要点: 本文旨在高屋建瓴地来讨论 Linux 文件系统概念,而不是对某种特定的文件系统,好比 EXT4 是如何工作的进行具体的描述.另外,本文也不是一个文件系统命令的教程. 每台通用计算机都需要将各种数据存储在硬盘驱动器(HDD)或其他类似设备上,好比 USB 存储器.这样做有两个原因.首先,当计算机关闭以后,内存(RAM)会失去存于它里面的内容.尽管存在非易失类型的 RAM,在计算机断电以后还能把数据存储下来(好比采用 USB 闪存和固态硬盘的闪存),但是,闪存和标准的、易失性的 RAM,好比 DDR3 以及其他相似类型的 RAM 相比,要贵很多. 数据需要存储在硬盘驱动上的另一个原因是,即使是标准的 RAM 也要比普通硬盘贵得多.尽管 RAM 和硬盘的价格都在迅速下降,但是 RAM 的价格依旧在以字节为单位来计算.让我们进行一个以字节为单位的快速计算:基于 16 GB 大的 RAM 的价格和 2 TB 大的硬盘驱动的价格.计算显示 RAM 的价格大约比硬盘驱动贵 71 倍.本日,一个典型的 RAM 的价格大约是 0.000000004373750 美元/每字节. 直观的展示一下在很久以前 RAM 的价格,在计算机发展的非常早的时期,此中一种类型的 RAM 是基于在 CRT 屏幕上的点.这种 RAM 非常昂贵,大约 1 美元/每字节. ? 定义你可能听过其他人以各种不同和令人迷惑的方式谈论过文件系统.文件系统这个单词自己有多重含义,你需要从一个讨论或文件的上下文中理解它的正确含义. 我将根据我所观察到的在不同情况下使用“文件系统”这个词来定义它的不同含义.注意,尽管我试图遵循标准的“官方”含义,但是我打算基于它的不同用法来定义这个术语(如下).这便是说我将在本文的后续章节中进行更详细的探讨.
? 文件系统的基本功能磁盘存储是文件系统必需的功能,它与之伴生的有一些有趣而且不可或缺的细节.很明显,文件系统是用来为非易失数据的存储提供空间,这是它的基本功能.然而,它还有许多从需求出发的重要功能. 所有文件系统都需要提供一个名字空间,这是一种命名和组织办法.它定义了文件应该如何命名、文件名的最大长度,以及所有可用字符集中可用于文件名中字符集子集.它也定义了一个磁盘上数据的逻辑结构,比如使用目录来组织文件而不是把所有文件聚集成一个单一的、巨大的文件混合体. 定义名字空间以后,元数据结构是为该名字空间提供逻辑基础所必须的.这包括所需数据结构要能够支持分层目录结构,同时能够通过结构来确定硬盘空间中的块是已用的或可用的,支持修改文件或目录的名字,提供关于文件大小、创建时间、最后拜访或修改时间等信息,以及位置或数据所属的文件在磁盘空间中的位置.其他的元数据用来存储关于磁盘细分的高级信息,比如逻辑卷和分区.这种更高层次的元数据以及它所代表的结构包含描述文件系统存储在驱动器或分区中的信息,但与文件系统元数据无关,与之独立. 文件系统也需要一个应用程序接口(API),从而提供了对文件系统对象,比如文件和目录进行操作的系统功能调用的拜访.API 也提供了诸如创建、移动和删除文件的功能.它也提供了算法来确定某些信息,比如文件存于文件系统中的位置.这样的算法可以用来解释诸如磁盘速度和最小化磁盘碎片等术语. 现代文件系统还提供一个平安模型,这是一个定义文件和目录的访问权限的方案.Linux 文件系统平安模型确保用户只能访问自己的文件,而不能访问其他用户的文件或操作系统本身. 最后一块组成部分是实现这些所有功能所必要的软件.Linux 使用两层软件实现的方式来提高系统和程序员的效率. 图片 1:Linux 两层文件体系软件实现. 这两层中的第一层是 Linux 虚拟文件系统.虚拟文件系统提供了内核和开发者拜访所有类型文件系统的的单一命令集.虚拟文件系统软件通过调用特殊设备驱动来和不同类型的文件系统进行交互.特定文件系统的设备驱动是第二层实现.设备驱动程序将文件系统命令的标准集解释为在分区或逻辑卷上的特定类型文件系统命令. ? 目录布局作为一个通常来说非常有条理的处女座,我喜欢将东西存储在更小的、有组织的小容器中,而不是存于同一个大容器中.目录的使用使我能够存储文件并在我想要查看这些文件的时候也能够找到它们.目录也被称为文件夹,之所以被称为文件夹,是因为其中的文件被类比存放于物理桌面上. 在 Linux 和其他许多操作系统中,目录可以被组织成树状的分层结构.在 Linux 文件系统层次标准中定义了 Linux 的目录结构(LCTT 译注:可参阅这篇).当通过目录引用来拜访目录时,更深层目录名字是通过正斜杠(/)来连接,从而形成一个序列,比如 下表提供了尺度的、众所周知的、预定义的顶层 Linux 目录及其用途的简要清单.
表 1:Linux 文件系统层次结构的顶层 这些目录以及它们的子目录如表 1 所示,在所有子目录中,粗体的目录组成了 root 文件系统的必需部分.也就是说,它们不能创建为一个分离的文件系统并且在开机时进行挂载.这是因为它们(特别是它们包括的内容)必须在系统启动的时候出现,从而系统才能正确启动.
表 1 中剩下的非粗体的目录不必要在系统启动过程中出现,但会在之后挂载到 root 文件系统上,在开机阶段,它们为主机进行准备,从而执行有用的工作. 请参考官方 Linux 文件系统层次尺度(FHS)网页来了解这些每一个目录以及它们的子目录的更多细节.维基百科上也有关于 FHS 的一个很好的介绍.应该尽可能的遵循这些尺度,从而确保操作和功能的一致性.无论在主机上使用什么类型的文件系统,该层次目录结构都是相同的. ? Linux 统一目录结构在一些非 Linux 操作系统的个人电脑上,如果有多个物理硬盘驱动器或多个分区,每一个硬盘或分区都会分配一个驱动器号.知道文件或程序位于哪一个硬盘驱动器上是很有必要的,比如 Linux 文件系统将所有物理硬盘驱动器和分区统一为一个目录布局.它们均从顶层 root 目录( 因为只有一个文件系统,所以 当从 Linux 发行版的一个版本升级到另一个版本或从一个发行版更改到另一个发行版的时候,就会很清楚地看到这样创建到不同分区的好处.通常情况下,除了任何像 Fedora 中的 将 Linux 系统目录树的某些部分作为一个分离的文件系统还有一些其他原因.比如,在很久以前,我还不知道将所有需要的 Linux 目录均作为 root( 我曾经遇到一个情况,Linux 主机还在运行,但是却不允许用户通过 GUI 桌面登录.我可以通过使用虚拟控制台之一,通过命令行界面(CLI)本地登录,然后远程使用 SSH .问题的原因是因为 当我在一家很大的科技公司当实验室管理员的时候,遇到过另外一个故障.开发者将一个应用程序安装到了一个错误的位置( ? 文件系统类型Linux 系统支持大约 100 种分区类型的读取,但是只能对很少的一些进行创建和写操作.但是,可以挂载不同类型的文件系统在同一个 root 文件系统上,并且是很常见的.在这样的配景下,我们所说的文件系统一词是指在硬盘驱动器或逻辑卷上的一个分区中存储和管理用户数据所需要的结构和元数据.能够被 Linux 系统的 Linux 支持读取这么多类型的分区系统的主要目的是为了提高兼容性,从而至少能够与一些其他计算机系统的文件系统进行交互.下面列出了在 Fedora 中创立一个新的文件系统时的所有可选类型:
其他发行版支持创建的文件系统类型不同.好比,CentOS 6 只支持创建上表中标为黑体的文件系统类型. ? 挂载在 Linux 系统上“挂载mount”文件系统的术语是指在计算机发展的早期,磁带或可移动的磁盘组需要需要物理地挂载到一个合适的驱动器设备上.当通过物理的方式放置到驱动器上以后,操作系统会逻辑地挂载位于磁盘上的文件系统,从而操作系统、应用程序和用户才能够拜访文件系统中的内容. 一个挂载点简单的来说就是一个目录,就像任何其它目录一样,是作为 root 文件系统的一部分创建的.所以,好比,home 文件系统是挂载在目录 在 Linux 系统启动阶段的最初阶段,root 文件系统就会被挂载到 root 目录下( 使用 ? 结论我希望通过这篇文章,阐明了围绕文件系统这个术语的一些可能的模糊之处.我花费了很长的时间,以及在一个良师的赞助下才真正理解和欣赏到 Linux 文件系统的复杂性、优雅性和功能以及它的全部含义. 如果你有任何问题,请写到下面的评论中,我会尽力来答复它们. ? 下个月Linux 的另一个重要概念是:万物皆为文件.这个概念对用户和系统管理员来说有一些有趣和重要的实际应用.当我说完这个理由之后,你可能会想阅读我的文章:万物皆为文件,这篇文章会在我下个月方案写的关于 (题图 :?wallup.net) 作者简介: David Both 居住在美国北卡罗纳州的首府罗利,是一个 Linux 开源贡献者.他已经从事 IT 行业 40 余年,在 IBM 传授 OS/2 20 余年.1981 年,他在 IBM 开发了第一个关于最初的 IBM 个人电脑的培训课程.他也曾在 Red Hat 传授 RHCE 课程,也曾供职于 MCI worldcom,Cico 以及北卡罗纳州等.他已经为 Linux 开源社区工作近 20 年. via: https://opensource.com/life/16/10/introduction-linux-filesystems 作者:David Both 译者:ucasFL 校对:wxy 本文由 LCTT 原创编译,Linux中国 荣誉推出 本文永远更新链接地址: 学习更多LINUX教程,请查看站内专栏,如果有LINUX疑问,可以加QQ交流咨询。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |