命令行手册

Man » mount 手册在线 - mount 手册页的详细在线文档

🌍
mount - 挂载文件系统

概要

mount [-h|-V]

mount [-l] [-t fstype]

mount -a [-fFnrsvw] [-t fstype] [-O optlist]

mount [-fnrsvw] [-o options] device|mountpoint

mount [-fnrsvw] [-t fstype] [-o options] device mountpoint

mount --bind|--rbind|--move olddir newdir

mount --make-[shared|slave|private|unbindable|rshared|rslave|rprivate|runbindable] mountpoint

描述

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

mount 命令的标准形式为:

mount -t type device dir

这告诉内核将设备(其类型为 type)上的文件系统附加到目录 dir。-t type 选项是可选的。mount 命令通常能够检测文件系统。默认情况下,需要 root 权限才能挂载文件系统。有关更多详细信息,请参见下面的“非超级用户挂载”部分。dir 的先前内容(如果有)以及所有者和模式将不可见,并且只要此文件系统保持挂载状态,路径名 dir 就会引用设备上文件系统的根目录。

如果仅给出目录或设备,例如:

mount /dir

那么 mount 将在 /etc/fstab 文件中查找挂载点(如果未找到,则查找设备)。可以使用 --target 或 --source 选项来避免对给定参数进行模糊解释。例如:

mount --target /mountpoint

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

列出挂载

列表模式仅用于向后兼容。

为了获得更强大和可自定义的输出,请使用 findmnt(8),尤其是在您的脚本中。请注意,挂载点名称中的控制字符将被替换为“?”。

以下命令列出所有已挂载的文件系统(类型为 type):

mount [-l] [-t type]

-l 选项会在此列表中添加标签。请参见下文。


指示设备和文件系统

大多数设备都通过文件名(块特殊设备)来指示,例如 /dev/sda1,但也有其他可能性。例如,对于 NFS 挂载,设备可能看起来像 knuth.cwi.nl:/dir。

磁盘分区的设备名称是不稳定的;硬件重新配置以及添加或删除设备可能会导致名称发生变化。这就是强烈建议使用文件系统或分区标识符(如 UUID 或 LABEL)的原因。当前支持的标识符(标签):

LABEL=label

可读的文件系统标识符。另请参见 -L。

UUID=uuid

文件系统通用唯一标识符。UUID 的格式通常是一系列用连字符分隔的十六进制数字。另请参见 -U。

请注意,mount 命令将 UUID 作为字符串使用。命令行或 fstab(5) 中的 UUID 不会转换为内部二进制表示形式。UUID 的字符串表示形式应基于小写字符。

PARTLABEL=label

可读的分区标识符。此标识符与文件系统无关,并且不会通过 mkfs 或 mkswap 操作发生更改。例如,它受 GUID 分区表 (GPT) 的支持。

PARTUUID=uuid

分区通用唯一标识符。此标识符与文件系统无关,并且不会通过 mkfs 或 mkswap 操作发生更改。例如,它受 GUID 分区表 (GPT) 的支持。

ID=id

硬件块设备 ID,由 udevd 生成。此标识符通常基于 WWN(唯一存储标识符),并由硬件制造商分配。有关更多详细信息,请参阅 ls /dev/disk/by-id,此目录和正在运行的 udevd 是必需的。不建议将此标识符用于通用用途,因为该标识符不是严格定义的,并且取决于 udev、udev 规则和硬件。

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

请记住,不能保证 UUID 和标签真正是唯一的,尤其是在移动、共享或复制设备时。使用 lsblk -o +UUID,PARTUUID 验证系统中的 UUID 是否真正唯一。

推荐的设置是使用标签(例如 UUID=uuid),而不是在 /etc/fstab 文件中使用 /dev/disk/by-{label,uuid,id,partuuid,partlabel} udev 符号链接。标签更易于阅读、更可靠且更具可移植性。mount(8) 命令内部使用 udev 符号链接,因此在 /etc/fstab 中使用符号链接与使用标签相比没有优势。有关更多详细信息,请参阅 libblkid(3)。

proc 文件系统不与特殊设备相关联,并且在挂载它时,可以使用任意关键字(例如,proc)代替设备规范。(通常的选择“none”不太好:mount 命令中的“none 已经挂载”错误消息可能会产生误导。)

文件 /etc/fstab、/etc/mtab 和 /proc/mounts

文件 /etc/fstab(参见 fstab(5)),可能包含描述通常挂载哪些设备到哪些位置,以及使用哪些选项的行。可以使用 --fstab 路径命令行选项来覆盖 fstab(5) 文件的默认位置(有关更多详细信息,请参见下文)。


命令

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

(通常在启动脚本中使用)会导致 fstab 中提到的所有文件系统(具有适当的类型和/或具有或不具有适当的选项)按照指示进行挂载,除了那些在其行中包含 `noauto` 关键字的文件系统。添加 `-F` 选项会使 `mount` 分叉,以便并行挂载这些文件系统。

在挂载 fstab 或 mtab 中提到的文件系统时,只需在命令行中指定设备或挂载点即可。

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

如果 mount 命令没有给出任何参数,则会打印已挂载的文件系统列表。

如果想要覆盖 /etc/fstab 中的挂载选项,则必须使用 -o 选项:

mount device|dir -o options

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

如果同时指定了设备(或 LABEL、UUID、ID、PARTUUID 或 PARTLABEL)和目录,mount 程序将不会读取 /etc/fstab 文件。例如,要将设备 foo 挂载到 /dir:

mount /dev/foo /dir

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

非超级用户挂载

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

因此,给定以下行:

/dev/cdrom /cd iso9660 ro,user,noauto,unhide

任何用户都可以使用以下命令挂载插入的 CDROM 上的 iso9660 文件系统:

mount /cd

请注意,mount 对于非 root 用户非常严格,并且在解析 fstab 或执行辅助程序之前,会验证命令行中指定的所有路径。强烈建议使用有效的挂载点来指定文件系统,否则 mount 可能会失败。例如,在命令行中使用 NFS 或 CIFS 源不是一个好主意。

从 util-linux 2.35 开始,当根据 libmount 的内部安全规则,用户权限不足时,mount 不会退出。而是会放弃 suid 权限,并作为普通非 root 用户继续执行。此行为支持不需要 root 权限的用例(例如,fuse 文件系统、用户命名空间等)。


有关更多详细信息,请参阅 fstab(5)。只有执行文件系统挂载的用户才能再次卸载它。如果任何用户都应能够卸载它,则在 fstab 行中使用 users 而不是 user。 owner 选项类似于 user 选项,但限制是用户必须是特殊文件的所有者。这对于 /dev/fd 很有用,如果登录脚本使控制台用户成为此设备的拥有者。group 选项类似,但限制是用户必须是特殊文件组的成员。

如果未指定用户名,则接受 user 挂载选项。如果以 user=someone 的格式使用,则该选项将被静默忽略,并且仅对外部挂载助手(/sbin/mount.)可见,以与某些网络文件系统兼容。

绑定挂载操作

将文件层次结构的某一部分挂载到其他位置。调用方式为:

mount --bind olddir newdir

或者使用以下 fstab 条目:

/olddir /newdir none bind

在此调用之后,可以在两个位置访问相同的内容。

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

还可以重新挂载单个文件(在单个文件上)。也可以使用绑定挂载从普通目录创建挂载点,例如:

mount --bind foo foo

绑定挂载调用仅附加(部分)单个文件系统,不可能附加子挂载点。可以使用以下方法将包含子挂载点的整个文件层次结构附加到第二个位置:

mount --rbind olddir newdir

请注意,内核维护的文件系统挂载选项将与原始挂载点上的选项相同。用户空间挂载选项(例如,_netdev)不会被 mount 复制,并且必须在 mount 命令中显式指定这些选项。

从 util-linux 2.27 开始,mount 允许通过传递相应的选项以及 --bind 来更改挂载选项。例如:

mount -o bind,ro foo foo

此功能不受 Linux 内核支持;它在用户空间通过额外的 mount(2) 重新挂载系统调用来实现。此解决方案不是原子的。

创建只读绑定挂载的替代(经典)方法是使用重新挂载操作,例如:

mount --bind olddir newdir

mount -o remount,bind,ro olddir newdir

请注意,只读绑定将创建一个只读挂载点(VFS 条目),但原始文件系统 superblock 仍然是可写的,这意味着 olddir 将是可写的,但 newdir 将是只读的。

也可以通过“remount,bind”操作更改 nosuid、nodev、noexec、noatime、nodiratime、relatime 和 nosymfollow VFS 条目标志。其他标志(例如,特定于文件系统的标志)将被静默忽略。经典的 mount(2) 系统调用不允许递归地更改挂载选项(例如,使用 -o rbind,ro)。递归语义可以通过新的 mount_setattr(2) 内核系统调用来实现,并且从 util-linux v2.39 的 libmount 开始,它通过新的实验“recursive”选项参数支持(例如,-o rbind,ro=recursive)。有关更多详细信息,请参见 FILESYSTEM-INDEPENDENT MOUNT OPTIONS 部分。


自从 util-linux 2.31 之后,mount 命令在重新挂载操作时(如果命令行中指定了 -o remount),会忽略 /etc/fstab 中的 bind 标志。这是为了通过命令行完全控制重新挂载时的挂载选项。在之前的版本中,bind 标志始终会生效,并且无法通过与 bind 语义交互来重新定义挂载选项。这种挂载行为不会影响 /etc/fstab 文件中指定了 "remount,bind" 的情况。

自从 util-linux 2.39 之后,mount 命令可以使用新的内核挂载 API(如果可用)。这个新的内核接口提供了一种更精确的方式来处理挂载点属性。例如,-o bind,rw 操作会创建一个可读写的节点,即使原始节点是只读的。在旧的经典 mount(2) 系统调用中,这是不可能的,因为只读 VFS 标志会从原始节点继承。

移动操作

以原子方式将已挂载的树移动到另一个位置。调用方式如下:

mount --move olddir newdir

这将导致先前位于 olddir 下的内容现在可以通过 newdir 访问。文件的物理位置不会改变。请注意,olddir 必须是一个挂载点。

还请注意,移动位于共享挂载点下的挂载点是无效且不受支持的。使用 findmnt -o TARGET,PROPAGATION 查看当前的传播标志。

共享子树操作

自从 Linux 2.6.15 之后,可以将挂载点及其子挂载点标记为共享、私有、从属或不可克隆。共享挂载点提供了一种创建该挂载点的镜像的能力,以便在任何镜像中的挂载和卸载操作都会传播到其他镜像。从属挂载点会接收来自其主挂载点的传播,但反之则不会。私有挂载点不具有传播能力。不可克隆挂载点是一种私有挂载点,它不能通过 bind 操作进行克隆。详细的语义记录在内核源代码树中的 Documentation/filesystems/sharedsubtree.txt 文件中;另请参阅 mount_namespaces(7)。

支持的操作如下:

mount --make-shared mountpoint
mount --make-slave mountpoint
mount --make-private mountpoint
mount --make-unbindable mountpoint

以下命令允许递归地更改给定挂载点下所有挂载点的类型。

mount --make-rshared mountpoint
mount --make-rslave mountpoint
mount --make-rprivate mountpoint
mount --make-runbindable mountpoint

mount 命令在执行 `--make-*` 操作时不会读取 `fstab(5)`。所有必要的信息都必须在命令行中指定。

请注意,Linux 内核不允许使用单个 mount(2) 系统调用来更改多个传播标志,并且这些标志不能与其它挂载选项和操作混合使用。

从 util-linux 2.23 开始,mount 命令可以用于通过一个 mount(8) 调用来执行更多的传播(拓扑)更改,并且可以将其与其他挂载操作一起执行。传播标志通过在之前的挂载操作成功后使用额外的 mount(2) 系统调用来应用。请注意,这种用法不是原子的。可以在 fstab(5) 中将传播标志指定为挂载选项(privateslavesharedunbindablerprivaterslaversharedrunbindable)。

例如:

mount --make-private --make-unbindable /dev/sda1 /foo

与以下命令相同:

mount /dev/sda1 /foo
mount --make-private /foo
mount --make-unbindable /foo

命令行选项

^ ount 命令的一次调用的所有挂载选项是通过首先从 fstab 表中提取文件系统的挂载选项、然后应用通过 -o 参数指定的任何选项,最后应用存在的 -r-w 选项来确定的。

^ ount 命令不会将所有命令行选项传递给 /sbin/mount.suffix 挂载辅助程序。mount 和挂载辅助程序之间的接口在下面的“外部辅助程序”部分中描述。

^ ount 命令可用的命令行选项如下:

-a, --all

挂载 fstab 中提到的所有文件系统(给定类型),(除了其行包含 noauto 关键字的文件系统)。文件系统按照它们在 fstab 中的顺序进行挂载。mount 命令比较文件系统源、目标(以及 bind 挂载或 btrfs 的 fs root)以检测已挂载的文件系统。内核中已挂载文件系统的表在 mount --all 期间被缓存。这意味着所有重复的 fstab 条目都将被挂载。

正确的功能取决于 /proc(用于检测已挂载的文件系统)和 /sys(用于评估文件系统标签,如 UUID=LABEL=)。强烈建议在执行 mount -a 之前挂载 /proc/sys 文件系统,或者将 /proc/sys 放在 fstab 的开头。

^ -all 选项也可以用于重新挂载操作。在这种情况下,所有过滤器(-t-O)都将应用于已挂载的文件系统表。

从版本 2.35 开始,可以使用命令行选项 -o 来更改 fstab 中的挂载选项(请参阅 --options-mode)。

请注意,使用 mount -a 来检查 fstab 是一个坏的做法。推荐的解决方案是 findmnt --verify

-B, --bind

将子树重新挂载到其他位置(以便其内容在两个位置都可用)。请参阅上面的“Bind 挂载操作”。

-c, --no-canonicalize

在挂载过程中,不要规范化任何路径或标签。mount 命令会自动规范化所有路径(来自命令行或 fstab)。此选项可以与 -f 标志一起使用,用于已经规范化的路径。此选项旨在用于调用 mount -i 的挂载辅助程序。强烈建议不要将此命令行选项用于常规挂载操作。请参阅 X-mount.nocanonicalize 挂载选项。

-F, --fork

(与 -a 选项一起使用。)为每个设备启动一个新的 mount 进程。这将并行地对不同设备或不同 NFS 服务器进行挂载。其优点是速度更快;此外,NFS 超时也会并行进行。缺点是挂载操作的顺序未定义。因此,如果您想同时挂载 /usr 和 /usr/spool,则不能使用此选项。

-f, --fake

执行所有操作,但跳过与挂载相关的系统调用。--fake 选项最初的设计目的是在不实际挂载的情况下,将条目写入 /etc/mtab。

/etc/mtab 不再由用户空间维护,并且从 2.39 版本开始,挂载操作可能是一个复杂的、具有依赖关系的操作链。--fake 选项会强制 libmount 跳过所有挂载源准备、挂载选项分析和实际挂载过程。

fake 和非 fake 执行之间的差异很大。这就是为什么 --fake 选项对当前的 mount(8) 实现来说意义不大,并且主要为了向后兼容而保留。

-i, --internal-only

即使 /sbin/mount.filesystem 辅助程序存在,也不调用它。

-L, --label label

挂载具有指定标签的分区。

-l, --show-labels

在 mount 输出中添加标签。为了使此功能正常工作,mount 必须具有读取磁盘设备的权限(例如,必须是 set-user-ID root)。可以使用 e2label(8) 实用程序为 ext2、ext3 或 ext4 设置标签,也可以使用 xfs_admin(8) 为 XFS 设置标签,或使用 reiserfstune(8) 为 reiserfs 设置标签。

-M, --move

将子树移动到其他位置。请参见上面的“移动操作”部分。

-m, --mkdir[=mode]

如果目标目录(挂载点)不存在,则允许创建它。它是 "-o X-mount.mkdir[=mode]" 的别名,默认模式为 0755。有关更多详细信息,请参见下面的 X-mount.mkdir。

--map-groups, --map-users inner:_outer_:_count_

将指定的用户/组映射添加到 X-mount.idmap 映射中。可以多次提供这些选项,以构建完整的用户和组映射。有关更多详细信息,请参见下面的 X-mount.idmap。

--map-users /proc/PID/ns/user

为 id 映射挂载使用指定的用户命名空间进行用户和组映射。这是 "-o X-mount.idmap=/proc/PID/ns/user" 的别名,不能同时使用两次,也不能与上述 inner:_outer_:_count_ 格式选项一起使用。有关更多详细信息,请参见下面的 X-mount.idmap。

-n, --no-mtab

在不写入 /etc/mtab 的情况下进行挂载。例如,当 /etc 位于只读文件系统时,这是必需的。


-N, --namespace ns
在指定的挂载命名空间 ns 中执行挂载操作。ns 可以是运行在该命名空间中的进程的 PID,也可以是表示该命名空间的特殊文件。

挂载命令在读取 /etc/fstab、写入 /etc/mtab(或写入 /run/mount)以及调用 mount(2) 时,会切换到挂载命名空间,否则它将在原始挂载命名空间中运行。这意味着目标命名空间不需要包含执行 mount(2) 调用所需的任何库或其他依赖项。

有关更多信息,请参阅 mount_namespaces(7)。

-O, --test-opts opts
限制 -a 选项适用的文件系统集合。在这方面,它类似于 -t 选项,但 -O 选项在没有 -a 选项的情况下是无用的。例如,命令:

mount -a -O no_netdev

挂载所有文件系统,但那些在 /etc/fstab 文件的 options 字段中指定了 netdev 选项的文件系统除外。

它与 -t 选项的不同之处在于,每个选项都必须完全匹配;在选项的开头添加“no”不会否定其余部分。

-t 和 -O 选项的组合效果是累积的;也就是说,命令:

mount -a -t ext2 -O _netdev

挂载所有具有 _netdev 选项的 ext2 文件系统,而不是挂载所有是 ext2 或具有 _netdev 选项的文件系统。

-o, --options opts
使用指定的挂载选项。opts 参数是一个逗号分隔的列表。例如:

mount LABEL=mydisk -o noatime,nodev,nosuid

请注意,选项的顺序很重要,因为如果存在冲突的选项,则最后一个选项将生效。来自命令行中的选项默认情况下也会覆盖 fstab 中的选项。

有关更多详细信息,请参阅 FILESYSTEM-INDEPENDENT MOUNT OPTIONS 和 FILESYSTEM-SPECIFIC MOUNT OPTIONS 部分。

--onlyonce
强制 mount 命令检查文件系统是否已挂载。这是 --all 的默认行为;否则,它取决于内核文件系统驱动程序。某些文件系统可以在同一挂载点上挂载多次(例如,tmpfs)。

--options-mode mode
控制如何组合 fstab/mtab 中的选项和命令行中的选项。mode 可以是 ignore、append、prepend 或 replace。例如,append 表示将 fstab 中的选项附加到命令行中的选项。默认值为 prepend,这意味着命令行选项在 fstab 选项之后进行评估。请注意,如果存在冲突的选项,则最后一个选项将生效。

--options-source source
默认选项的来源。source 是 fstab、mtab 和 disable 的逗号分隔列表。disable 禁用 fstab 和 mtab,并启用 --options-source-force。默认值为 fstab,mtab。

--options-source-force
即使同时指定了设备和目录,也使用 fstab/mtab 中的选项。

-R, --rbind
重新挂载一个子树和所有可能的子挂载点到其他位置(以便可以在两个位置访问其内容)。请参阅上面的“绑定挂载操作”部分。

-r, --read-only
以只读方式挂载文件系统。它的同义词是 -o ro。

请注意,根据文件系统类型、状态和内核行为,系统可能仍然可以写入设备。例如,ext3 和 ext4 如果文件系统处于脏状态,将重放日志。要防止这种写入访问,您可以将 ext3 或 ext4 文件系统挂载到带有 ro,noload 挂载选项,或者将块设备本身设置为只读模式,请参阅 blockdev(8) 命令。

-s
容忍不正确的挂载选项,而不是直接失败。这将忽略文件系统类型不支持的挂载选项。并非所有文件系统都支持此选项。目前,只有 `mount.nfs` 挂载助手支持此选项。

--source device
如果挂载命令只有一个参数,则该参数可能会被解释为目标(挂载点)或源(设备)。此选项允许您显式指定该参数是挂载源。

--target directory
如果挂载命令只有一个参数,则该参数可能会被解释为目标(挂载点)或源(设备)。此选项允许您显式指定该参数是挂载目标。

--target-prefix directory
在所有挂载目标前附加指定的目录。此选项可用于遵循 `fstab`,但挂载操作在另一个位置执行,例如:

mount --all --target-prefix /chroot -o X-mount.mkdir

将系统 `fstab` 中的所有内容挂载到 `/chroot`,并创建所有缺少的挂载点(由于 `X-mount.mkdir`)。另请参阅 `--fstab` 以使用替代的 `fstab`。

-T, --fstab path
指定替代的 `fstab` 文件。如果路径是一个目录,则目录中的文件将按 `strverscmp(3)` 排序;以“.” 开头或没有 `.fstab` 扩展名的文件将被忽略。此选项可以指定多次。此选项主要用于 `initramfs` 或 `chroot` 脚本,其中指定了超出标准系统配置的额外配置。

请注意,`mount` 不会将 `--fstab` 选项传递给 `/sbin/mount.type` 助手,这意味着替代的 `fstab` 文件对于助手是不可见的。这对于普通挂载来说没有问题,但用户(非 root)挂载始终需要 `fstab` 来验证用户的权限。

-t, --types fstype
`-t` 后的参数用于指示文件系统类型。当前支持的文件系统类型取决于正在运行的内核。有关完整的文件系统列表,请参见 `/proc/filesystems` 和 `/lib/modules/$(uname -r)/kernel/fs`。最常见的有 `ext2`、`ext3`、`ext4`、`xfs`、`btrfs`、`vfat`、`sysfs`、`proc`、`nfs` 和 `cifs`。

`mount` 和 [umount]({filename}../../umount)(8) 程序支持文件系统子类型。子类型由 `.subtype` 后缀定义。例如 `fuse.sshfs`。建议使用子类型表示法,而不是向挂载源添加任何前缀(例如,`sshfs#example.com` 已弃用)。

如果未指定 `-t` 选项,或者指定了 `auto` 类型,则 `mount` 将尝试猜测所需的文件系统类型。`mount` 使用 `libblkid(3)` 库来猜测文件系统类型;如果这没有找到任何看起来熟悉的东西,`mount` 将尝试读取文件 `/etc/filesystems`,或者,如果该文件不存在,则读取 `/proc/filesystems`。将尝试所有列出的文件系统类型,但会排除那些标记为“nodev”的文件系统类型(例如,`devpts`、`proc` 和 `nfs`)。如果 `/etc/filesystems` 以包含单个 `*` 的行结尾,`mount` 之后将读取 `/proc/filesystems`。在尝试期间,所有文件系统类型都将使用 `mount` 选项 `silent` 进行挂载。

自动类型对于用户挂载的软盘可能很有用。创建一个 /etc/filesystems 文件可能很有用,可以更改探测顺序(例如,首先尝试 vfat,然后再尝试 msdos 或 ext3,最后尝试 ext2),或者如果您使用内核模块自动加载程序。

可以在逗号分隔的列表中指定多个类型,用于 -t 选项以及 /etc/fstab 条目。-t 选项的文件系统类型列表可以以 no 前缀开头,以指定不应采取任何操作的文件系统类型。no 前缀在 /etc/fstab 条目中没有效果。

^ o 前缀在使用 -a 选项时可能具有意义。例如,命令

mount -a -t nomsdos,smbfs

将挂载所有文件系统,但排除 msdos 和 smbfs 类型的。

对于大多数类型,mount 程序所要做的就是发出一个简单的 mount(2) 系统调用,并且不需要对文件系统类型进行详细的了解。但是,对于少数类型(如 nfs、nfs4、cifs、smbfs、ncpfs),需要进行专门的代码处理。nfs、nfs4、cifs、smbfs 和 ncpfs 文件系统具有单独的 mount 程序。为了能够以统一的方式处理所有类型,mount 程序在调用时,如果存在 /sbin/mount.type 程序,则会执行该程序。由于不同版本的 smbmount 程序具有不同的调用约定,因此 /sbin/mount.smbfs 可能需要是一个 shell 脚本,用于设置所需的调用。

-U, --uuid uuid

挂载具有指定 uuid 的分区。

-v, --verbose

启用详细模式。从版本 2.41 开始,如果新的内核 mount API 可用,它还将打印内核信息。

-w, --rw, --read-write

以读写模式挂载文件系统。读写模式是内核的默认模式,mount 的默认行为是尝试以只读模式挂载,如果先前的 mount(2) 系统调用以读写标志挂载受保护的文件系统失败。

一个同义词是 -o rw

请注意,在命令行中指定 -w 强制 mount 程序永远不会尝试以只读模式挂载受保护的文件系统或已经以只读模式挂载的文件系统。

-h, --help

显示帮助文本并退出。

-V, --version

显示版本并退出。

文件系统无关的挂载选项

其中一些选项只有在它们出现在 /etc/fstab 文件中时才有用。

其中一些选项可以在系统内核中默认启用或禁用。要检查当前设置,请查看 /proc/mounts 中的选项。请注意,文件系统还具有每个文件系统的特定默认挂载选项(例如,对于 extN 文件系统,请参见 tune2fs -l 的输出)。


虚拟文件系统说明

虚拟文件系统 (VFS) 是内核中的抽象层,为用户空间程序提供文件系统接口。它还在内核内提供一个抽象层,允许不同的文件系统实现共存。一些挂载选项仅适用于此层。

以下选项仅由虚拟文件系统内核层解释,并应用于挂载点节点,而不是应用于文件系统本身:nosuid、noexec、nodiratime、relatime、noatime、strictatime 和 nosymfollow。要获得有关文件系统和 VFS 选项的完整概述,请尝试:

findmnt -o TARGET,VFS-OPTIONS,FS-OPTIONS

自 v2.39 以来,libmount 可以使用新的内核挂载接口来递归地设置 VFS 属性。为了向后兼容,即使请求了递归操作(例如,rbind),此功能默认情况下也不会启用。新的选项参数“recursive”可以指定,例如:

mount -orbind,ro=recursive,noexec=recursive,nosuid /foo /bar

这将递归地将文件系统从 /foo 绑定到 /bar,使 /bar 和所有子挂载点变为只读和 noexec,但只有 /bar 本身才会设置为“nosuid”。VFS 挂载选项的“recursive”可选参数是一个实验性功能。

只读设置说明

只读设置 (ro 或 rw) 由虚拟文件系统和文件系统解释,具体取决于如何在 mount(8) 命令行上指定该选项。为了向后兼容,默认情况下,在标准挂载操作期间,它将同时应用于这两个层。

操作“-o bind,remount,ro”仅应用于 VFS 挂载点,而操作“-o remount,ro”应用于 VFS 和文件系统超级块。此语义允许创建只读挂载点,同时保持文件系统可以通过另一个挂载点进行写入。

自版本 2.41 以来,libmount 具有使用可选参数 vfs 和 fs(例如,ro=fs)来指定应应用只读设置的位置的能力。例如,使用以下命令:

mount -o ro=vfs /dev/sdc1 /A

这将以只读模式挂载文件系统,但 /A 节点将设置为只读。在早期版本中,需要使用额外的“-o bind,remount,ro”操作才能实现相同的结果。

通用挂载选项

以下选项适用于正在挂载的任何文件系统,但并非每个文件系统都真正支持它们。例如,sync 选项仅对 ext2、ext3、ext4、fat、vfat、ufs 和 xfs 文件系统有效。

async

文件系统中的所有 I/O 都应异步完成。(另请参见 sync 选项。)

atime

不要使用 noatime 功能,因此 inode 访问时间由内核默认值控制。请参阅 relatime 和 strictatime 挂载选项的说明。

noatime

不要更新此文件系统上的 inode 访问时间(例如,为了加速新闻服务器上的访问)。这适用于所有 inode 类型(包括目录),因此它意味着 nodiratime。


auto

可以使用 -a 选项进行挂载。

noauto

只能显式挂载(即,-a 选项不会导致文件系统被挂载)。

context=context, fscontext=context, defcontext=context, 和 rootcontext=context

context= 选项在挂载不支持扩展属性的文件系统时非常有用,例如使用 VFAT 格式化的软盘或硬盘,或者系统不正常运行 SELinux 的情况,例如来自非 SELinux 工作站的 ext3 或 ext4 格式的磁盘。您也可以将 context= 用于您不信任的文件系统,例如软盘。它还有助于与早期 2.4. 内核版本上支持 xattr 的文件系统兼容。即使在支持 xattrs 的情况下,您也可以通过为整个磁盘分配一个安全上下文来节省时间,而无需为每个文件设置标签。

常用的可移动介质选项是 context="system_u:object_r:removable_t"。

fscontext= 选项适用于所有文件系统,无论其是否支持 xattr。fscontext 选项将覆盖的文件系统标签设置为特定的安全上下文。此文件系统标签与文件上的各个标签是分开的。它代表文件系统,用于某些类型的权限检查,例如在挂载或创建文件期间。各个文件的标签仍然从文件本身上的 xattrs 中获取。context 选项实际上设置了 fscontext 提供的聚合上下文,此外还为各个文件提供相同的标签。

您可以使用 defcontext= 选项设置未标记文件的默认安全上下文。这会覆盖策略中为未标记文件设置的值,并且需要一个支持 xattr 标记的文件系统。

rootcontext= 选项允许您在挂载正在挂载的 FS 或 inode 之前,显式标记 FS 的根 inode。这被发现对诸如无状态 Linux 之类的应用很有用。可以使用特殊值 @target 来分配目标挂载点的当前上下文。

请注意,内核会拒绝任何包含 context 选项的重新挂载请求,即使与当前上下文未更改。

警告:context 值可能包含逗号,在这种情况下,该值必须正确引用,否则 mount 会将逗号解释为挂载选项之间的分隔符。请记住,shell 会删除引号,因此需要双引号。例如:

mount -t tmpfs none /mnt -o \
'context="system_u:object_r:tmp_t:s0:c127,c456",noexec'

有关更多详细信息,请参阅 selinux(8)。

defaults

使用默认选项:rw、suid、dev、exec、auto、nouser 和 async。

请注意,所有默认挂载选项的实际集合取决于内核和文件系统类型。有关更多详细信息,请参见本部分的开头。

dev

解释文件系统上的字符或块特殊设备。

nodev

不要解释文件系统上的字符或块特殊设备。


diratime
    更新此文件系统上的目录 inode 访问时间。这是默认设置。(如果设置了 noatime,则会忽略此选项。)

nodiratime
    不要更新此文件系统上的目录 inode 访问时间。(如果设置了 noatime,则隐式启用此选项。)

dirsync
    此文件系统中的所有目录更新都应同步进行。这会影响以下系统调用:creat(2)、link(2)、[unlink]({filename}../../unlink)(2)、symlink(2)、[mkdir]({filename}../../mkdir)(2)、[rmdir]({filename}../../rmdir)(2)、mknod(2) 和 rename(2)。

exec
    允许执行此挂载文件系统上的二进制文件和其他可执行文件。

noexec
    不允许直接执行此挂载文件系统上的任何二进制文件。

group
    如果普通用户的一个或多个组与设备的组匹配,则允许该用户挂载此文件系统。此选项隐式启用 nosuid 和 nodev 选项(除非通过后续选项覆盖,如选项行 group,dev,suid 中所示)。

iversion
    每次修改 inode 时,都会递增 i_version 字段。

noiversion
    不要递增 inode 字段 i_version。

mand
    允许在此文件系统上使用强制锁。请参阅 fcntl(2)。此选项在 Linux 1 中已被弃用。

nomand
    不允许在此文件系统上使用强制锁。

_netdev
    该文件系统位于需要网络访问的设备上(用于防止系统尝试挂载这些文件系统,直到系统上的网络已启用)。

nofail
    如果该设备不存在,则不要为此设备报告错误。

relatime
    相对于修改或更改时间更新 inode 访问时间。仅当之前的访问时间早于或等于当前的修改或更改时间时,才会更新访问时间。(类似于 noatime,但不会破坏 [mutt]({filename}../../mutt)(1) 或其他需要知道自上次修改文件后是否已读取该文件的应用程序。)

自 Linux 2.6.30 起,内核默认为此选项提供的行为(除非指定了 noatime),并且需要 strictatime 挂载选项才能获得传统的行为。此外,自 Linux 2.6.30 起,如果文件的上次访问时间超过 1 天,则始终会更新该时间。

norelatime
    不使用 relatime 功能。另请参阅 strictatime 挂载选项。

strictatime
    允许显式请求完全的 atime 更新。这样,内核就可以默认使用 relatime 或 noatime,但仍允许用户空间覆盖它。有关默认系统挂载选项的更多详细信息,请参阅 /proc/mounts。

nostrictatime
    使用内核的默认行为来更新 inode 访问时间。

lazytime
    仅更新内存中文件 inode 版本的时间(atime、mtime、ctime)。

此挂载选项可显著减少对 inode 表的写入操作,适用于执行对预分配文件进行频繁随机写入的工作负载。

仅当满足以下条件时,才会更新磁盘上的时间戳:

    需要出于与文件时间戳无关的某些更改来更新 inode

该应用程序使用 fsync(2)、syncfs(2) 或 sync(2)

未删除的 inode 从内存中被清除

自从 inode 写入磁盘以来,已经过去了 24 小时以上。

nolazytime
不要使用 lazytime 功能。

suid
在从该文件系统执行程序时,启用 set-user-ID 和 set-group-ID 位或文件功能。

nosuid
不要启用 set-user-ID 和 set-group-ID 位或文件功能,也不要从该文件系统执行程序。此外,SELinux 域转换需要权限 nosuid_transition,而 nosuid_transition 又需要策略功能 nnp_nosuid_transition。

silent
启用 silent 标志。

loud
禁用 silent 标志。

owner
如果该用户是设备的拥有者,则允许普通用户挂载文件系统。此选项意味着 nosuid 和 nodev 选项(除非通过后续选项覆盖,如 owner,dev,suid 选项)。

remount
尝试重新挂载已挂载的文件系统。这通常用于更改文件系统的挂载标志,特别是将只读文件系统更改为可写。它不会更改设备或挂载点。

remount 操作与 bind 标志结合使用时具有特殊的语义。请参见上面的“Bind mount 操作”子部分。

VFS 挂载标志的默认内核行为(nodev、nosuid、noexec、ro)是在重新挂载时重置所有未指定的标志。这就是 mount(8) 尝试保留 fstab 或 /proc/self/mountinfo 中的当前设置的原因。可以通过 --options-mode 更改此默认行为。自 v2.39 以来,递归更改挂载标志(在支持 mount_setattr(2) 系统调用的系统上),例如 mount -o remount,ro=recursive,不会使用“reset-unspecified”行为,它作为简单的添加/删除操作,并且不会修改未指定的标志。

remount 功能遵循 mount 命令处理来自 fstab 选项的标准方式。这意味着,如果同时指定了设备和目录,mount 不会读取 fstab(或 mtab)。

mount -o remount,rw /dev/foo /dir

在此调用之后,所有旧的挂载选项都会被替换,并且会忽略 fstab(或 mtab)中的任意内容,除了 loop= 选项,该选项由 mount 命令内部生成并维护。

mount -o remount,rw /dir

在此调用之后,mount 会读取 fstab 并将这些选项与命令行中的选项(-o)合并。如果在 fstab 中没有找到挂载点,则它默认为 fstab 中的挂载选项。

mount 允许使用 --all 重新挂载所有已挂载的文件系统,这些文件系统与指定的过滤器(-O 和 -t)匹配。例如:

mount --all -o remount,ro -t vfat

将所有已挂载的 vfat 文件系统以只读模式重新挂载。每个文件系统都通过 mount -o remount,ro /dir 语义进行重新挂载。这意味着 mount 命令会读取 fstab 或 mtab,并将这些选项与命令行中的选项合并。

ro[=(recursive|vfs|fs)]
以只读模式挂载文件系统。可选参数是仅由基于文件描述符的内核挂载 API 支持的实验性功能,并且对于旧的 mount(2) 系统调用,它会被静默地忽略。

递归参数强制 VFS 属性递归应用。

vfs 和 fs 参数指定应应用只读标志的层。fs 指定文件系统超级块(内核中的唯一文件系统实例),而 vfs 指定挂载点。如果未指定任何属性,则将两个层都设置为只读。

有关更多详细信息,请参阅“只读设置说明”部分。

rw[=(recursive|vfs|fs)]

以读写方式挂载文件系统。

sync

应以同步方式对文件系统执行所有 I/O。对于具有有限写入周期的介质(例如某些闪存驱动器),同步可能会缩短使用寿命。

user

允许普通用户挂载文件系统。挂载用户的名称写入 mtab 文件(或写入 /run/mount 中的私有 libmount 文件),以便相同的用户可以再次卸载文件系统。此选项隐含 noexec、nosuid 和 nodev 选项(除非通过后续选项覆盖,如选项行 user,exec,dev,suid)。

nouser

禁止普通用户挂载文件系统。这是默认设置;它不隐含任何其他选项。

users

允许任何用户挂载和卸载文件系统,即使是其他普通用户挂载的文件系统。此选项隐含 noexec、nosuid 和 nodev 选项(除非通过后续选项覆盖,如选项行 users,exec,dev,suid)。

X-*

所有以“X-”为前缀的选项都解释为注释或用户空间应用程序特定的选项。这些选项不会存储在用户空间(例如,mtab 文件中),也不会发送到 mount.type 助手或 mount(2) 系统调用。建议的格式为 X-appname.option。

x-*

与 X-* 选项相同,但永久存储在用户空间中。这意味着这些选项也可用于 umount(8) 或其他操作。请注意,在用户空间中维护挂载选项很棘手,因为有必要使用基于 libmount 的工具,并且不能保证这些选项始终可用(例如,在移动挂载操作或未共享的命名空间之后)。

请注意,在 util-linux v2.30 之前,libmount 不会维护 x-* 选项并将其存储在用户空间中(功能与现在的 X-* 相同),但由于用例越来越多(在 initrd、systemd 等中),因此扩展了功能以保持现有的 fstab 配置可用,而无需进行更改。

X-mount.auto-fstypes=list

指定用于自动文件系统检测的允许或禁止的文件系统类型。

该列表是以逗号分隔的文件系统名称列表。当文件系统类型为“auto”或未指定文件系统类型时,会触发自动文件系统检测。

该列表遵循 mount 评估类型模式的方式(有关更多详细信息,请参阅 -t)。仅允许指定的 文件系统类型,或者如果列表以“no”为前缀,则禁止所有指定的类型。


例如,X-mount.auto-fstypes="ext4,btrfs" 仅接受 ext4 和 btrfs,而 X-mount.auto-fstypes="novfat,xfs" 接受所有文件系统,但不包括 vfat 和 xfs。

请注意,逗号用作挂载选项之间的分隔符,这意味着 auto-fstypes 值必须正确引用,不要忘记 shell 会删除引号,因此需要双引号。例如:

mount -t auto -o’X-mount.auto-fstypes="noext2,ext3"'  /dev/sdc1 /mnt/test

X-mount.mkdir[=mode] 允许创建目标目录(挂载点),如果它不存在。可选参数 mode 指定用于 mkdir(2) 的文件系统访问模式,以八进制表示。默认模式为 0755。此功能仅支持 root 用户或在不使用 suid 权限的情况下执行 mount。该选项也可以作为 x-mount.mkdir 使用,但此表示法自 v2.30 以来已被弃用。另请参阅 --mkdir 命令行选项。

X-mount.nocanonicalize[=type] 允许禁用挂载源和目标路径的规范化。默认情况下,mount 命令会将所有路径解析为绝对路径,不使用符号链接。但是,在某些情况下,此行为可能不是必需的,例如,当在符号链接上进行绑定挂载,或者在符号链接或另一个符号链接上进行挂载时。可选参数 type 可以是“source”或“target”(挂载点)。如果未指定类型,则禁用对两者的规范化。此挂载选项不会影响源标签(例如 LABEL= 或 UUID=)的转换和 fstab 处理。

命令行选项 --no-canonicalize 覆盖此挂载选项,并影响所有路径和标签转换,在所有情况下都起作用,但为了向后兼容,它不会修改 open_tree 系统调用标志,并且不允许进行通过符号链接进行绑定挂载。

请注意,mount(8) 仍然会对命令行中非 root 用户指定的源和目标路径进行清理和规范化,而与 X-mount.nocanonicalize 设置无关。

X-mount.noloop 即使挂载源是普通文件,也不创建和挂载循环设备。

X-mount.subdir=directory 允许挂载文件系统的子目录,而不是根目录。这仅在将文件系统的新实例附加到系统时有效。对于诸如重新挂载、绑定挂载或移动之类的操作,该选项将被静默忽略。

目前,此功能是通过临时文件系统根目录挂载在一个未共享的命名空间中,然后将子目录绑定到最终挂载点并卸载文件系统根目录来实现的。子目录挂载对于系统的其余部分以原子方式显示,尽管它是由多个 mount(2) 系统调用实现的。

请注意,此功能在具有未共享的私有挂载命名空间的会话中(在 unshare --mount 之后)或在旧内核上或在不支持基于文件描述符的挂载内核 API 的 mount(8) 上不起作用。在这种情况下,您需要使用 unshare --mount --propagation shared。


此功能为实验性功能。

X-mount.owner=用户名|UID, X-mount.group=组名|GID

挂载后设置挂载点的所有权。名称在目标挂载命名空间中解析,请参见 -N。

X-mount.mode=模式

挂载后设置挂载点的模式。

X-mount.idmap=id-type:id-mount:id-host:id-range [id-type:id-mount:id-host:id-range],
X-mount.idmap=文件

使用此选项创建 ID 映射挂载。ID 映射挂载允许根据与用户命名空间关联的 ID 映射来更改位于挂载下所有文件的所有权。 所有权更改与挂载的生命周期相关,并仅限于相关的挂载。 相关的 ID 映射可以通过两种方式指定:

用户可以直接指定 ID 映射。

必须使用 id-type:id-mount:id-host:id-range 语法指定 ID 映射。 指定 u 作为 id-type 前缀会创建一个 UID 映射,g 创建一个 GID 映射,省略 id-type 或指定 b 会创建 UID 和 GID 映射。id-mount 参数指示新挂载中的起始 ID。id-host 参数指示文件系统中的起始 ID。id-range 参数指示要映射的 ID 数量。可以指定多个 ID 映射。

各个 ID 映射必须用空格分隔。请注意,在 /etc/fstab 文件中,空格被解释为字段之间的分隔符。为了避免这种情况,必须使用 \040 对其进行转义。例如,X-mount.idmap=0:0:1\040500:1000:1。

例如,ID 映射 X-mount.idmap=u:1000:0:1 g:1001:1:2 5000:1000:2 创建一个 ID 映射挂载,其中 UID 0 映射到 UID 1000,GID 1 映射到 GID 1001,GID 2 映射到 GID 1002,UID 和 GID 1000 映射到 5000,并且 UID 和 GID 1001 映射到 5001 在挂载中。

当直接指定 ID 映射时,将分配一个新的用户命名空间,并使用请求的 ID 映射。新创建的用户命名空间将附加到挂载。

用户可以指定用户命名空间文件。

然后,用户命名空间将附加到挂载,并且用户命名空间的 ID 映射将成为挂载的 ID 映射。

例如,X-mount.idmap=/proc/PID/ns/user 将进程 PID 的用户命名空间附加到挂载。

nosymfollow

解析路径时不要跟踪符号链接。仍然可以创建符号链接,并且 readlink(1)、readlink(2)、realpath(1) 和 realpath(3) 仍然可以正常工作。

特定于文件系统的挂载选项

本节列出了特定于某些文件系统的选项。在可能的情况下,您应该首先查阅特定于文件系统的手册页以获取详细信息。其中一些手册页在下表中列出。

┌──────────────────┬───────────────┐
│                  │               │
│ 文件系统        │ 手册页         │
├──────────────────┼───────────────┤
│                  │               │
│ btrfs            │ btrfs(5)      │
├──────────────────┼───────────────┤
│                  │               │
│ cifs             │ mount.cifs(8) │
├──────────────────┼───────────────┤
│                  │               │
│ ext2, ext3, ext4 │ ext4(5)       │
├──────────────────┼───────────────┤
│                  │               │
│ fuse             │ [fuse]({filename}../../fuse)(8)       │
├──────────────────┼───────────────┤
│                  │               │
│ nfs              │ nfs(5)        │
├──────────────────┼───────────────┤
│                  │               │
│ tmpfs            │ tmpfs(5)      │
├──────────────────┼───────────────┤
│                  │               │
│ xfs              │ xfs(5)        │
└──────────────────┴───────────────┘

请注意,上述某些页面可能只有在安装相应的用户空间工具后才能访问。

以下选项仅适用于某些文件系统。我们按文件系统对其进行排序。所有选项都使用 -o 标志。

支持的选项在一定程度上取决于正在运行的内核。更多信息可能可以在内核源代码子目录 Documentation/filesystems 中的特定于文件系统的文件中找到。

adfs 文件系统的挂载选项

uid=value 和 gid=value
设置文件系统中文件的所有者和组(默认值:uid=gid=0)。

ownmask=value 和 othmask=value
分别设置 ADFS“所有者”权限和“其他”权限的权限掩码(默认值:分别为 0700 和 0077)。另请参见 /usr/src/linux/Documentation/filesystems/adfs.rst。

affs 文件系统的挂载选项

uid=value 和 gid=value
设置文件系统根目录的所有者和组(默认值:uid=gid=0,但如果指定了 uid 或 gid 选项但未指定值,则使用当前进程的 UID 和 GID)。

setuid=value 和 setgid=value
设置所有文件的所有者和组。

mode=value
将所有文件的模式设置为 value & 0777,忽略原始权限。向具有读取权限的目录添加搜索权限。该值以八进制形式给出。

protect
不允许对文件系统上的保护位进行任何更改。

usemp

在第一次同步或卸载时,将文件系统根目录的 UID 和 GID 设置为挂载点的 UID 和 GID,然后清除此选项。有点奇怪……

verbose

为每个成功的挂载打印一条信息消息。

prefix=string

在跟随链接时,在卷名前使用的前缀。

volume=string

在跟随符号链接时,在 '/' 之前使用的前缀(长度最多为 30)。

reserved=value
(默认:2。)设备开头的未使用的块数。

root=value

显式指定根块的位置。

bs=value

指定块大小。允许的值为 512、1024、2048、4096。

grpquota|noquota|quota|usrquota

这些选项被接受但会被忽略。(但是,配额实用程序可能会对 /etc/fstab 中的此类字符串做出反应。)

debugfs 的挂载选项

debugfs 文件系统是一个伪文件系统,传统上挂载在 /sys/kernel/debug 上。从内核版本 3.4 开始,debugfs 具有以下选项:

uid=n, gid=n

设置挂载点的所有者和组。

mode=value

设置挂载点的模式。

devpts 的挂载选项

devpts 文件系统是一个伪文件系统,传统上挂载在 /dev/pts 上。为了获取一个伪终端,进程会打开 /dev/ptmx;伪终端的编号随后会提供给该进程,并且可以作为 /dev/pts/ 访问伪终端从设备。

uid=value 和 gid=value

这将新创建的伪终端的所有者或组设置为指定的值。如果未指定任何内容,则它们将设置为创建进程的 UID 和 GID。例如,如果存在 GID 为 5 的 tty 组,则 gid=5 将导致新创建的伪终端属于 tty 组。

mode=value

将新创建的伪终端的模式设置为指定的值。默认值为 0600。将 mode 设置为 620 且 gid 设置为 5 会使新创建的伪终端的默认值为“mesg y”。

newinstance

创建一个私有的 devpts 文件系统实例,以便在此新实例中分配的伪终端索引与在 devpts 的其他实例中创建的索引是独立的。

如果没有 newinstance 选项,则所有 devpts 的挂载都共享相同的伪终端索引集(即,旧模式)。每个带有 newinstance 选项的 devpts 挂载都有一个私有的伪终端索引集。

此选项主要用于支持 Linux 内核中的容器。它在 Linux 内核版本 2.6.29 中实现。此外,此挂载选项仅在内核配置中启用了 CONFIG_DEVPTS_MULTIPLE_INSTANCES 时才有效。

要有效地使用此选项,/dev/ptmx 必须是指向 pts/ptmx 的符号链接。有关详细信息,请参阅 Linux 内核源代码树中的 Documentation/filesystems/devpts.txt。

ptmxmode=value

设置 devpts 文件系统中新 ptmx 设备节点的模式。

通过支持 devpts 的多个实例(请参见上面的 newinstance 选项),每个实例都在 devpts 文件系统的根目录中(通常为 /dev/pts/ptmx)中具有一个私有的 ptmx 节点。


为了与旧版本的内核兼容,新的 ptmx 节点的默认模式为 000。ptmxmode=value 指定了 ptmx 节点的一个更有用的模式,并且在指定 newinstance 选项时强烈建议使用。

此选项仅在 Linux 内核版本 2.6.29 及更高版本中实现。此外,此选项仅在内核配置中启用 CONFIG_DEVPTS_MULTIPLE_INSTANCES 时才有效。

fat 文件系统的挂载选项

(注意:fat 并不是一个单独的文件系统,而是 msdos、umsdos 和 vfat 文件系统中的一个通用部分。)

blocksize={512|1024|2048}

设置块大小(默认值为 512)。此选项已过时。

uid=value 和 gid=value

设置所有文件的所有者和组。(默认值:当前进程的 UID 和 GID。)

umask=value

设置 umask(未设置权限的位掩码)。默认值为当前进程的 umask。该值以八进制给出。

dmask=value

设置仅应用于目录的 umask。默认值为当前进程的 umask。该值以八进制给出。

fmask=value

设置仅应用于常规文件的 umask。默认值为当前进程的 umask。该值以八进制给出。

allow_utime=value

此选项控制 mtime/atime 的权限检查。

2 如果当前进程属于文件的组 ID 组,则可以更改时间戳。

2 其他用户可以更改时间戳。

默认值由 dmask 选项设置。(如果目录是可写的,则也允许 utime(2)。即 ~dmask & 022)

通常,utime(2) 检查当前进程是否是文件的所有者,或者它是否具有 CAP_FOWNER 功能。但是,FAT 文件系统在磁盘上没有 UID/GID,因此正常的检查过于严格。使用此选项,您可以放宽限制。

check=value

可以选择三种不同的严格级别:

r[elaxed]

接受并等效于大小写,长名称部分被截断(例如,verylongname.foobar 变为 verylong.foo),每个名称部分(名称和扩展名)中接受前导和嵌入的空格。

n[ormal]

类似于“relaxed”,但许多特殊字符(*、?、<、空格等)将被拒绝。这是默认值。

s[trict]

类似于“normal”,但包含长部分或在 Linux 上有时使用但 MS-DOS 不接受的特殊字符(+、= 等)的名称将被拒绝。

codepage=value

设置用于将 FAT 和 VFAT 文件系统上的字符转换为短名称字符的字符集。默认情况下,使用字符集 437。

conv=mode

此选项已过时,可能会失败或被忽略。

cvf_format=module

强制驱动程序使用 CVF(压缩卷文件)模块 cvf_module,而不是自动检测。如果内核支持 kmod,则 cvf_format=xxx 选项还控制按需加载 CVF 模块。此选项已过时。

cvf_option=option

传递给 CVF 模块的选项。此选项已过时。

debug

启用调试标志。将打印一个版本字符串和一个文件系统参数列表(如果参数似乎不一致,这些数据也会被打印)。


discard

如果设置,则在释放块时,将发出 discard/TRIM 命令到块设备。 这对于 SSD 设备和稀疏/精简配置的 LUN 非常有用。

dos1xfloppy

如果设置,则使用回退的默认 BIOS 参数块配置,该配置由后端设备大小确定。这些静态参数与 DOS 1.x 假设的 160 KiB、180 KiB、320 KiB 和 360 KiB 软盘和软盘镜像的默认值匹配。

errors={panic|continue|remount-ro}

指定 FAT 在关键错误发生时的行为:panic,不执行任何操作,或以只读模式重新挂载分区(默认行为)。

fat={12|16|32}

指定 12 位、16 位或 32 位 FAT。这将覆盖自动 FAT 类型检测例程。请谨慎使用!

iocharset=value

用于在 8 位字符和 16 位 Unicode 字符之间进行转换的字符集。默认值为 iso8859-1。长文件名以 Unicode 格式存储在磁盘上。

nfs={stale_rw|nostale_ro}

仅在需要通过 NFS 导出 FAT 文件系统时启用此选项。

stale_rw:此选项维护一个目录 inode 索引(缓存),该索引由与 NFS 相关的代码用于改进查找。支持通过 NFS 进行完整的文件操作(读/写),但由于在 NFS 服务器上进行缓存清除,这可能会导致出现虚假的 ESTALE 错误。

nostale_ro:此选项基于 FAT 目录条目中文件的磁盘位置来确定 inode 编号和文件句柄。这可确保在文件从 inode 缓存中清除后,不会返回 ESTALE。但是,这意味着诸如重命名、创建和删除之类的操作可能会导致先前指向一个文件的文件句柄指向不同的文件,从而可能导致数据损坏。因此,此选项还会以只读方式挂载文件系统。

为了保持向后兼容性,-o nfs 也会被接受,默认值为 stale_rw。

tz=UTC

此选项禁用本地时间(FAT 中 Windows 使用的时间)和 UTC(Linux 内部使用的时间)之间的时间戳转换。当挂载设置为 UTC 的设备(例如数码相机)时,这非常有用,以避免本地时间可能导致的问题。

time_offset=minutes

设置用于将时间戳从 FAT 使用的本地时间转换为 Linux 内部使用的 UTC 的偏移量。也就是说,每个时间戳都会减去分钟数,以将其转换为 UTC。当内核中通过 settimeofday(2) 设置的时区与文件系统使用的时区不相同时,此选项很有用。请注意,如果存在夏令时,此选项仍然无法在所有情况下提供正确的时间戳——不同夏令时设置中的时间戳可能会相差一个小时。

quiet

启用 quiet 标志。尝试 chown 或 chmod 文件不会返回错误,尽管它们会失败。请谨慎使用!

rodir

FAT 具有 ATTR_RO(只读)属性。在 Windows 上,目录的 ATTR_RO 将被忽略,并且仅由应用程序用作标志(例如,它设置为自定义文件夹)。


如果您想将 ATTR_RO 标志用作只读标志,即使对于目录也是如此,请设置此选项。

showexec

如果设置,文件的执行权限位仅当名称的扩展部分为 .EXE.COM.BAT 时才允许。默认情况下未设置。

sys_immutable

如果设置,FAT 上的 ATTR_SYS 属性将被视为 Linux 上的 IMMUTABLE 标志。默认情况下未设置。

flush

如果设置,文件系统将尝试比正常情况下更早地刷新到磁盘。默认情况下未设置。

usefree

使用存储在 FSINFO 中的“空闲簇”值。它将用于确定空闲簇的数量,而无需扫描磁盘。但默认情况下不使用它,因为最近的 Windows 在某些情况下不会正确更新它。如果您确定 FSINFO 上的“空闲簇”是正确的,则可以使用此选项来避免扫描磁盘。

dots, nodots, dotsOK=[yes|no]

各种尝试将 Unix 或 DOS 约定强加于 FAT 文件系统的不太成功的尝试。

用于 hfs 的挂载选项

creator=cccc, type=cccc

设置 MacOS Finder 在创建新文件时显示的创建者/类型值。默认值为“????”。

uid=n, gid=n

设置所有文件的所有者和组。(默认值:当前进程的 UID 和 GID。)

dir_umask=n, file_umask=n, umask=n

设置用于所有目录、所有常规文件或所有文件和目录的 umask。默认为当前进程的 umask。

session=n

选择要挂载的 CDROM 会话。默认情况下,将该决定交给 CDROM 驱动程序。此选项对于非 CDROM 作为底层设备时将失败。

part=n

从设备中选择分区号 n。仅对 CDROM 有意义。默认情况下,不解析分区表。

quiet

不要抱怨无效的挂载选项。

用于 hpfs 的挂载选项

uid=value 和 gid=value

设置所有文件的所有者和组。(默认值:当前进程的 UID 和 GID。)

umask=value

设置 umask(不存在的权限的位掩码)。默认值为当前进程的 umask。该值以八进制给出。

case={lower|asis}

将所有文件名转换为小写,或保持不变。(默认值:case=lower。)

conv=mode

此选项已过时,可能会失败或被忽略。

nocheck

当某些一致性检查失败时,不要中止挂载。

用于 iso9660 的挂载选项

ISO 9660 是一种标准,描述了要在 CD-ROM 上使用的文件系统结构。(此文件系统类型也在某些 DVD 上看到。另请参阅 udf 文件系统。)

正常的 iso9660 文件名采用 8.3 格式(即,类似于 DOS 的文件名长度限制),并且所有字符都为大写。此外,没有用于文件所有权、保护、链接数、块/字符设备的字段等。

Rock Ridge 是 iso9660 的扩展,它提供了所有这些类似于 UNIX 的功能。基本上,每个目录记录都有扩展,用于提供所有附加信息,并且在使用 Rock Ridge 时,文件系统与正常的 UNIX 文件系统无法区分(除了它是只读的)。


norock

禁用 Rock Ridge 扩展的使用,即使可用。参见 map。

nojoliet

禁用 Microsoft Joliet 扩展的使用,即使可用。参见 map。

check={r[elaxed]|s[trict]}

如果使用 check=relaxed,则文件名首先转换为小写,然后再进行查找。这可能只有在使用 norock 和 map=normal 时才有意义。(默认:check=strict。)

uid=value 和 gid=value

为文件系统中的所有文件指定指示的用户或组 ID,这可能会覆盖 Rock Ridge 扩展中找到的信息。(默认:uid=0,gid=0。)

map={n[ormal]|o[ff]|a[corn]}

对于非 Rock Ridge 卷,normal 名称转换会将大写字母映射为小写 ASCII 字符,删除尾部的“;1”,并将“;”转换为“.”。使用 map=off 时,不执行任何名称转换。参见 norock。(默认:map=normal。)map=acorn 类似于 map=normal,但如果存在,还会应用 Acorn 扩展。

mode=value

对于非 Rock Ridge 卷,为所有文件指定指示的模式。(默认:对所有人提供读取和执行权限。八进制模式值需要以 0 开头。)

unhide

同时显示隐藏和关联的文件。(如果普通文件和关联或隐藏的文件具有相同的文件名,这可能会导致普通文件无法访问。)

block={512|1024|2048}

将块大小设置为指示的值。(默认:block=1024。)

conv=mode

此选项已过时,可能会失败或被忽略。

cruft

如果文件长度的高字节包含其他垃圾数据,请将此挂载选项设置为忽略文件长度的高位。这意味着文件不能大于 16 MB。

session=x

选择多会话 CD 上的会话编号。

sbsector=xxx

会话从扇区 xxx 开始。

以下选项与 vfat 相同,并且仅在用于使用 Microsoft Joliet 扩展编码的光盘时才有意义。

iocharset=value

用于将 CD 上的 16 位 Unicode 字符转换为 8 位字符的字符集。默认值为 iso8859-1。

utf8

将 CD 上的 16 位 Unicode 字符转换为 UTF-8。

JFS 的挂载选项

iocharset=name

用于将 Unicode 转换为 ASCII 的字符集。默认情况下不进行任何转换。使用 iocharset=utf8 进行 UTF8 转换。这要求在内核的 .config 文件中设置 CONFIG_NLS_UTF8。

resize=value

将卷的大小调整为指示的块数。JFS 仅支持增大卷的大小,而不支持减小卷的大小。此选项仅在重新挂载期间有效,并且卷以读写方式挂载。resize 关键字不带任何值将把卷的大小调整为分区的大小。

nointegrity

不写入日志。此选项的主要用途是在从备份介质恢复卷时,可以提高性能。如果系统异常结束,则无法保证卷的完整性。

integrity

默认。将元数据更改写入日志。使用此选项重新挂载卷,此前卷上之前已指定 nointegrity 选项,以便恢复正常行为。


errors={continue|remount-ro|panic}

定义在遇到错误时应该采取的行为。(要么忽略错误,只是将文件系统标记为有错误并继续,要么以只读方式重新挂载文件系统,要么引发 panic 并停止系统。)

noquota|quota|usrquota|grpquota

这些选项会被接受但会被忽略。

用于 msdos 的挂载选项

请参阅用于 fat 的挂载选项。如果 msdos 文件系统检测到不一致,它会报告错误并将文件系统设置为只读。可以通过重新挂载文件系统来使其可写。

用于 ncpfs 的挂载选项

与 nfs 类似,ncpfs 实现需要在 mount(2) 系统调用中传递一个二进制参数(一个 ncp_mount_data 结构)。该参数由 ncpmount(8) 构造,并且当前版本的 mount (2.12) 不了解 ncpfs。

用于 ntfs 的挂载选项

iocharset=name

用于返回文件名时使用的字符集。与 VFAT 不同,NTFS 会抑制包含无法转换的字符的名称。已弃用。

nls=name

以前称为 iocharset 的选项的新名称。

utf8

使用 UTF-8 转换文件名。

uni_xlate={0|1|2}

对于 0(或“no”或“false”),不要对未知的 Unicode 字符使用转义序列。对于 1(或“yes”或“true”)或 2,使用 vfat 样式的 4 字节转义序列,以“:”开头。这里 2 给出小端编码,1 给出字节交换的大端编码。

posix=[0|1]

如果启用(posix=1),则文件系统区分大小写。8.3 别名将作为硬链接呈现,而不是被抑制。此选项已过时。

uid=value, gid=value 和 umask=value

设置文件系统上的文件权限。umask 值以八进制给出。默认情况下,文件由 root 拥有,并且其他人不可读。

用于 overlay 的挂载选项

从 Linux 3.18 开始,overlay 伪文件系统实现了其他文件系统的联合挂载。

overlay 文件系统将两个文件系统组合在一起——一个上层文件系统和一个下层文件系统。当名称同时存在于两个文件系统中时,上层文件系统中的对象是可见的,而下层文件系统中的对象要么被隐藏,要么在目录的情况下,与上层对象合并。

下层文件系统可以是 Linux 支持的任何文件系统,并且不需要是可写的。下层文件系统甚至可以是另一个 overlayfs。上层文件系统通常是可写的,如果它是可写的,那么它必须支持创建 trusted.* 扩展属性,并且必须在 readdir 响应中提供有效的 d_type,因此 NFS 不适合。

一个只读 overlay,它将两个只读文件系统组合在一起,可以使用任何文件系统类型。lowerdir 和 upperdir 选项通过以下方式组合成一个合并的目录:

mount -t overlay overlay \
-olowerdir=/lower,upperdir=/upper,workdir=/work /merged

lowerdir=directory

可以是任何文件系统,不需要放在可写的文件系统上。


upperdir=directory

upperdir 通常位于可写的文件系统上。

workdir=directory

workdir 需要是一个与 upperdir 位于相同文件系统上的空目录。

userxattr

使用“user.overlay.” xattr 命名空间,而不是“trusted.overlay.”。这对于非特权挂载 overlayfs 非常有用。

redirect_dir={on|off|follow|nofollow}

如果启用了 redirect_dir 功能,则该目录将被复制(但不复制内容)。然后,设置“{trusted|user}.overlay.redirect”扩展属性,其值为 overlay 根目录中原始位置的路径。最后,该目录将被移动到新位置。

on

启用重定向。

off

不创建重定向,并且仅当内核/模块配置中启用了“redirect_always_follow”功能时,才会跟踪重定向。

follow

不创建重定向,但会跟踪重定向。

nofollow

不创建重定向,也不跟踪重定向(如果未启用“redirect_always_follow”功能,则等效于“redirect_dir=off”)。

index={on|off}

Inode 索引。如果禁用此功能,并且复制具有多个硬链接的文件,则这将“中断”链接。更改将不会传播到指向相同 inode 的其他名称。

uuid={on|off}

可用于将底层文件系统中文件句柄的 UUID 替换为 null,并有效地禁用 UUID 检查。这在复制底层磁盘并更改副本的 UUID 时非常有用。仅当所有 lower/upper/work 目录都位于同一文件系统上时才适用,否则它将回退到正常行为。

nfs_export={on|off}

当底层文件系统支持 NFS 导出并且启用了“nfs_export”功能时,可以向 NFS 导出 overlay 文件系统。

使用“nfs_export”功能后,在复制任何 lower 对象时,将在索引目录中创建一个索引条目。索引条目的名称是复制原始文件句柄的十六进制表示。对于非目录对象,索引条目是对 upper inode 的硬链接。对于目录对象,索引条目具有一个扩展属性“{trusted|user}.overlay.upper”,其中包含编码后的 upper 目录 inode 的文件句柄。

在编码 overlay 文件系统对象的file handle时,适用以下规则:

对于非 upper 对象,从 lower inode 编码 lower file handle。

对于索引对象,从复制原始位置编码 lower file handle。

对于纯 upper 对象和现有的非索引 upper 对象,从 upper inode 编码 upper file handle。

编码的 overlay 文件句柄包括:

包含路径类型信息的头部(例如,lower/upper)。

底层文件系统的 UUID。

底层文件系统中底层 inode 的编码。

此编码格式与存储在扩展属性“{trusted|user}.overlay.origin”中的文件句柄的编码格式相同。在解码 overlay 文件句柄时,将执行以下步骤:

通过 UUID 和路径类型信息找到底层层。


解码底层文件系统文件句柄以获取底层目录项。

对于较低层的文件句柄,在索引目录中按名称查找该句柄。

如果在索引中找到白名单条目,则返回 ESTALE。这表示覆盖对象在编码其文件句柄后已被删除。

对于非目录,从已解码的底层目录项、路径类型和索引 inode(如果找到)创建一个断开连接的覆盖目录项。

对于目录,使用已连接的底层已解码目录项、路径类型和索引,以查找已连接的覆盖目录项。

解码非目录文件句柄可能会返回一个断开连接的目录项。复制该断开连接的目录项会在上层索引中创建一个没有上层别名的条目。

当覆盖文件系统具有多个底层时,中间层目录可能存在“重定向”到较低层目录的情况。由于中间层“重定向”未被索引,因此从“重定向”原始目录编码的较低层文件句柄,不能用于查找中间层或上层目录。同样,从“重定向”原始目录的后代编码的较低层文件句柄,也不能用于重建已连接的覆盖路径。为了减轻无法从较低层文件句柄解码目录的情况,这些目录会在编码时进行复制,并编码为上层文件句柄。在没有上层的文件系统上,无法使用此缓解措施。在这种设置中,NFS 导出需要关闭重定向跟随(例如,“redirect_dir=nofollow”)。

覆盖文件系统不支持可连接的非目录文件句柄,因此使用 subtree_check 导出配置进行导出会导致通过 NFS 查找文件时出现故障。

当启用 NFS 导出功能时,所有目录索引条目都会在挂载时进行验证,以检查上层文件句柄是否有效。此验证在某些情况下可能会导致显著的开销。

注意:挂载选项 index=off、nfs_export=on 对于读写挂载而言是冲突的,并且会导致错误。

xino={on|off|auto} “xino”功能从实际对象的 st_ino 和底层 fsid 索引组合一个唯一的对象标识符。“xino”功能使用较高的 inode 号位作为 fsid,因为底层文件系统很少使用较高的 inode 号位。如果底层 inode 号溢出到较高的 xino 位,则覆盖文件系统将针对该 inode 回退到非 xino 行为。

有关此选项影响的详细说明,请参阅 https://docs.kernel.org/filesystems/overlayfs.html

metacopy={on|off} 当启用仅元数据复制功能时,overlayfs 仅在执行特定于元数据的操作(如 chown/chmod)时复制元数据(而不是整个文件)。稍后,当文件被打开以进行写入操作时,将复制完整的文件。

换句话说,这是一个延迟的数据复制操作,并且只有在需要实际修改数据时才会复制数据。


volatile

易失性挂载不能保证在崩溃后仍然有效。强烈建议仅在可以轻松重建写入覆盖层的数据时,才使用易失性挂载。

使用“volatile”选项进行挂载的优点是,省略了所有形式的同步调用到上层文件系统。

为了避免产生虚假的安全性,易失性挂载的 syncfs(和 fsync)语义与 VFS 中其余部分的语义略有不同。如果在易失性挂载发生后,上层目录的文件系统发生任何写回错误,则所有同步函数都将返回错误。一旦达到这种状态,文件系统将无法恢复,并且每个后续的同步调用都将返回错误,即使上层目录自上次同步调用以来没有发生新的错误。

当使用“volatile”选项挂载覆盖层时,将创建目录 $workdir/work/incompat/volatile。在下一次挂载期间,覆盖层会检查此目录,如果存在则拒绝挂载。这是一个强烈的指示,表明用户应该丢弃上层和工作目录,并创建新的目录。在极少数情况下,如果用户知道系统没有崩溃并且上层目录的内容完好无损,则可以删除“volatile”目录。

用于 reiserfs 的挂载选项

Reiserfs 是一种日志文件系统。

conv

指示版本 3.6 的 reiserfs 软件挂载版本 3.5 的文件系统,并为新创建的对象使用 3.6 格式。此文件系统将不再与 reiserfs 5tools 兼容。

hash={rupasov|tea|r5|detect}

选择 reiserfs 用于在目录中查找文件的哈希函数。

rupasov

Yury Yu. Rupasov 发明的一种哈希算法。它速度快且保留局部性,将词法上接近的文件名映射到接近的哈希值。不应使用此选项,因为它会导致哈希冲突的可能性很高。

tea

由 Jeremy Fitzhardinge 实现的一种 Davis-Meyer 函数。它使用哈希来变换名称中的位。它具有高随机性,因此,冲突的可能性很低,但会增加一些 CPU 成本。如果在使用 r5 哈希时遇到 EHASHCOLLISION 错误,则可以使用此选项。

r5

rupasov 哈希的修改版本。默认使用,并且是最佳选择,除非文件系统具有大型目录和不寻常的文件名模式。

detect

指示挂载程序通过检查正在挂载的文件系统来检测正在使用的哈希函数,并将此信息写入 reiserfs 超级块。这仅在旧格式文件系统的第一次挂载时有用。

hashed_relocation

调整块分配器。在某些情况下,这可以提供性能改进。

no_unhashed_relocation

调整块分配器。在某些情况下,这可以提供性能改进。

noborder

禁用 Yury Yu. Rupasov 发明的边界分配器算法。在某些情况下,这可以提供性能改进。

nolog

禁用日志记录。这将在某些情况下提供轻微的性能改进,但代价是失去 reiserfs 从崩溃中快速恢复的能力。即使打开此选项,reiserfs 仍然执行所有日志记录操作,只是不执行实际写入其日志区域的操作。nolog 的实现是一个正在进行的工作。


notail

默认情况下,reiserfs 将小文件和“文件尾部”直接存储在其树中。这会使某些实用程序(如 lilo(8))感到困惑。此选项用于禁用将文件打包到树中的功能。

replayonly

仅重放日志中的事务,而不实际挂载文件系统。主要由 reiserfsck 使用。

resize=number

一个重新挂载选项,允许在线扩展 reiserfs 分区。指示 reiserfs 假设设备具有指定数量的块。此选项设计用于与使用逻辑卷管理 (LVM) 的设备一起使用。有一个特殊的调整大小工具,可以从 ftp://ftp.namesys.com/pub/reiserfsprogs 获取。

user_xattr

启用扩展用户属性。请参阅 attr(1) 手册页。

acl

启用 POSIX 访问控制列表。请参阅 acl(5) 手册页。

barrier=none / barrier=flush

这会禁用/启用日志记录代码中使用的写屏障。barrier=none 禁用,barrier=flush 启用(默认)。这还需要一个可以支持屏障的 I/O 堆栈,如果 reiserfs 在屏障写入时遇到错误,它将禁用屏障并发出警告。写屏障可强制执行正确的磁盘上日志提交顺序,从而使易失性磁盘写入缓存可以安全使用,但会带来一定的性能损失。如果您的磁盘以某种方式具有电池备份,则禁用屏障可能会安全地提高性能。

UBIFS 的挂载选项

UBIFS 是一种闪存文件系统,它运行在 UBI 卷之上。请注意,不支持 atime 并且始终处于关闭状态。

设备名称可以指定为:

ubiX_Y
UBI 设备编号 X,卷编号 Y

ubiY
UBI 设备编号 0,卷编号 Y

ubiX:NAME
UBI 设备编号 X,卷名称为 NAME

ubi:NAME
UBI 设备编号 0,卷名称为 NAME

可以使用替代分隔符“!”而不是“:”。

以下挂载选项可用:

bulk_read

启用批量读取。禁用 VFS 预读,因为它会降低文件系统的速度。批量读取是一种内部优化。如果数据一次性读取,某些闪存的读取速度可能会更快,而不是通过多次读取请求。例如,OneNAND 可以执行“读取时加载”,如果它读取一个以上的 NAND 页。

no_bulk_read

不进行批量读取。这是默认设置。

chk_data_crc

检查数据 CRC-32 校验和。这是默认设置。

no_chk_data_crc

不检查数据 CRC-32 校验和。使用此选项,文件系统不会检查数据的 CRC-32 校验和,但它会检查内部索引信息。此选项仅影响读取,而不影响写入。写入数据时始终计算 CRC-32。

compr={none|lzo|zlib}

选择用于写入新文件的默认压缩器。即使使用“none”选项挂载,也可以读取压缩的文件。


用于 udf 的挂载选项

UDF 是由 OSTA(光存储技术协会)定义的“通用磁盘格式”文件系统,通常用于 DVD-ROM,通常采用混合 UDF/ISO-9660 文件系统形式。但是,它也可以单独用于磁盘驱动器、闪存驱动器和其他块设备。另请参见 iso9660。

uid=
使文件系统中的所有文件都属于给定的用户。可以独立于(或通常与)uid=<user> 一起指定 uid=forget,结果是 UDF 不会将 uid 存储到介质中。事实上,记录的 uid 是 UDF 标准中定义的 32 位溢出 uid -1。该值可以指定为 <user>,这是一个有效的用户名,或者相应的十进制用户 ID,或者特殊的字符串“forget”。

gid=
使文件系统中的所有文件都属于给定的组。可以独立于(或通常与)gid=<group> 一起指定 gid=forget,结果是 UDF 不会将 gid 存储到介质中。事实上,记录的 gid 是 UDF 标准中定义的 32 位溢出 gid -1。该值可以指定为 <group>,这是一个有效的组名,或者相应的十进制组 ID,或者特殊的字符串“forget”。

umask=
从文件系统读取的所有 inode 中屏蔽给定的权限。该值以八进制给出。

mode=
如果设置了 mode=,则将从文件系统读取的所有非目录 inode 的权限设置为给定的模式。该值以八进制给出。

dmode=
如果设置了 dmode=,则将从文件系统读取的所有目录 inode 的权限设置为给定的 dmode。该值以八进制给出。

bs=
设置块大小。在 2.6.30 之前的内核版本中,默认值为 2048。从 2.6.30 到 4.11 之前,它是逻辑设备块大小,回退到 2048。从 4.11 开始,它是逻辑块大小,回退到逻辑设备块大小和 4096 之间的任何有效块大小。

有关其他详细信息,请参阅 mkudffs(8) 2.0+ manpage,请参阅“兼容性”和“块大小”部分。

unhide
显示其他隐藏的文件。

undelete
在列表中显示已删除的文件。

adinicb
将数据嵌入到 inode 中。(默认)

noadinicb
不要将数据嵌入到 inode 中。

shortad
使用短 UDF 地址描述符。

longad
使用长 UDF 地址描述符。(默认)

nostrict
取消设置严格的符合性。

iocharset=
设置 NLS 字符集。这需要使用 CONFIG\_UDF\_NLS 选项编译内核。

utf8
设置 UTF-8 字符集。

用于调试和灾难恢复的挂载选项

novrs
忽略卷识别序列并尝试挂载。

session=
选择用于多会话记录的光盘的会话号。(默认=最后一个会话)

anchor=
覆盖标准的锚点位置。(默认=256)

lastblock=
设置文件系统的最后一个块。

未使用的历史挂载选项,可能会遇到,应将其删除

uid=ignore
已忽略,请使用 uid=<user>。

gid=ignore

已忽略,请使用 gid=<组>。

volume=

未实现且已忽略。

partition=

未实现且已忽略。

fileset=

未实现且已忽略。

rootdir=

未实现且已忽略。

ufs 的挂载选项

ufstype=值

UFS 是一种广泛用于不同操作系统中的文件系统。问题在于不同实现之间的差异。某些实现的特性未记录在案,因此很难自动识别 UFS 的类型。因此,用户必须通过挂载选项指定 UFS 的类型。可能的值是:

old

旧版本的 UFS,默认情况下为只读。(不要忘记使用 -r 选项。)

44sd

用于由 BSD 样式的系统(NetBSD、FreeBSD、OpenBSD)创建的文件系统。

ufs2

在 FreeBSD 5.x 中使用,支持读写。

5bsd

ufs2 的同义词。

sun

用于由 SunOS 或 Solaris(在 Sparc 上)创建的文件系统。

sunx86

用于由 Solaris(在 x86 上)创建的文件系统。

hp

用于由 HP-UX 创建的文件系统,为只读。

nextstep

用于由 NeXTStep(在 NeXT 站上)创建的文件系统(当前为只读)。

nextstep-cd

用于 NextStep CDROM(block_size == 2048),为只读。

openstep

用于由 OpenStep 创建的文件系统(当前为只读)。相同的的文件系统类型也由 macOS 使用。

onerror=值

设置错误时的行为:

panic

如果遇到错误,则导致内核崩溃。

[lock|umount|repair]

这些挂载选项当前不起作用;当遇到错误时,只会打印一条控制台消息。

umsdos 的挂载选项

请参见 msdos 的挂载选项。 dotsOK 选项已由 umsdos 显式禁用。

vfat 的挂载选项

首先,将识别 fat 的挂载选项。 dotsOK 选项已由 vfat 显式禁用。此外,还有

uni_xlate

将未处理的 Unicode 字符转换为特殊的转义序列。这使您可以备份和还原使用任何 Unicode 字符创建的文件名。如果没有此选项,当无法进行翻译时,将使用“?”。转义字符为“:”,因为否则它在 vfat 文件系统中是无效的。使用的转义序列,其中 u 是 Unicode 字符,为:‘:’,(u & 0x3f),((u>>6) & 0x3f),(u>>12)。

posix

允许两个名称仅在大小写上有所不同的文件。此选项已过时。

nonumtail

首先尝试创建一个没有序列号的短名称,然后再尝试 name\~num.ext。

utf8

UTF8 是控制台使用的文件系统安全的 Unicode 8 位编码。可以使用此选项启用文件系统中的 UTF8,或使用 utf8=0、utf8=no 或 utf8=false 禁用它。 如果设置了 uni_xlate,则 UTF8 将被禁用。

shortname=模式

定义用于创建和显示适合 8.3 个字符的文件名的行为。如果文件的长名称存在,则在显示时它始终是首选名称。有四种模式:

lower

在显示时强制将短名称转换为小写;当短名称不是全部大写时,存储长名称。


win95

在显示时强制将短名称转换为大写;当短名称不是全部大写时,存储长名称。

winnt

按原样显示短名称;当短名称不是全部小写或全部大写时,存储长名称。

mixed

按原样显示短名称;当短名称不是全部大写时,存储长名称。此模式自 Linux 2.6.32 起为默认模式。

usbfs 的挂载选项

devuid=uid and devgid=gid and devmode=mode

设置 usbfs 文件系统中设备文件的所有者、组和模式(默认:uid=gid=0,mode=0644)。模式以八进制表示。

busuid=uid and busgid=gid and busmode=mode

设置 usbfs 文件系统中总线目录的所有者、组和模式(默认:uid=gid=0,mode=0555)。模式以八进制表示。

listuid=uid and listgid=gid and listmode=mode

设置文件设备的所有者、组和模式(默认:uid=gid=0,mode=0444)。模式以八进制表示。

DM-VERITY 支持

设备映射器 verity 目标提供使用内核加密 API 对块设备进行只读透明完整性检查的功能。挂载命令可以打开 dm-verity 设备并在挂载设备文件系统之前执行完整性验证。需要 libcryptsetup(在 libmount 中,可选地通过 dlopen(3))。如果 libcryptsetup 支持提取已挂载设备的根哈希,则在匹配时将自动重用现有设备。dm-verity 的挂载选项:

verity.hashdevice=path

指向与源卷关联的哈希树设备的路径,用于传递给 dm-verity。

verity.roothash=hex

verity.hashdevice 的根的十六进制编码哈希值。与 verity.roothashfile 互斥。

verity.roothashfile=path

指向包含 verity.hashdevice 的根的十六进制编码哈希值的文件路径。与 verity.roothash 互斥。

verity.hashoffset=offset

如果哈希树设备嵌入在源卷中,则 dm-verity 使用偏移量(默认:0)来访问树。

verity.fecdevice=path

指向与源卷关联的前向纠错 (FEC) 设备的路径,用于传递给 dm-verity。可选。需要使用 CONFIG_DM_VERITY_FEC 构建内核。

verity.fecoffset=offset

如果 FEC 设备嵌入在源卷中,则 dm-verity 使用偏移量(默认:0)来访问 FEC 区域。可选。

verity.fecroots=value

FEC 的奇偶字节数(默认:2)。可选。

verity.roothashsig=path

指向 pkcs7(1ssl) 格式的根哈希十六进制字符串的签名。需要 cryptsetup 中的 crypt_activate_by_signed_key() 以及使用 CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG 构建的内核。为了重用设备,签名必须要么由所有挂载使用,要么不被任何挂载使用。可选。

verity.oncorruption=ignore|restart|panic

指示内核在检测到损坏时忽略、重新启动或触发 panic。默认情况下,I/O 操作只是失败。需要 Linux 4.1 或更高版本,以及 libcryptsetup 2.3.4 或更高版本。可选。


自 util-linux v2.35 版本起支持。

例如,命令:

mksquashfs /etc /tmp/etc.raw
veritysetup format /tmp/etc.raw /tmp/etc.verity --root-hash-file=/tmp/etc.roothash
openssl smime -sign -in /tmp/etc.roothash -nocerts -inkey private.key \
-signer private.crt -noattr -binary -outform der -out /tmp/etc.roothash.p7s
mount -o verity.hashdevice=/tmp/etc.verity,verity.roothashfile=/tmp/etc.roothash,\
verity.roothashsig=/tmp/etc.roothash.p7s /tmp/etc.raw /mnt
从 /etc 目录创建 squashfs 镜像,创建 verity 哈希设备,并将经过验证的文件系统镜像挂载到 /mnt。如果使用了 roothashsig,则内核将验证根哈希是否由内核密钥环中的密钥签名。

循环设备支持

另一种可能的类型是通过循环设备进行挂载。例如,命令:

mount /tmp/disk.img /mnt -t vfat -o loop=/dev/loop3
将循环设备 /dev/loop3 设置为与文件 /tmp/disk.img 对应,然后将该设备挂载到 /mnt。

如果没有明确指定循环设备(而只是给出了选项 -o loop),则 mount 命令将尝试查找某个未使用的循环设备并使用它,例如:

mount /tmp/disk.img /mnt -o loop

mount 命令会自动从普通文件中创建一个循环设备,如果未指定文件系统类型,或者文件系统被 libblkid 识别,则会这样做,例如:

mount /tmp/disk.img /mnt
mount -t ext4 /tmp/disk.img /mnt

这种类型的挂载知道三个选项,即 loop、offset 和 sizelimit,实际上它们是 losetup(8) 的选项。(这些选项可以与特定于文件系统类型的选项一起使用。)

自从 Linux 2.6.25 以来,支持循环设备的自动销毁,这意味着 mount 通过 umount 释放的任何循环设备,都与 /etc/mtab 无关。

您也可以手动释放循环设备,使用 losetup -d 或 umount -d。

自从 util-linux v2.29 以来,如果相同的后端文件已经用于具有相同偏移量和大小限制的某个循环设备,mount 将重用循环设备,而不是初始化新设备。这是为了避免文件系统损坏。

退出状态

mount 命令具有以下退出状态值(这些位可以进行 OR 运算):

0   成功

1   不正确的调用或权限

2   系统错误(内存不足、无法 fork、没有更多的循环设备)

4   内部 mount 错误

8   用户中断

16  写入或锁定 /etc/mtab 时出现问题

32  挂载失败

64  一些挂载成功

mount -a 命令返回 0(全部成功)、32(全部失败)或 64(一些失败,一些成功)。

126 无法执行外部 /sbin/mount.<type> 挂载助手(自 util-linux v2.41 起)

外部助手

外部挂载助手的语法如下:

/sbin/mount.suffix spec dir [-sfnv] [-N namespace] [-o options] [-t type.subtype]
其中 suffix 是文件系统类型,-sfnvoN 选项与普通的 mount 选项具有相同的含义。-t 选项用于支持子类型的文件系统(例如 /sbin/mount.fuse -t fuse.sshfs)。

^ ount 命令不会将 unbindablerunbindableprivaterprivateslaverslavesharedrsharedautonoautocommentx-*loopoffsetsizelimit 等挂载选项传递给 mount.<suffix> 辅助程序。所有其他选项都将以逗号分隔的列表形式作为 -o 选项的参数使用。

辅助程序的退出状态值将作为 mount(8) 的退出状态返回。如果找到挂载辅助程序,但 execl() 调用失败,则返回值为 126。

环境

`LIBMOUNT_FORCE_MOUNT2={always|never|auto}`
强制使用经典的 `mount(2)` 系统调用(需要支持基于新的文件描述符的挂载 API)。默认值为 `auto`;在这种情况下,libmount 会尝试智能地使用经典的 `mount(2)`,仅适用于已知问题。如果新的挂载 API 不可用,libmount 仍然可以使用传统的 `mount(2)`,即使 `LIBMOUNT_FORCE_MOUNT2` 设置为 `never`。

`LIBMOUNT_FSTAB=<path>`
覆盖 `fstab` 文件的默认位置(对于 suid 程序将被忽略)。

`LIBMOUNT_DEBUG=all`
启用 libmount 调试输出。

`LIBBLKID_DEBUG=all`
启用 libblkid 调试输出。

`LOOPDEV_DEBUG=all`
启用循环设备设置调试输出。

文件

请参阅上面的“文件 /etc/fstab、/etc/mtab 和 /proc/mounts”部分。

`/etc/fstab`
文件系统表

`/run/mount`
libmount 私有运行时目录

`/etc/mtab`
已挂载文件系统的表,或指向 `/proc/mounts` 的符号链接

`/etc/mtab~`
锁文件(在系统使用 `mtab` 符号链接时未使用)

`/etc/mtab.tmp`
临时文件(在系统使用 `mtab` 符号链接时未使用)

`/etc/filesystems`
要尝试的文件系统类型列表

历史

在 Version 5 AT&T UNIX 中存在 `mount` 命令。

错误

损坏的文件系统可能会导致崩溃。

某些 Linux 文件系统不支持 -o sync-o dirsync(例如,ext2ext3ext4fatvfat 文件系统在挂载时使用 sync 选项时支持同步更新(类似于 BSD))。

^ o remount 选项可能无法更改挂载参数(例如,所有 ext2fs 特定的参数,除了 sb,都可以通过重新挂载来更改,但不能更改 fatfsgidumask)。

在系统中使用普通 mtab 文件时,/etc/mtab/proc/mounts 中的文件可能不匹配。第一个文件仅基于 mount 命令的选项,但第二个文件的内容还取决于内核和其他设置(例如,在远程 NFS 服务器上——在某些情况下,mount 命令可能会报告有关 NFS 挂载点的不可靠信息,而 /proc/mount 文件通常包含更可靠的信息)。这是用指向 /proc/mounts 文件的符号链接替换 mtab 文件的另一个原因。

检查 NFS 文件系统中通过文件描述符引用的文件(即 fcntlioctl 系列函数)可能会导致不一致的结果,因为即使使用了 noac 挂载选项,内核中也缺少一致性检查。

当使用旧内核时,如果 mount 命令无法确认块设备的尺寸已按请求配置,则使用 loop 选项以及 offsetsizelimit 选项可能会失败。可以通过手动使用 losetup(8) 命令在调用带有配置好的循环设备的 mount 命令之前来解决这种情况。


作者

Karel Zak <_>

参见

mount(2), umount(2), filesystems(5), fstab(5), nfs(5), xfs(5), mount_namespaces(7), xattr(7), e2label(8), findmnt(8), losetup(8), lsblk(8), mke2fs(8), mountd(8), nfsd(8), swapon(8), tune2fs(8), umount(8), xfs_admin(8)

报告错误

如需报告错误,请使用问题跟踪器 [https://github.com/util-linux/util-linux/issues]。

可用性

mount 命令是 util-linux 软件包的一部分,可以从 Linux 内核存档 [https://www.kernel.org/pub/linux/utils/util-linux/] 下载。