![为什么这些目录被称为文件系统?](https://linux22.com/image/811463/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%99%E4%BA%9B%E7%9B%AE%E5%BD%95%E8%A2%AB%E7%A7%B0%E4%B8%BA%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%EF%BC%9F.png)
/proc、/usr、/var、/home 被称为文件系统。
这是什么意思?我以为只有一个文件系统(例如 ext4)。
答案1
“文件系统”一词有多种含义。当人们谈论文件系统名称(如 ext4、UFS、NTFS 等)时,他们想到的是低级数据存储的组织(就介质上的块而言)。此类“文件系统”通常需要驱动程序来访问存储在使用该文件系统格式化的介质上的数据。在/proc
、或 等情况下/usr
,root file system
文件系统仅指目录结构。
从技术上讲,在 Linux 中,任何目录都可以成为文件系统的挂载点。这允许您根据存储信息的性质和安全要求为各个目录选择最佳的文件系统类型(ext4、ufs、xfs 等)。
我相信在您的情况下这些目录被称为“文件系统”,因为它们通常用作单个文件系统的挂载点。/proc
始终是伪文件系统的挂载点procfs
,它以分层文件结构提供有关进程和其他系统信息的信息。
有几个目录可以被视为文件系统:/dev
、/sys
和/tmp
。
答案2
/进程是一个非常特殊的文件夹,它不存储在磁盘上,而是存储在内存中,用于提供有关系统(CPU、RAM、设备……)的信息。因此,它使用一种称为 procfs 的特殊文件系统(不是 ext4)。您可以在 Wikipedia 上阅读更多内容:进程
反而,/usr,/var和/家通常(至少在台式计算机上)存储在同一个文件系统(例如 ext4)中,并且通常位于同一个磁盘上:它们是常规文件夹,具有特定含义。在 Wikipedia 上,您可以找到有关文件系统层次标准。
它们并不是真正的“文件系统”,但本段有助于解释这种命名用法(来自FHS 2.3 参考):
要启动系统,根分区上必须有足够的空间来挂载其他文件系统。这包括实用程序、配置、引导加载程序信息和其他必要的启动数据。/usr、/opt 和 /var 的设计使其可以位于其他分区或文件系统上。
答案3
您可以将文件系统视为允许在数据存储设备中创建文件的结构。例如,该设备是硬盘分区、RAM 或 USB 棒。文件系统类型是文件系统中用于存储数据的格式,例如 ext4、vfat 或许多其他格式。文件系统(设备)可以作为目录(文件夹)挂载,也称为挂载点。
要运行操作系统,您必须有一个根文件系统,操作系统就安装在其中。它在启动期间被挂载为 /(根),所有其他文件系统都挂载在其下。从您给出的示例来看,/usr 和 /var 可以是根文件系统的一部分,也可以是单独的文件系统(与 / 相同或不同的驱动器中的不同分区)。如果是单独的文件系统,它们甚至可以是与 / 不同的文件系统类型(我认为!)。另一方面,/proc 是 RAM 中的文件系统(也称为 RAM 磁盘),具有自己的类型,名称相同,为 proc。
终端上的 mount 命令为您提供有关所有已安装文件系统的信息:设备、安装点、类型。例如:
user@box:~$ mount
/dev/sda7 on /home type ext3 (rw,relatime,errors=remount-ro,commit=0)
proc on /proc type proc (rw)
这意味着我将分区 sda7 挂载为 /home(包含我所有宝贵的数据!),并将其格式化为 ext3 类型;设备 proc 挂载在 /proc 上,类型为 proc。还给出了每个文件系统的权限(rw 等)。
最后一点:文件系统通常通过其挂载点来引用。也就是说,在上面的例子中,我可以说设备 sda7 是我的 /home 文件系统。这并不完全正确,尽管对大多数人来说都很清楚:这意味着文件系统旨在使用挂载点 /home 进行挂载。但没有什么可以阻止我将文件系统挂载在挂载点 /work、/hotel 或 /sunny_beach 下的 sda7 中。实际上,也可以在 /dev/sda7(挂载或卸载)下直接访问原始数据,而无需了解底层文件系统。这对于在文件系统损坏的情况下恢复数据很有用,此时文件系统无法再挂载,但设备仍然可读。然而,这种直接访问可能会造成灾难性的后果,应该只在特殊情况下使用。