mount man部分中文

发布时间 2023-07-20 16:33:46作者: cliter

Unix 系统中可访问的所有文件都排列在一棵大树中,即文件层次结构,根位于 / 。 这些文件可以分布在多个设备上。 mount 命令用于将某个设备上找到的文件系统附加到大文件树。 相反,umount(8) 命令将再次分离它。 文件系统用于控制数据如何存储在设备上或通过网络或其他服务以虚拟方式提供。

The standard form of the mount command is:

mount -t type device dir

这告诉内核将设备上找到的 device(类型为 type )附加到目录 dir 处。 选项 -t 类型是可选的。 mount 命令通常能够检测文件系统。 默认情况下,安装文件系统需要 root 权限。 有关更多详细信息,请参阅下面的“Non-superuser mounts”部分。 dir 之前的内容(如果有)以及所有者和模式将变得不可见,并且只要该文件系统保持挂载状态,路径名 dir 就指设备上文件系统的根目录。

If only the directory or the device is given, for example:

mount /dir

然后 mount 在 /etc/fstab 文件中查找挂载点(如果没有找到,则查找设备)。 可以使用 --target 或 --source 选项来避免对给定参数的不明确解释。例如:

mount --target /mountpoint

相同的文件系统可以多次挂载,并且在某些情况下(例如网络文件系统),相同的文件系统可以多次挂载在同一挂载点上。 mount 命令不实施任何策略来控制此行为。 所有行为均由内核控制,并且通常特定于文件系统驱动程序。 例外是 --all,在这种情况下,已安装的文件系统将被忽略(有关更多详细信息,请参阅下面的 --all)。

表示设备和文件系统(Indicating the device and filesystem)

大多数设备由(块特殊设备的)文件名表示,例如 /dev/sda1,但还有其他可能性。 例如,在 NFS 安装的情况下,设备可能类似于 knuth.cwi.nl:/dir。

磁盘分区的设备名不稳定;硬件重新配置以及添加或删除设备可能会导致名称更改。 这就是为什么强烈建议使用 filesystem 或 partition identifiers(如 UUID 或 LABEL)的原因。现支持如下标识符:

  • LABEL=label$~~~~~~~~ $:Human readable filesystem identifier. see also -L
  • UUID=uuid$~~~~~~~~~~ $:Filesystem universally unique identifier. see also -U
  • PARTLABEL=label\(~\):Human readable partition identifier.
  • PARTUUID=uuid$~~~ $:Partition universally unique identifier.
  • ID=id\(~~~~~~~~~~~~~~~~~~~\):Hardware block device ID as generated by udevd.

命令 lsblk --fs 提供了可用块设备上的文件系统、LABEL 和 UUID 的概述。 命令 blkid -p <device> 提供有关指定设备上的文件系统的详细信息。

不要忘记,无法保证 UUID 和标签确实是唯一的,尤其是在您移动、共享或复制设备时。 使用 lsblk -o +UUID,PARTUUID 验证 UUID 在您的系统中是否确实是唯一的。

建议的设置是在 /etc/fstab 文件中使用 Tags(例如 UUID=uuid)而不是 /dev/disk/by-{label,uuid,id,partuuid,partlabel} udev 符号链接。 Tags 更具可读性、稳定性和便携性。 mount(8) 命令内部使用 udev 符号链接,因此在 /etc/fstab 中使用符号链接与 Tags 相比没有优势。 有关更多详细信息,请参阅 libblkid(3)。

proc 文件系统不与实际设备相关,并且在安装它时,可以使用任意关键字(例如 proc)来代替设备名。(自定义为 none 就不好:来自 mount 的错误消息“none已经安装”会令人困惑。)

The files /etc/fstab, /etc/mtab and /proc/mounts

文件 /etc/fstab(请参阅 fstab(5))描述了哪些设备通常安装在何处、使用哪些选项。 fstab(5) 文件的默认位置可以使用选项 --fstab path 覆盖(有关更多详细信息,请参阅下文)。

The command

mount -a [-t type] [-O optlist]

(通常在 bootstrap 中给出)导致 fstab 中提到的所有文件系统(具有正确的类型和/或具有或不具有正确的选项)按照指示安装,除了那些行包含 noauto 关键字的文件系统。 添加 -F 选项会 make mount fork,所以会并行(parallel)挂载文件系统。

当挂载fstab或mtab中提到的文件系统时,只需在命令行上指定设备或挂载点就足够了。

程序 mount 和 umount(8) 传统上在文件 /etc/mtab 中维护当前已挂载的文件系统的列表。 默认情况下,在编译时完全禁用对常规经典 /etc/mtab 的支持,因为在当前的 Linux 系统上,将 /etc/mtab 设为 /proc/mounts 的符号链接会更好。 用户空间中维护的常规 mtab 文件无法可靠地与命名空间、容器和其他高级 Linux 功能一起使用。 如果启用常规 mtab 支持,则可以使用该文件以及符号链接。

如果没有给 mount 任何参数,则会打印已安装文件系统的列表。

如果你想覆盖 /etc/fstab 中的 mount 选项, you have to use the -o option:

mount device|dir -o options

and then 命令行中的挂载选项将附加到 /etc/fstab 中的选项列表中。 可以使用 --options-mode 命令行选项更改此默认行为。 通常的行为是,如果存在冲突,则最后一个选项获胜。

如果同时指定了 device(或 LABEL、UUID、ID、PARTUUID 或 PARTLABEL)和 dir,则挂载程序不会读取 /etc/fstab 文件。For example, to mount device foo at /dir:

mount /dev/foo /dir

可以使用 --options-source-force 命令行选项更改此默认行为,以始终从 fstab 读取配置。 对于非 root 用户,mount 始终读取 fstab 配置。

Non-superuser mounts

通常,只有超级用户才能挂载文件系统。 但是,当 fstab 在一行中包含用户选项时,任何人都可以挂载相应的文件系统。

Bind mount operation

Remount part of the file hierarchy somewhere else. The call is:

mount --bind olddir newdir

or by using this fstab entry:

/olddir /newdir none bind

调用此命令后,可以在两个地方访问相同的内容。

重要的是要理解“bind”不会在内核 VFS 中创建任何第二类或特殊节点。 “bind”只是附加文件系统的另一个操作。 没有任何地方存储文件系统已通过“bind”操作附加的信息。 olddir和newdir是独立的,并且olddir可以被卸载。

The move operation

Move a mounted tree to another place (atomically 原子地). The call is:

mount --move olddir newdir

Shared subtree operations

从 Linux 2.6.15 开始,可以将挂载及其子挂载标记为shared、private、slave或unbindable。

  • shared mount:提供了创建该挂载的镜像的能力,以便任何镜像内的挂载和卸载都会传播到另一个镜像。
  • private mount:从其主挂载接收传播,但反之则不行。
  • slave mount:没有传播能力。
  • unbindable mount:无法通过 bind 克隆。

详细的语义记录在内核源代码树中的 Documentation/filesystems/sharedsubtree.txt 文件中; 另请参见 mount_namespaces(7)。