进一步阅读

进一步阅读

我是 Linux 新手,请原谅您在这个问题上可能遇到的困惑。

据我了解,文件系统指定分区如何存储/管理文件,使用 ext2、ext3、reiserfs、xfs 等标准。有时我看到人们似乎将每个“ directory”称为

    /boot filesystem
    /usr/bin filesystem
    /root filesystem
    /bin filesystem

为什么我们将这些称为文件系统

如果它们每个都是一个分区,那会让我感到困惑,因为据我所知,/usr并且/usr/bin往往位于同一个分区中,但我看到人们指的是“/usr文件系统”和“/usr/bin文件系统”。

如果文件系统这里相当于Window的目录,我显然不清楚文件系统不仅仅是目录。另外,据我所知,Linux没有“目录”的概念;都是文件。

答案1

正如我在https://superuser.com/a/293160/38062:

这里的问题是“文件系统”这个词。在 POSIX/Unix/Linux 世界中,它用于表示多种不同的事物。

  1. “文件系统”有时是整个文件系统,植根于操作系统/内核并由操作系统内核呈现给应用程序软件。带着这个意思,人们谈论 POSIX 操作系统具有“单一文件系统树“, 例如。
  2. “文件系统”有时是一个(或多个)切片一个(或多个)DASD — 一个或多个格式化为单个连续磁盘扇区的集合体积具有给定的格式 - 由某些磁盘分区方案划分。带着这个意思,人们谈论“格式化我的/usr文件系统“.” /usr“这里是卷的(预期)安装点,或者(在某些分区方案中)其识别标签。
  3. “文件系统”有时是文件和目录的抽象可连接树,由文件系统驱动程序(即VFS层)呈现给系统的其余部分。带着这个意思,人们谈论“安装进程文件系统/proc“或”上使用tmpfs 文件系统为了/tmp”。

当你看到“文件系统”时,你看到的就是#1 的含义/usr/bin。它是一个以目录为根的文件系统树/usr/bin。是的,非常喜欢Linux有目录的概念。

意思#2 和意思#3 是你误读的意思。人们是不是谈论的/usr/bin是光盘上的数据集,由光盘切片/分区划分。他们也不是在谈论/usr/bin特定类型的文件系统驱动程序或特定的磁盘卷格式。

进一步阅读

  • 拉梅什·班吉亚 (2010)。 “文件系统”。 信息技术词典。拉克西米出版有限公司 ISBN 9789380298153。 224.
  • 文件系统。 “基本定义”。 The Open Group 基本规格。第 7 期 IEEE 1003.1。开放组。 2013年。
  • 平阮 (2004-08-16)。 “文件系统”。 Linux 词典。版本 0.16。 p。 616.

答案2

当然Linux使用目录的概念。目录的概念与 Windows 中的相同。

文件系统的概念也与 Windows 中使用的非常相似。 Windows 通常使用 NTFS 或 FAT - Linux 通常使用 ext2、ext3、ext4 等,这就是所有的区别。

不同的是,在 Linux 中,所有可用分区中的文件/目录都组织成一棵树。在 Windows 中,您使用字母 fe“a:”、“c:”来引用不同的分区,在 Linux 中,任何可用文件的完整路径以“/”(根目录)开头。例如,硬盘上有一个单独的分区,其中包含引导系统所需的文件:您使用适当的参数运行“mount”命令,并且该分区的内容在“/boot/”路径中可用。因此,“/boot”和“/home”路径可能引用不同分区上的数据,这些分区可能具有不同的文件系统。可能是造成了你的误会。

物理上位于同一分区上的目录始终“具有相同的文件系统”。当有人谈论某个目录的文件系统时,实际上是指该目录所在分区的文件系统。

(较小且可能不重要的更正:有时文件系统是虚拟的,并且没有任何相应的分区。例如“/proc”包含一些看起来非常像文件的东西,但这些“文件”是虚拟的,它们不驻留在任何硬盘驱动器,并包含有关正在运行的进程的信息,并且有一个特殊的“procfs”文件系统,它为该数据提供通常的类似文件的接口)

答案3

一个磁盘被分为一个或多个分区。对于 Windows,通常只有一个,可能还有隐藏在某处的恢复分区。分区是磁盘上逻辑上连续的区域,例如“扇区 1 到 10,000,000”。

在分区上可以构建文件系统。对于 Windows,这是 NTFS 或 FAT;对于 Linux,这是版本之一 ext或各种其他选项。

文件系统内部包含文件和目录。 Linux 有目录,我不知道你是怎么知道它没有目录的。

操作系统如何向用户呈现多个磁盘上的多个分区?在 Windows 上,这是通过以下方式完成的驱动器盘符:C:D:。在 Linux 上,没有驱动器号,一切都通过挂载点:在特定目录中,重新路由对不同文件系统的访问。(+) 通常,如果您插入 CD 或 USB 记忆棒,它会出现在/media或下的某处/mnt

/usr通常/usr/bin位于同一文件系统上,但不是必需的。/usr/bin当人们使用该短语时,他们可能指的是“恰好包含该目录的文件系统”。

(+) 您也可以使用 NTFS 连接点执行此操作,但人们很少这样做。直到他们用完驱动器号。

答案4

我们有时将它们称为filesystems,因为有时这些目录是挂载点。你问的唯一问题就这么多......

filesystem可以指两个不同的事物......或者实际上是同一事物的两个非常不同的方面:

  1. 用于组织存储介质上的数据的逻辑结构。
  2. 操作系统用于提供进程对数据的统一访问的方法。

文件和目录的概念是一个隐喻。对于计算机来说,只有数据,而所有媒体只不过是可以保存数据的设备。有些设备允许读取和写入数据(例如HDD),其他设备只允许读取数据(例如CD-ROM),甚至还有只允许写入数据的设备(例如打印机)。我们使用文件和目录隐喻来构造数据,以便我们可以访问小块数据,而不是同时访问所有数据。

我们放在存储介质上的文件系统(例如 ext4、xfs、fat)负责结构化部分。我们使用它们在数据块(文件)上放置标签,并拥有所有标签(目录)的一致结构化列表。结构化列表实际上是一棵树。最重要的是,一棵树只有一个起点,即它的根。维护这种结构并确保数据可访问并保持可访问性是一项艰巨的任务,这就是为什么文件系统不只有一种风格。

文件系统的另一个方面是,操作系统的工作是使存储设备上存储的数据可供所有程序访问。这是通过两件事来完成的:

  1. 操作系统恰好提供了一种(编程)接口来访问文件和目录并与之交互。对于程序/进程来说,存储设备上的文件系统是 ext2、xfs、fat 还是其他并不重要。程序/进程以统一的方式访问文件和目录。

  2. 操作系统将所有存储介质(即文件系统)组织在上位结构。程序通过这个上级结构访问文件和目录,不需要直接与存储设备交互。这样程序就不需要关心数据实际驻留在哪个设备上。这种上级结构通常被称为内核的“虚拟文件系统”。

将存储设备的文件系统添加到虚拟文件系统称为“挂载”文件系统。当 Linux 启动时,内核会创建虚拟文件系统 (VFS)。创建后它是空的,仅由其入口点(也称为其根)组成,已转录/。然后内核在 VFS 的根目录下挂载一个文件系统。它可以是虚拟磁盘,也可以是硬盘驱动器分区上的文件系统。由于它添加在 VFS 的根目录中,因此该分区通常称为根文件系统。

现在到了界限模糊的部分,我们看到存储设备上的文件系统和内核的 VFS 实际上是同一操作系统任务的两个方面:随着根文件系统的挂载,VFS 包含许多文件和目录,所有这些文件和目录存在于根分区上。然而,每个目录都可以成为“挂载点”。挂载点是 VFS 将入口点放置到存储设备上的文件系统的位置。这意味着每当我们在目录上挂载文件系统时,我们都会告诉 VFS,我们宁愿访问不同存储设备上的数据,而不是访问该目录中存储的数据。挂载点通常是空目录,这样我们就不会因为挂载其他文件系统而导致数据无法访问。

当您安装操作系统时,您可以选择是否要将所有数据放在一个文件系统(然后成为根文件系统)上,或者是否要将数据拆分到多个文件系统之间。后者要求您的操作系统安装所有单独的文件系统,以使所有数据均可访问。如何划分事物取决于如何设计系统。这就是为什么有时您从安装中得知的目录被称为文件系统的原因。

对于我们通常在家中使用的计算机,不再需要将安装拆分为多个文件系统。这样做仍然有充分的理由,但这超出了本文的范围。

为了保持这篇文章的其余部分简短:分区是在存储设备上构建数据的另一种方法。通过分区,我们可以从物理存储设备中划分出连续的存储空间,并将这些空间作为单独的存储设备提供给操作系统(在操作系统上可以将文件系统挂载到 VFS 中)。这样做的原因之一可能是人们只有一个硬盘驱动器,但想要使用许多不同的文件系统。根文件系统所在的分区通常称为根分区。

相关内容