文件系统vs分区vs目录


29

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

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

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

我们为什么将这些称为filesystems

如果它们每个都是一个分区,那会使我感到困惑,因为据我所知,/usr并且/usr/bin往往位于同一个分区中,但是我看到人们同时引用/usr filesystem/usr/bin filesystem

如果filesystem这里等于Window的directory,对我来说还不清楚,因为文件系统显然不仅仅是目录。而且,据我所知,Linux没有directory概念。都是文件。


我从未见过“ / root文件系统”的实例。安装在“ /”上的文件系统是“根文件系统”。对于各种“ xx”值,现代Linux发行版上的其他一些可能的挂载点是“ / boot”,“ / home”和“ / mnt / xx”或“ / media / xx”。内核2.x +(?)发行版将具有“ / proc”和“ / sys”,Systemd的挂载点“ / var / run / nnnn”用于各种数字UID nnnn。较早的Unix安装可能会通过NFS挂载“ / usr”,但这在个人Linux发行版中不太可能。“ / bin”和“ / usr / bin”通常不是单独的安装点。
大卫,2015年

有一个/ root,不是吗?您是说它永远不会停留在单独的文件系统中吗?
肯尼

对。“ / root”是用户“ root”的标准主目录,但通常只是根文件系统上的另一个目录。
大卫

这个话题已经在Ask NS 上进行了广泛的讨论,IMNSHO是很愚蠢的,因为AFAIK的概念与其他形式的Unix或Linux在Ubuntu上没有什么不同。例如,什么是“装载”?几天前才被问到。
斯科特

这些问题让我印象深刻。由于知识不多,您此时可能已经了解了很多,并且您错过了“ / root filesystem”可能是指分区所在的文件系统的结论,/root考虑到情况。
erikbwork'4

Answers:


13

正如我在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为特定类型的文件系统驱动程序或特定的磁盘卷格式。

进一步阅读

  • Ramesh Bangia(2010)。“文件系统”。 信息技术词典。Laxmi Publications,Ltd. ISBN 9789380298153。224。
  • 文件系统。“基本定义”。 开放组基本规范。第7版IEEE 1003.1。开放小组。2013。
  • 平阮(2004-08-16)。“文件系统”。 Linux词典。版本0.16。p。616。

7

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

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

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

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

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


您提到了“目录的文件系统”,它是否级联到其所有子目录。一个目录及其子目录是否可能具有不同的文件系统?例如/ A/ A / B,与/ B是安装到与它自己的文件系统F2另一分区一个具有文件系统F1?
肯尼

至于位于同一分区上的目录是否实际上是同一文件系统的一部分,对于某些非常现代的文件系统(例如ZFS或btrfs)可能会有些模糊。您可以拥有一个ZFS卷,其中多个文件系统共享它,并具有它们自己完全不同的挂载点。
Charles Duffy 2015年

@Kenny是的,你是对的。实时示例:我将光盘插入CD驱动器。我的Linux将CD挂载在“ / mount / cdrom”上。“ / mount”目录(以及我在其中创建的所有文件)位于硬盘上。但是“ / mount / cdrom”内容已经在CD中了。
lesnik

6

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


如果我错了,请纠正我:在Linux上,可以将1个物理磁盘划分为多个分区,每个分区都有自己的文件系统吗?类似于Windows上的硬盘包含多个分区的方式,一个分区可以是FAT,另一个分区可以是NTFS。
肯尼2015年

1
是的,您是对的:但这不是相似的,它是完全相同的基础机制。双启动计算机可能在同一磁盘上具有NTFS和ext3分区,并且每个操作系统的磁盘管理器都可以看到同一组分区。只是Windows无法看到挂载ext3分区来查看文件。
pjc50 2015年

3

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

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

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

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

mount /dev/sda7 /home

这告诉系统分区上的文件系统/dev/sda7安装在目录上/home。因此,现在该文件系统中的所有内容都被视为在之下/home

您可以通过运行查看当前挂载的内容df


3

我们有时将其称为filesystems,因为有时这些目录是装入点。您问的唯一一个问题就这么多了...

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

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

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

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

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

  1. 该操作系统恰好提供了一个(编程)界面来访问文件和目录并与之交互。对于程序/进程,存储设备上的文件系统是ext2,xfs,fat还是其他文件都没有关系。程序/进程以统一的方式访问文件和目录。

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

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

现在这是线条模糊的部分,我们看到存储设备上的文件系统和内核的VFS实际上是同一OS任务的两个方面:在安装根文件系统后,VFS包含许多文件和目录,所有这些文件和目录存在于根分区上。但是,每个目录都可以成为“挂载点”。挂载点是VFS将入口点放置到存储设备上文件系统的位置。这意味着,每当我们在目录上安装文件系统时,我们都会告诉VFS,与其访问存储在该目录中的数据,不如访问另一个存储设备上的数据。挂载点通常是空目录,因此,通过在其上挂载其他文件系统,我们不会使数据不可访问。

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

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

为了使本发布的其余内容简短:分区是在存储设备上构造数据的另一种方法。通过分区,人们可以从物理存储设备中切出连续的存储空间,并将它们作为单独的存储设备提供给OS(在OS上可以将文件系统安装到VFS上)。这样做的一个原因可能是一个人只有一个硬盘驱动器,但要使用许多不同的文件系统。根文件系统所在的分区通常称为根分区。


1

您正在做一些混乱。Filesystem表示一种机制,通过该机制可以在存储设备或大容量存储器(如硬盘驱动器或CD-ROM)上,并且在某些情况下,还可以在RAM上定位和组织文件。

甚至Windows都使用诸如NTFS或或更早的文件系统FAT

您的示例显示了linux和unix系统的一种常见做法,即在名为mount point的目录上安装由不同文件系统组成的自己的系统。在出现问题的情况下,这可以将损坏限制在一个或多个但不是所有文件系统上。

因此,FS不等同于目录,在linux中也有目录,这是一种特殊的文件

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.