我无法理解 Linux 文件系统到底是什么。
我理解它是系统上的文件和文件夹的“目录”:例如/bin
,,,,等等。但是,我还听到过类似这样的话/sbin
:/etc
/opt
“我只需要在这个磁盘上安装文件系统。”
ext2
这仅仅是指 Linux 中的文件夹结构吗?这与、ext3
、类型的文件系统有何关联?ext4
它们究竟是如何安装的?
答案1
总结:
文件系统是向操作系统描述磁盘上的二进制数据的元数据结构。由于操作系统需要使用它,因此必须有一个知道如何读取元数据并使用它来读取/写入文件数据的驱动程序。如果您的操作系统不支持给定的文件系统,则需要为其安装驱动程序。在操作系统可以使用驱动程序处理特定磁盘之前,必须将磁盘格式化为驱动程序支持的文件系统。操作系统文件的组织由操作系统本身决定,最好称为“目录结构”,但有些人错误地将其称为“文件系统”,如“BSD 文件系统”,但这有点含糊不清,可能应该避免。
整个故事:
硬盘很像一块黑板,上面有人写了一堆 1 和 0。整个黑板上的数据或多或少是连续的,这些数据代表磁盘上的所有文件。实际情况比这稍微复杂一些,但这是一个很好的比喻。
这里的问题是,我们如何知道黑板上一个文件在哪里结束,另一个文件在哪里开始?我如何知道文件的名称是什么、它在哪个文件夹中(或该文件夹在哪个文件夹中)、谁可以访问它、它是什么时候创建的、它最后一次被修改是什么时候?操作系统需要能够回答所有这些问题,但开发人员可以创建任何给定二进制布局的文件,因此,如果操作系统想要显示文件的名称或创建日期,以一致的方式为所有文件类型存储所有这些信息至关重要。
这些都是文件系统旨在回答这个问题。文件系统由文件数据存储在磁盘上的物理布局、跟踪元数据的逻辑结构关于这些文件的信息(名称、位置、创建日期……),以及一组以操作系统可以接受的方式使用元数据调用它来操作磁盘上的文件以达到任何目的。
为了使硬盘(或软盘/闪存/光盘/等)能够被操作系统使用,它必须格式化,以支持文件系统。最基本的是,这意味着删除当前磁盘上文件的所有现有元数据,并创建一个新结构来存储有关新文件的新元数据。这些元数据包括用于存储名称信息、文件夹内位置等的表。
传统上,文件系统向操作系统提供了一种抽象化访问磁盘文件细节的方法,即通过文件夹和文件的层次结构呈现数据。操作系统操纵文件系统元数据来呈现这种层次结构,但这不一定是组织和呈现数据的唯一方法。微软一直在研究非层次化文件系统一段时间内,它将根据内容属性而不是文件/文件夹来组织文件数据的呈现。这个想法是为数据呈现抽象的可编程视图,按任意数量的动态标准组织,而不需要在磁盘上搜索匹配的文件,这需要很长时间。
从实用性方面来看,微软目前更喜欢 NTFS 文件系统。Windows 在其内核中实现了一个低级驱动程序,该驱动程序确切知道如何使用 NTFS 格式的磁盘。Linux 支持多种文件系统,支持程度各不相同。许多模块都是内置内核驱动程序,但对于不太常见或更先进的文件系统,管理员必须下载内核模块或驱动程序并安装它。这可能是你的朋友说“安装文件系统”的意思,但根据你的完整引述,我认为他们说的是“我需要用这个文件系统格式化这个磁盘”。在 Windows 中,你可以安装 Ext3支持,而在较旧的 Linux 发行版中,你必须安装ntfs-3g 软件包手动读取 NTFS,但您是在操作系统上安装它们,而不是在磁盘上。格式化发生在磁盘上。
文件系统的具体安装过程因操作系统而异,还取决于开发人员选择如何打包和分发驱动程序。在 Debian 中,有些可能在 apt-get 中,有些可能以二进制文件的形式下载,有些则以源代码的形式进行编译。有些可能是用户空间,有些可能需要加载到内核中,甚至需要使用特殊构建选项进行自定义内核编译。
这目录结构操作系统的文件系统有时被通俗地错误地称为“Linux 文件系统”或“Windows 文件系统”,但这是一个不准确(或至少不精确)的说法。这很明显,因为您可以在 FAT32 或 NTFS 上安装 Windows,无论哪种方式,目录结构都是相同的。Ubuntu 在 ext3、ZFS 上,谋杀案、BTRFS 或 AFS 始终将其日志放在 /var/log 中,并将其配置文件放在 /home 中。即使文件系统相同,这些结构也可能因发行版而异。