典型的 Linux 系统上存在哪些挂载点?

Joh*_*ohn 33 linux filesystems partition mount

我有2个问题。

  1. 在 Linux 安装过程中,我们为 2 个挂载点指定内存空间 - root 和 swap。是否在用户未注意到的情况下创建了其他挂载点?
  2. 这句话是否正确:“只有在处理不同的分区时才会出现挂载。即,除非它是不同的分区,否则你不能挂载,比如说,/proc”?

Gil*_*il' 50

你的问题背后存在误解。

  1. 交换未安装。
  2. 挂载不限于分区。

分区

一个分区是中专门为特定目的磁盘空间slice¹。以下是分区的一些常见用途。

  • 一个文件系统,即文件组织成目录树,并存储在一个格式如ext2,ext3的,FFS,FAT,NTFS,...
  • 交换空间,即用于分页(和存储休眠图像)的磁盘空间。
  • 直接应用程序访问。一些数据库将它们的数据直接存储在分区上而不是文件系统上以获得一点性能。(无论如何,文件系统是一种数据库。)
  • 其他分区的容器。例如,一个PC 扩展分区,或者一个包含 BSD 分区的磁盘,或者一个LVM物理卷(最终包含本身可以被视为分区的逻辑卷),......

文件系统

文件系统以分层结构呈现信息。以下是一些常见的文件系统类型:

  • 磁盘支持的文件系统,例如 ext2、ext3、FFS、FAT、NTFS……
    • 备份不需要直接在磁盘分区上,如上所示。例如,这可以是LVM逻辑卷或循环挂载
  • 内存支持的文件系统,例如 Solaris 和 Linux 的tmpfs
  • 文件系统,从内核,如目前的信息procsysfs在Linux上。
  • 网络文件系统,例如NFSSamba
  • 应用程序支持的文件系统,其中FUSE拥有大量. 应用程序支持的文件系统几乎可以做任何事情:使 FTP 服务器显示为文件系统,提供文件系统的替代视图,其中文件名不区分大小写或转换为不同的编码,将存档内容显示为目录,......

安装

Unix 以单一层次结构呈现文件,通常称为“文件系统”(但在这个答案中,我不会在这个意义上使用“文件系统”这个词来避免混淆)。单个文件系统必须嫁接到该层次结构上才能访问它们。³

您可以通过挂载文件系统来访问它。挂载将您正在挂载的文件系统的根目录与文件层次结构中的现有目录相关联。具有这种关联的目录称为挂载点。

  • 例如,根文件系统在引导时(在内核启动任何进程之前)挂载到/目录中。
  • proc 文件系统,一些 unix 变体(如 Solaris 和 Linux)在其上挂载了有关进程的信息/proc,因此它/proc/42/environ指定/42/environ了 proc 文件系统上的文件,该文件系统(至少在 Linux 上)包含进程环境的只读视图42号。
  • 如果您有一个单独的文件系统,例如 for /home,则/home/john/myfile.txt指定其路径/john/myfile.txt来自主文件系统根目录的文件。

在 Linux 下,由于bind mounts,可以通过多个路径访问同一个文件系统。

一个典型的 Linux 文件系统有许多挂载的文件系统。(这是一个示例;不同​​的发行版、版本和设置将导致挂载不同的文件系统。)

  • /: 根文件系统,在内核加载第一个进程之前挂载。引导加载程序告诉内核将什么用作根文件系统(它通常是磁盘分区,但也可以是其他内容,例如 NFS 导出)。
  • /proc: proc文件系统,包含进程和内核信息。
  • /sys: sysfs文件系统,包含有关硬件设备的信息。
  • /dev: 一个内存文件系统,其中设备文件udev根据可用硬件自动创建。
  • /dev/pts:包含用于运行终端模拟器的设备文件的专用文件系统。
  • /dev/shm:系统标准库用于内部目的的内存文件系统。
  • 根据您运行的系统组件,您可能会看到其他特殊用途的文件系统,例如binfmt_misc(由外部可执行文件格式内核子系统使用)、fusectl(由FUSE 使用)、nfsd(由内核 NFS 服务器使用)、……
  • 中明确提及/etc/fstab(但未标记noauto)的任何文件系统都作为引导过程的一部分安装。
  • 在插入可移动设备(例如 USB 密钥)后由HAL(或等效功能)自动挂载的任何文件系统。
  • 使用该mount命令显式挂载的任何文件系统。

¹在这里非正式地说。
² Initrd 等超出了本答案的范围。
³这与 Windows 不同,Windows 对每个文件系统都有单独的层次结构,例如c:\\hostname\sharename.

  • +10 Gilles 你从哪里得到时间?我唯一的评论是我必须让人们在交换问题上有所懈怠,因为在不挂载时将我的交换分区列在`/etc/fstab` 中是非常令人困惑的。 (5认同)
  • @John:这根本不是一个愚蠢的问题,“文件系统”和“根”这两个词在这里有两种不同的含义:有单独的文件系统(每个都有自己的根),还有整个目录层次结构(有它的根,`/ `目录)。我已经改写了这部分答案,希望现在应该更清楚了。 (2认同)

Cal*_*leb 14

  1. 每个 linux 发行版都有自己的默认分区安排;其中一些使用几十个分区,一些只使用一个分区。3 和 4 是很常见的安排(/boot、/、swap 和 /home)。一些较旧的布局通常将 /var 放在单独的分区上,而极端系统会将 /var/* 和 /opt/* 中的所有内容都放在单独的分区上!我可以对您的问题做出的最好概括是,在 unix 世界中,没有用户注意到或没有能力更改它任何事情都不会完成
  2. 您可以挂载不是分区的东西。例如 /proc 通常不是一个分区,它是内核提供的一个伪文件系统,允许您像文件一样读取和写入有关正在运行的进程的数据。您还可以挂载文件(如 ISO),就好像它们是使用环回设备的驱动器一样,将挂载文件夹绑定到其他位置,并执行各种其他忍者技巧。