文件系统 vs 分区 vs 目录

Ken*_*nny 33 filesystems partition directory terminology

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

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

    /boot filesystem
    /usr/bin filesystem
    /root filesystem
    /bin filesystem
Run Code Online (Sandbox Code Playgroud)

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

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

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

Jde*_*eBP 17

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

这里的问题是“文件系统”这个词。在 POSIX/Unix/Linux 世界中,它被用来表示几个不同的东西。

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

当您看到“/usr/bin文件系统”时,您看到的含义是 #1 。它是一个以目录为根的文件系统树/usr/bin。是的,Linux确实有目录的概念。

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

进一步阅读

  • 拉梅什·班吉亚 (2010)。“文件系统”。 信息技术词典。Laxmi Publications, Ltd. ISBN 9789380298153. p. 224.
  • 文件系统。“基本定义”。 开放组基本规范。第 7 期 IEEE 1003.1。开放组。2013 年。
  • 平阮(2004-08-16)。“文件系统”。 Linux 词典。版本 0.16。页。616.


les*_*nik 10

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

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

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

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

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


pjc*_*c50 8

一个磁盘被分成一个或多个分区。对于 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 连接点执行此操作,但人们很少这样做。直到它们用完驱动器号。


Tom*_*ych 5

可以将整个 Linux 系统保存在一个分区上,而所有子目录都在一个文件系统上。

也可以将其分布在多个分区上,某些目录子树位于不同的文件系统上。例如,它的共同投入/home/tmp/usr,并/var在不同的文件系统。为了解决您的一个问题,有时/usr/bin也会在它自己的文件系统上。

这种方案有其优点。例如,如果/var填满了大量电子邮件,则系统的其余部分不受影响。同样,如果一个文件系统由于崩溃或其他原因损坏,其他文件系统仍然完好,并且更容易恢复系统。

当系统启动时,起初只有根文件系统可用。保存在那里的程序在引导过程中运行。其中一个程序mount使用文件/etc/fstab系统表中的数据运行多次 。举个例子:原本 /home只是根文件系统中的一个普通目录。然后我们以 root 身份运行这个命令:

mount /dev/sda7 /home
Run Code Online (Sandbox Code Playgroud)

这告诉系统分区上的文件系统/dev/sda7 应该安装在目录上/home。所以现在,该文件系统中的所有内容都被认为是在/home.

您可以通过运行查看当前安装的内容df