mount(8) - Linux 手册页
名称
mount - 挂载文件系统
概要
mount [-lhV]
mount -a [-fFnrsvw] [-t vfstype] [-O optlist]
mount [-fnrsvw] [-o option[,option]...] device|dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
描述
Unix 系统中所有可访问的文件都排列在一个大树(即文件层次结构)中,根节点为 /。这些文件可以分布在多个设备上。mount 命令用于将某个设备上的文件系统挂载到文件系统树中。相反,umount(8) 命令用于卸载它。
mount 命令的标准形式为:
- mount -t type device dir
- 这会告知内核将 device(类型为 type)上的文件系统附加到目录 dir 上。此目录原有的内容(如有)、所有者及权限模式将变得不可见;只要该文件系统保持挂载状态,路径名 dir 就指向 device 上该文件系统的根目录。
列表与帮助。
- 以下三种调用形式实际上不会挂载任何内容:
- mount -h
打印帮助信息
- mount -V
打印版本字符串
- mount [-l] [-t type]
列出所有(类型为 type 的)已挂载的文件系统。选项 -l 会在列表中添加卷标。详见下文。
- 设备指示。
- 大多数设备由文件名(块特殊设备)指示,如 /dev/sda1,但也有其他可能性。例如,在 NFS 挂载的情况下,device 可能看起来像 knuth.cwi.nl:/dir。可以使用块特殊设备的 LABEL(卷标)或 UUID 来指示(见下文 -L 和 -U 选项)。
建议在 /etc/fstab 文件中使用 LABEL=<label> 或 UUID=<uuid> 标签,而不是使用 /dev/disk/by-{label,uuid} udev 符号链接。这些标签更具可读性、健壮性和可移植性。mount(8) 命令内部会使用 udev 符号链接,因此在 /etc/fstab 中使用符号链接相比 LABEL=/UUID= 并没有优势。更多细节请参见 libblkid(3)。
proc 文件系统不与特殊设备关联。挂载它时,可以使用任意关键字(如 proc)代替设备规范。(习惯上使用的 none 并不理想:umount 发出的“none busy”错误信息可能会引起混淆。)
- /etc/fstab、/etc/mtab 和 /proc/mounts 文件。
- 文件 /etc/fstab(参见 fstab(5))可能包含描述通常在何处挂载哪些设备、使用哪些选项的行。
命令
mount -a [-t type] [-O optlist]
- (通常在启动脚本中执行)会将 fstab 中提到的所有文件系统(具有正确的类型和/或满足相应的选项条件)按指示挂载,但包含 noauto 关键字的行除外。添加 -F 选项会使 mount 进行 fork 操作,以便同时挂载文件系统。
当挂载 fstab 或 mtab 中提到的文件系统时,只需提供设备名称或挂载点即可。
mount 和 umount 程序在 /etc/mtab 文件中维护当前已挂载文件系统的列表。如果不给 mount 提供任何参数,则会打印此列表。
如果指定了 device(或 LABEL/UUID)和 dir,mount 程序将不会读取 /etc/fstab 文件。例如:
mount /dev/foo /dir
- 如果您想覆盖 /etc/fstab 中的挂载选项,必须使用:
mount device|dir -o <options>
- 此时,命令行中的挂载选项将附加到 /etc/fstab 中的选项列表中。通常的行为是,如果存在重复选项,以最后一个为准。
当挂载 proc 文件系统(例如挂载在 /proc 上)时,/etc/mtab 和 /proc/mounts 的内容非常相似。前者包含稍多的信息(如所使用的挂载选项),但不一定是最新的(参见下文的 -n 选项)。可以将 /etc/mtab 替换为指向 /proc/mounts 的符号链接,特别是当挂载数量非常多时,这样做会快得多,但会丢失一些信息,特别是使用“user”选项的功能会失效。
- 非超级用户挂载。
- 通常,只有超级用户才能挂载文件系统。但是,如果 fstab 中的行包含 user 选项,则任何人都可以挂载相应的系统。
因此,给定一行:
/dev/cdrom /cd iso9660 ro,user,noauto,unhide
- 任何用户都可以使用以下命令挂载其 CDROM 上的 iso9660 文件系统:
mount /dev/cdrom
- or
mount /cd
- 更多细节,请参见 fstab(5)。只有挂载该文件系统的用户才能将其卸载。如果希望任何用户都能卸载,则在 fstab 行中使用 users 而不是 user。owner 选项类似于 user 选项,但限制用户必须是特殊文件的所有者。这对于 /dev/fd 可能很有用,例如,如果登录脚本使控制台用户成为该设备的所有者。group 选项类似,限制用户必须是特殊文件所在组的成员。
- 绑定挂载。
- 从 Linux 2.4.0 开始,可以将文件层次结构的一部分重新挂载到其他位置。调用方式为:
mount --bind olddir newdir
- 或使用短选项:
mount -B olddir newdir
- 或 fstab 条目为:
/olddir /newdir none bind
- 此调用后,相同的内容可在两个位置访问。也可以重新挂载单个文件。
此调用仅附加单个文件系统的(一部分),不包括子挂载。若要将整个文件层次结构(包括子挂载)附加到第二个位置,请使用:
mount --rbind olddir newdir
- 或使用短选项:
mount -R olddir newdir
- 请注意,文件系统挂载选项将保持与原始挂载点一致,不能通过在 --bind/--rbind 时传递 -o 选项来更改。挂载选项可以通过单独的重新挂载命令更改,例如:
mount --bind olddir newdir
mount -o remount,ro newdir
- 移动操作。
- 从 Linux 2.5.1 开始,可以将已挂载的目录树原子地移动到另一个位置。调用方式为:
mount --move olddir newdir
- 或使用短选项:
mount -M olddir newdir
- 这将使之前出现在 olddir 下的内容现在可在 newdir 下访问。文件的物理位置不会改变。
- 共享子树操作。
- 从 Linux 2.6.15 开始,可以将挂载及其子挂载标记为共享(shared)、私有(private)、从属(slave)或不可绑定(unbindable)。共享挂载允许创建挂载的镜像,使得任何镜像内的挂载和卸载操作都会传播到其他镜像。从属挂载接收来自其主机的传播,但反之则不然。私有挂载不具备任何传播能力。不可绑定挂载是一种私有挂载,不能通过绑定操作进行克隆。详细语义记录在内核源码树的 Documentation/sharedsubtree.txt 文件中。
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 调用所使用的全部挂载选项由以下步骤确定:首先从 fstab 表中提取文件系统的挂载选项,然后应用 -o 参数指定的任何选项,最后在存在时应用 -r 或 -w 选项。
mount 命令可用的命令行选项:
- -V, --version
- 输出版本信息。
- -h, --help
- 打印帮助消息。
- -v, --verbose
- 详细模式。
- -a, --all
- 挂载 fstab 中提到的所有文件系统(指定类型)。
- -F, --fork
- (与 -a 结合使用。)为每个设备派生一个新的 mount 进程。这将并行挂载不同设备或不同 NFS 服务器。优点是速度更快;且 NFS 超时也是并行的。缺点是挂载顺序不确定。因此,如果您想同时挂载 /usr 和 /usr/spool,则不能使用此选项。
- -f, --fake
- 导致执行除实际系统调用之外的所有操作;如果显而易见,这就是“伪造”挂载文件系统。此选项与 -v 标志结合使用,有助于确定 mount 命令试图做什么。它还可以用于为之前使用 -n 选项挂载的设备添加条目。-f 选项会检查 /etc/mtab 中现有的记录,如果记录已存在则会失败(对于常规的非伪造挂载,此检查由内核执行)。
- -i, --internal-only
- 即使 /sbin/mount.<filesystem> 辅助程序存在,也不调用它。
- -l
在挂载输出中添加卷标。为了使其工作,mount 必须具有读取磁盘设备的权限(例如具备 suid root)。可以使用 e2label(8) 工具为 ext2、ext3 或 ext4 设置此类标签,或使用 xfs_admin(8) 为 XFS 设置,或使用 reiserfstune(8) 为 reiserfs 设置。
- -n, --no-mtab
- 执行挂载而不写入 /etc/mtab。例如,当 /etc 位于只读文件系统上时,这是必要的。
- --no-canonicalize
- 不对路径进行规范化。mount 命令会对所有路径(来自命令行或 fstab)进行规范化,并将规范化后的路径存储到 /etc/mtab 文件中。此选项可以与 -f 标志一起用于已经规范化的绝对路径。
- -p, --pass-fd num
- 在带有加密的循环(loop)挂载情况下,从文件描述符 num 而不是终端读取密码短语。
- -s
容忍松散的挂载选项,而不是失败。这将忽略文件系统类型不支持的挂载选项。并非所有文件系统都支持此选项。此选项的存在是为了支持基于 Linux autofs 的自动挂载程序。
- -r, --read-only
- 以只读方式挂载文件系统。同义词为 -o ro。
注意,根据文件系统类型、状态和内核行为,系统仍可能写入设备。例如,Ext3 或 ext4 在文件系统脏时会回放其日志。要防止这种写入访问,您可能需要使用 "ro,noload" 挂载选项挂载 ext3 或 ext4 文件系统,或者将块设备设置为只读模式,参见 blockdev(8) 命令。
- -w, --rw
- 以读写方式挂载文件系统。这是默认设置。同义词为 -o rw。
- -L label
- 挂载具有指定 label(标签)的分区。
- -U uuid
- 挂载具有指定 uuid 的分区。这两个选项要求 /proc/partitions 文件(Linux 2.1.116 后存在)必须存在。
- -t, --types vfstype
- -t 后面的参数用于指示文件系统类型。目前支持的文件系统类型包括:adfs, affs, autofs, cifs, coda, coherent, cramfs, debugfs, devpts, efs, ext, ext2, ext3, ext4, hfs, hfsplus, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, nfs4, ntfs, proc, qnx4, ramfs, reiserfs, romfs, squashfs, smbfs, sysv, tmpfs, ubifs, udf, ufs, umsdos, usbfs, vfat, xenix, xfs, xiafs。注意,coherent、sysv 和 xenix 是等效的,且 xenix 和 coherent 在未来某个时刻将被移除——请改用 sysv。从内核版本 2.1.21 开始,ext 和 xiafs 类型不再存在。之前,usbfs 被称为 usbdevfs。注意,所有支持的文件系统的真实列表取决于您的内核。
mount 和 umount 程序支持文件系统子类型。子类型由 '.subtype' 后缀定义。例如 'fuse.sshfs'。建议使用子类型表示法,而不是在挂载源前添加任何前缀(例如 'sshfs#example.com' 已弃用)。
对于大多数类型,mount 程序只需发出一个简单的 mount(2) 系统调用,而不需要关于文件系统类型的详细知识。但对于少数类型(如 nfs、nfs4、cifs、smbfs、ncpfs),则需要专用的代码。nfs、nfs4、cifs、smbfs 和 ncpfs 文件系统有独立的挂载程序。为了以统一的方式处理所有类型,当 mount 以类型 TYPE 调用时,它会执行程序 /sbin/mount.TYPE(如果存在)。由于不同版本的 smbmount 程序具有不同的调用约定,/sbin/mount.smbfs 可能需要是一个设置所需调用的 shell 脚本。
如果不提供 -t 选项,或者指定了 auto 类型,mount 将尝试猜测所需的类型。Mount 使用 blkid 或 volume_id 库来猜测文件系统类型;如果未发现任何熟悉的内容,mount 将尝试读取文件 /etc/filesystems,如果该文件不存在,则读取 /proc/filesystems。列出的所有文件系统类型都将被尝试,除了那些标记为 "nodev" 的(如 devpts, proc 和 nfs)。如果 /etc/filesystems 以仅包含一个 * 的行结尾,mount 将在之后读取 /proc/filesystems。
auto 类型对于用户挂载软盘可能很有用。创建文件 /etc/filesystems 可用于更改探测顺序(例如在 msdos 之前尝试 vfat,或在 ext2 之前尝试 ext3),或者如果您使用内核模块自动加载程序。警告:探测使用启发式方法(检测特定的“魔数”),可能会识别错误的文件系统类型,从而可能导致灾难性的后果。如果您的数据非常重要,不要让 mount 去猜测。
可以在逗号分隔的列表中指定多个类型。文件系统类型列表可以使用 no 作为前缀,以指定不应采取操作的文件系统类型。(这对于 -a 选项很有意义。)例如,命令:
mount -a -t nomsdos,ext
- 将挂载除 msdos 和 ext 类型以外的所有文件系统。
- -O, --test-opts opts
- 与 -a 结合使用,以限制应用 -a 的文件系统集合。在这方面类似于 -t,但仅在 -a 上下文中使用才有意义。例如,命令:
mount -a -O no_netdev
- 将挂载除 /etc/fstab 文件选项字段中指定了 _netdev 选项以外的所有文件系统。
它与 -t 的不同之处在于每个选项都必须精确匹配;选项开头的 no 不会否定其余部分。
-t 和 -O 选项的效果是累积的;也就是说,命令:
mount -a -t ext2 -O _netdev
- 挂载所有具有 _netdev 选项的 ext2 文件系统,而不是挂载所有是 ext2 或具有 _netdev 选项的文件系统。
- -o, --options opts
- 选项通过 -o 标志后跟逗号分隔的选项字符串来指定。例如:
mount LABEL=mydisk -o noatime,nouser
- 更多详细信息,请参见 与文件系统无关的挂载选项 和 特定文件系统的挂载选项 部分。
- -B, --bind
- 将子树重新挂载到其他位置(使其内容在两处都可用)。参见上文。
- -R, --rbind
- 将子树及其所有可能的子挂载重新挂载到其他位置(使其内容在两处都可用)。参见上文。
- -M, --move
- 将子树移动到其他位置。参见上文。
与文件系统无关的挂载选项
其中一些选项仅在出现在 /etc/fstab 文件中时才有用。
其中一些选项可能在系统内核中被默认启用或禁用。要检查当前设置,请查看 /proc/mounts 中的选项。
以下选项适用于正在挂载的任何文件系统(但并非每个文件系统都会真正遵守它们——例如,sync 选项目前仅对 ext2、ext3、fat、vfat 和 ufs 有效):
- async
对文件系统的所有 I/O 应异步进行。(另请参阅 sync 选项。)
atime
不使用 noatime 特性,inode 访问时间由内核默认值控制。另请参阅 strictatime 和 relatime 挂载选项的说明。
- noatime
- 不更新此文件系统上的 inode 访问时间(例如,为了加快新闻服务器上新闻池的访问速度)。
- auto
可以使用 -a 选项挂载。
noauto
只能显式挂载(即 -a 选项不会导致该文件系统被挂载)。
- context=context, fscontext=context, defcontext=context 和 rootcontext=context
- context= 选项在挂载不支持扩展属性的文件系统时很有用,例如用 VFAT 格式化的软盘或硬盘,或者不运行 SELinux 的系统,例如来自非 SELinux 工作站的 ext3 格式磁盘。您也可以在不信任的文件系统(如软盘)上使用 context=。它还有助于与早期 2.4.<x> 内核版本中支持 xattr 的文件系统保持兼容。即使支持 xattrs,通过为整个磁盘分配一个安全上下文,也可以节省不必为每个文件贴标签的时间。
可移动媒体常用的选项是 context=system_u:object_r:removable_t。
另外两个选项是 fscontext= 和 defcontext=,它们与 context 选项互斥。这意味着您可以同时使用 fscontext 和 defcontext,但不能将其与 context 一起使用。
fscontext= 选项适用于所有文件系统,无论其是否支持 xattr。fscontext 选项将整个文件系统的标签设置为特定的安全上下文。此文件系统标签与文件的单个标签不同。它代表了某些权限检查的文件系统整体,例如在挂载或文件创建期间。单个文件标签仍然从文件本身的 xattrs 获取。context 选项实际上除了为单个文件提供相同的标签外,还设置了 fscontext 提供的聚合上下文。
您可以使用 defcontext= 选项为未加标签的文件设置默认安全上下文。这会覆盖策略中为未加标签文件设置的值,并要求文件系统支持 xattr 标记。
rootcontext= 选项允许您在文件系统或 inode 对用户空间可见之前,显式标记所挂载 FS 的根 inode。这对于无状态 Linux 之类的事物非常有用。
更多细节,请参见 selinux(8)。
- defaults
- 使用默认选项:rw, suid, dev, exec, auto, nouser, async, 和 relatime。
- dev
解释文件系统上的字符或块特殊设备。
nodev
不解释文件系统上的字符或块特殊设备。
- diratime
- 更新此文件系统上的目录 inode 访问时间。这是默认设置。
- nodiratime
- 不更新此文件系统上的目录 inode 访问时间。
- dirsync
- 文件系统内的所有目录更新应同步进行。这会影响以下系统调用:creat, link, unlink, symlink, mkdir, rmdir, mknod 和 rename。
- exec
允许执行二进制文件。
noexec
不允许直接执行挂载文件系统上的任何二进制文件。(直到最近,使用 /lib/ld*.so /mnt/binary 之类的命令仍然可以运行二进制文件。此技巧自 Linux 2.4.25 / 2.6.0 起失效。)
group
如果普通(非 root)用户的某个组与设备的组匹配,则允许该用户挂载文件系统。此选项暗示 nosuid 和 nodev 选项(除非后续选项覆盖,如选项行 group,dev,suid)。
- iversion
- 每次修改 inode 时,i_version 字段都会递增。
- noiversion
- 不递增 i_version inode 字段。
- mand
允许在此文件系统上进行强制锁(mandatory locks)。参见 fcntl(2)。
nomand
不允许在此文件系统上进行强制锁。
- _netdev
- 文件系统位于需要网络访问的设备上(用于防止系统在网络启用之前尝试挂载这些文件系统)。
- nofail
如果设备不存在,不报告错误。
- relatime
- 相对于修改或更改时间更新 inode 访问时间。仅当先前的访问时间早于当前的修改或更改时间时,才会更新访问时间。(类似于 noatime,但不会破坏 mutt 或其他需要知道文件自上次修改后是否被读取的应用程序。)
- norelatime
- 不使用 relatime 特性。另请参阅 strictatime 挂载选项。
- strictatime
- 允许明确请求完整的 atime 更新。这使得内核可以默认采用 relatime 或 noatime,但仍允许用户空间覆盖它。有关默认系统挂载选项的更多详情,请参见 /proc/mounts。
- nostrictatime
- 使用内核对 inode 访问时间更新的默认行为。
- suid
允许 set-user-identifier 或 set-group-identifier 位生效。
- nosuid
不允许 set-user-identifier 或 set-group-identifier 位生效。(这看起来很安全,但如果您安装了 suidperl(1),实际上相当不安全。)
所有者
如果普通(非 root)用户是设备的所有者,则允许该用户挂载文件系统。此选项暗示 nosuid 和 nodev 选项(除非后续选项覆盖,如选项行 owner,dev,suid)。
- remount
- 尝试重新挂载已挂载的文件系统。这通常用于更改文件系统的挂载标志,特别是将只读文件系统变为可写。它不会更改设备或挂载点。
remount 功能遵循 mount 命令处理 fstab 中选项的标准方式。这意味着只有在完全指定了 device 和 dir 时,mount 命令才不会读取 fstab(或 mtab)。
mount -o remount,rw /dev/foo /dir
此调用后,所有旧的挂载选项都被替换,fstab 中的任意内容都被忽略,loop= 选项除外(它是 mount 命令内部生成和维护的)。
mount -o remount,rw /dir
此调用后,mount 会读取 fstab(或 mtab),并将这些选项与命令行中的选项(-o)合并。
- ro
以只读方式挂载文件系统。
- _rnetdev
- 类似于 _netdev,不同之处在于 "fsck -a" 会在 rc.sysinit 期间检查此文件系统。
- rw
以读写方式挂载文件系统。
sync
对文件系统的所有 I/O 应同步进行。对于写入寿命有限的介质(例如某些闪存驱动器),"sync" 可能会导致寿命缩短。
user
允许普通用户挂载文件系统。挂载用户的名称被写入 mtab,以便他可以再次卸载文件系统。此选项暗示 noexec, nosuid 和 nodev 选项(除非后续选项覆盖,如选项行 user,exec,dev,suid)。
nouser
禁止普通(非 root)用户挂载文件系统。这是默认设置。
users
允许每个用户挂载和卸载文件系统。此选项暗示 noexec, nosuid 和 nodev 选项(除非后续选项覆盖,如选项行 users,exec,dev,suid)。
特定文件系统的挂载选项
以下选项仅适用于某些文件系统。我们按文件系统分类。它们都遵循 -o 标志。
支持哪些选项在一定程度上取决于正在运行的内核。更多信息可在内核源码子目录 Documentation/filesystems 中找到。
adfs 的挂载选项
uid=value 和 gid=value
- 设置文件系统中文件的所有者和组(默认:uid=gid=0)。
- ownmask=value 和 othmask=value
- 分别设置 ADFS '所有者' 权限和 '其他' 权限的权限掩码(默认分别为 0700 和 0077)。另请参阅 /usr/src/linux/Documentation/filesystems/adfs.txt。
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 中的此类字符串做出反应。)
cifs 的挂载选项
参见 mount.cifs(8) 手册页的选项部分(必须安装 cifs-utils 软件包)。
coherent 的挂载选项
无。
debugfs 的挂载选项
debugfs 文件系统是一个伪文件系统,传统上挂载在 /sys/kernel/debug 上。没有挂载选项。
devpts 的挂载选项
devpts 文件系统是一个伪文件系统,传统上挂载在 /dev/pts 上。为了获取伪终端,进程打开 /dev/ptmx;伪终端的编号随后对进程可用,伪终端从设备可作为 /dev/pts/<number> 访问。
- uid=value 和 gid=value
- 这会将新创建的 PTY 的所有者或组设置为指定值。如果未指定,它们将被设置为创建进程的 UID 和 GID。例如,如果有一个 GID 为 5 的 tty 组,则 gid=5 将导致新创建的 PTY 属于 tty 组。
- mode=value
- 将新创建的 PTY 的模式设置为指定值。默认值为 0600。mode=620 和 gid=5 的值使 "mesg y" 成为新创建 PTY 的默认设置。
- newinstance
- 创建 devpts 文件系统的私有实例,使得在此新实例中分配的 pty 索引独立于在 devpts 其他实例中创建的索引。
所有没有此 newinstance 选项的 devpts 挂载共享同一组 pty 索引(即传统模式)。每个带有 newinstance 选项的 devpts 挂载都有一组私有的 pty 索引。
此选项主要用于支持 Linux 内核中的容器。它在 2.6.29 及更高版本的 Linux 内核中实现。此外,此挂载选项仅在内核配置中启用了 CONFIG_DEVPTS_MULTIPLE_INSTANCES 时有效。
为了有效地使用此选项,/dev/ptmx 必须是指向 pts/ptmx 的符号链接。详情请参见 Linux 内核源码树中的 Documentation/filesystems/devpts.txt。
- ptmxmode=value
- 为 devpts 文件系统中的新 ptmx 设备节点设置模式。
随着对 devpts 多个实例的支持(见上文 newinstance 选项),每个实例在 devpts 文件系统根目录中都有一个私有的 ptmx 节点(通常为 /dev/pts/ptmx)。
为了与旧版本的内核兼容,新 ptmx 节点的默认模式为 0000。ptmxmode=value 为 ptmx 节点指定了一个更有用的模式,并且在指定 newinstance 选项时强烈推荐使用。
此选项仅在 2.6.29 及更高版本的 Linux 内核中实现。此外,此选项仅在内核配置中启用了 CONFIG_DEVPTS_MULTIPLE_INSTANCES 时有效。
ext 的挂载选项
无。注意,'ext' 文件系统已过时。不要使用它。自 Linux 版本 2.1.21 起,extfs 不再是内核源码的一部分。
ext2 的挂载选项
'ext2' 文件系统是标准的 Linux 文件系统。自 Linux 2.5.46 起,大多数挂载选项的默认值由文件系统超级块决定。使用 tune2fs(8) 设置它们。
- acl|noacl
- 支持(或不支持)POSIX 访问控制列表。
- bsddf|minixdf
- 设置 statfs 系统调用的行为。minixdf 的行为是在 f_blocks 字段中返回文件系统的块总数,而 bsddf 的行为(默认)是减去 ext2 文件系统使用且不可用于存储文件的开销块。因此...
% mount /k -o minixdf; df /k; umount /k Filesystem 1024-blocks Used Available Capacity Mounted on /dev/sda6 2630655 86954 2412169 3% /k % mount /k -o bsddf; df /k; umount /k Filesystem 1024-blocks Used Available Capacity Mounted on /dev/sda6 2543714 13 2412169 0% /k
(注意此示例表明可以将命令行选项添加到 /etc/fstab 中给出的选项中。) - check={none|nocheck}
- 挂载时不进行检查。这是默认设置。此速度快。明智的做法是时不时调用 e2fsck(8),例如在启动时。
- debug
在每次(重新)挂载时打印调试信息。
- errors={continue|remount-ro|panic}
- 定义遇到错误时的行为。(忽略错误,仅标记文件系统错误并继续;或将文件系统重新挂载为只读;或恐慌并停止系统。)默认值设置在文件系统超级块中,可以使用 tune2fs(8) 更改。
- grpid|bsdgroups 和 nogrpid|sysvgroups
- 这些选项定义了新创建文件的组 ID。设置 grpid 时,它采用其所在目录的组 ID;否则(默认)采用当前进程的 fsgid,除非目录设置了 setgid 位,在这种情况下它采用父目录的 gid,并且如果是目录本身,则也会设置 setgid 位。
- grpquota|noquota|quota|usrquota
- 这些选项被接受但会被忽略。
- nobh
不将 buffer_heads 附加到文件页缓存。(自 2.5.49 起。)
- nouid32
- 禁用 32 位 UID 和 GID。这是为了与仅存储和期望 16 位值的旧内核互操作。
- oldalloc 或 orlov
- 对新 inode 使用旧分配器或 Orlov 分配器。Orlov 是默认值。
- resgid=n 和 resuid=n
- ext2 文件系统保留一定百分比的可用空间(默认 5%,见 mke2fs(8) 和 tune2fs(8))。这些选项决定谁可以使用保留块。(大致来说:拥有指定 uid 的人,或属于指定组的人。)
- sb=n
使用块 n 作为超级块,而不是块 1。这在文件系统损坏时可能很有用。(较早时,超级块副本会每 8192 个块制作一次:块 1, 8193, 16385, ...(在大文件系统上得到成千上万个副本)。自 1.08 版起,mke2fs 具有 -s(稀疏超级块)选项以减少备份超级块的数量,自 1.15 版起,这是默认设置。注意,这可能意味着由最近的 mke2fs 创建的 ext2 文件系统无法在 Linux 2.0.* 下以读写方式挂载。)此处的块编号使用 1k 单位。因此,如果您想在具有 4k 块的文件系统上使用逻辑块 32768,请使用 "sb=131072"。
- user_xattr|nouser_xattr
- 支持(或不支持)"user." 扩展属性。
ext3 的挂载选项
ext3 文件系统是 ext2 文件系统的一个版本,增加了日志功能。它支持与 ext2 相同的选项,以及以下添加项:
- journal=update
- 将 ext3 文件系统的日志更新为当前格式。
- journal=inum
- 当日志已存在时,此选项被忽略。否则,它指定将表示 ext3 文件系统日志文件的 inode 编号;ext3 将创建一个新日志,覆盖 inode 编号为 inum 的文件的旧内容。
- journal_dev=devnum
- 当外部日志设备的主/次编号发生变化时,此选项允许用户指定新的日志位置。日志设备通过 devnum 中编码的新主/次编号来标识。
- norecovery/noload
- 挂载时不加载日志。注意,如果文件系统未干净卸载,跳过日志回放将导致文件系统包含不一致性,从而导致各种问题。
- data={journal|ordered|writeback}
- 指定文件数据的日志记录模式。元数据始终被记录。要在根文件系统上使用 ordered 以外的模式,请将该模式作为启动参数传递给内核,例如 rootflags=data=journal。
- journal
所有数据在写入主文件系统之前都会提交到日志中。
- ordered
这是默认模式。所有数据在元数据提交到日志之前被强制直接写入主文件系统。
- writeback
不保留数据顺序——数据可能在元数据提交到日志后才写入主文件系统。据传这是吞吐量最高的选项。它保证了内部文件系统的完整性,但在崩溃和日志恢复后,可能允许旧数据出现在文件中。
- barrier=0 / barrier=1
- 这会启用/禁用屏障。barrier=0 禁用,barrier=1 启用。写入屏障强制执行日志提交的正确磁盘顺序,使得易失性磁盘写入缓存可以安全使用,但会有一些性能损失。ext3 文件系统默认启用写入屏障。除非您的磁盘以某种方式由电池备份,否则请务必启用屏障。否则在电源故障时,您会面临文件系统损坏的风险。
- commit=nrsec
- 每 nrsec 秒同步所有数据和元数据。默认值为 5 秒。零表示默认值。
- user_xattr
- 启用扩展用户属性。参见 attr(5) 手册页。
- acl
启用 POSIX 访问控制列表。参见 acl(5) 手册页。
ext4 的挂载选项
ext4 文件系统是 ext3 文件系统的进阶版本,整合了扩展性和可靠性增强功能以支持大文件系统。
journal_dev, noload, data, commit, orlov, oldalloc, [no]user_xattr [no]acl, bsddf, minixdf, debug, errors, data_err, grpid, bsdgroups, nogrpid sysvgroups, resgid, resuid, sb, quota, noquota, grpquota, usrquota 和 [no]bh 选项与 ext3 或 ext2 向后兼容。
- journal_checksum
- 启用日志事务的校验和。这将允许 e2fsck 中的恢复代码和内核检测内核中的损坏。这是一个兼容的更改,旧内核将忽略它。
- journal_async_commit
- 提交块可以在不等待描述符块的情况下写入磁盘。如果启用,旧内核将无法挂载该设备。这将启用...
- journal=update
- 将 ext4 文件系统的日志更新为当前格式。
- barrier=0 / barrier=1 / barrier / nobarrier
- 这会启用/禁用 jbd 代码中写入屏障的使用。barrier=0 禁用,barrier=1 启用。这还需要支持屏障的 IO 堆栈,如果 jbd 在屏障写入时遇到错误,它会再次禁用并发出警告。写入屏障强制执行日志提交的正确磁盘顺序,使得易失性磁盘写入缓存可以安全使用,会有一些性能损失。如果您的磁盘以某种方式由电池备份,禁用屏障可能会安全地提高性能。为了与其他 ext4 挂载选项保持一致,也可以使用挂载选项 "barrier" 和 "nobarrier" 来启用或禁用屏障。
ext4 文件系统默认启用写入屏障。
- inode_readahead_blks=n
- 此调整参数控制 ext4 inode 表预读算法将预读取到缓冲区缓存中的 inode 表块的最大数量。该值必须是 2 的幂。默认值为 32 块。
- stripe=n
- mballoc 将尝试用于分配大小和对齐的文件系统块数量。对于 RAID5/6 系统,这应该是数据磁盘数量 * RAID 块大小(以文件系统块为单位)。
- delalloc
- 将块分配推迟到写入时。
- nodelalloc
- 禁用延迟分配。块在数据从用户复制到页缓存时分配。
- max_batch_time=usec
- ext4 应等待将额外的文件系统操作与同步写操作批量处理的最大时间。由于同步写操作将强制提交并等待 I/O 完成,成本不大,且可能是巨大的吞吐量收益,我们等待一小段时间看看是否有任何其他事务可以搭载该同步写操作。使用的算法旨在通过测量完成事务提交所花费的时间(平均值)来自动针对磁盘速度进行调优。将此时间称为“提交时间”。如果事务已运行的时间少于提交时间,ext4 将尝试睡眠提交时间,看是否有其他操作加入事务。提交时间由 max_batch_time 限制,默认为 15000us(15ms)。通过将 max_batch_time 设置为 0,可以完全关闭此优化。
- min_batch_time=usec
- 此参数将提交时间(如上所述)设置为至少 min_batch_time。默认值为 0 微秒。增加此参数可能会在非常快的磁盘上提高多线程同步工作负载的吞吐量,代价是增加延迟。
- journal_ioprio=prio
- 在提交操作期间用于 kjournald2 提交的 I/O 操作的 I/O 优先级(从 0 到 7,0 为最高优先级)。默认值为 3,这比默认 I/O 优先级稍高。
- abort
出于调试目的,模拟调用 ext4_abort() 的效果。这通常在重新挂载已挂载的文件系统时使用。
- auto_da_alloc|noauto_da_alloc
- 许多损坏的应用程序在通过以下模式替换现有文件时不使用 fsync():
fd = open("foo.new")/write(fd,..)/close(fd)/ rename("foo.new", "foo")
或者更糟:
fd = open("foo", O_TRUNC)/write(fd,..)/close(fd)。
如果启用了 auto_da_alloc,ext4 将检测 replace-via-rename 和 replace-via-truncate 模式,并强制分配任何延迟分配的块,使得在下一次日志提交时,在默认的 data=ordered 模式下,新文件的数据块在 rename() 操作提交之前被强制写入磁盘。这提供了与 ext3 大致相同的保证级别,并避免了在系统崩溃且延迟分配块被强制写入磁盘之前可能发生的“零长度”问题。
- discard/nodiscard
- 控制当块被释放时,ext4 是否应向底层块设备发出 discard/TRIM 命令。这对于 SSD 设备和稀疏/精简配置的 LUN 很有用,但在进行充分测试之前,默认情况下它是关闭的。
- nouid32
- 禁用 32 位 UID 和 GID。这是为了与仅存储和期望 16 位值的旧内核互操作。
- resize
允许将文件系统调整为最后一个现有块组的末尾,进一步调整必须通过 resize2fs 在线或离线完成。它只能与 remount 结合使用。
- block_validity/noblock_validity
- 此选项允许启用/禁用用于跟踪内部数据结构中文件系统元数据块的内核内设施。这允许块分配器和其他例程快速定位可能与文件系统元数据块重叠的范围。此选项旨在用于调试目的,由于它会对性能产生负面影响,因此默认情况下处于关闭状态。
- dioread_lock/dioread_nolock
- 控制 ext4 是否应使用 DIO 读取锁定。如果指定了 dioread_nolock 选项,ext4 将在缓冲区写入之前分配未初始化的范围,并在 I/O 完成后将该范围转换为已初始化。这种方法允许 ext4 代码避免使用 inode 互斥锁,从而提高了在高速存储器上的扩展性。但是,这不适用于 nobh 选项,挂载将失败。它也不适用于数据日志记录,dioread_nolock 选项将被忽略并发出内核警告。注意,dioread_nolock 代码路径仅用于基于范围(extent)的文件。由于此选项包含的限制,它默认情况下处于关闭状态(即 dioread_lock)。
- i_version
- 启用 64 位 inode 版本支持。此选项默认情况下处于关闭状态。
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 的权限检查。
- 20
如果当前进程在文件的组 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={b[inary]|t[ext]|a[uto]}
- fat 文件系统可以在内核中执行 CRLF<-->NL(MS-DOS 文本格式到 UNIX 文本格式)转换。提供以下转换模式:
- 二进制
不执行转换。这是默认设置。
text
对所有文件执行 CRLF<-->NL 转换。
auto
对所有没有“知名二进制”扩展名的文件执行 CRLF<-->NL 转换。已知扩展名的列表可以在 fs/fat/misc.c 的开头找到(截至 2.0 版,列表为:exe, com, bin, app, sys, drv, ovl, ovr, obj, lib, dll, pif, arc, zip, lha, lzh, zoo, tar, z, arj, tz, taz, tzp, tpz, gz, tgz, deb, gif, bmp, tif, gl, jpg, pcx, tfm, vf, gf, pk, pxl, dvi)。
- 执行计算 lseek 的程序不会喜欢内核内文本转换。有些人因为这种转换而数据遭到破坏。小心!
对于以二进制模式挂载的文件系统,可以使用转换工具 (fromdos/todos)。此选项已过时。
- cvf_format=module
- 强制驱动程序使用 CVF(压缩卷文件)模块 cvf_module 而不是自动检测。如果内核支持 kmod,cvf_format=xxx 选项也控制按需加载 CVF 模块。此选项已过时。
- cvf_option=option
- 传递给 CVF 模块的选项。此选项已过时。
- debug
开启 debug 标志。将打印版本字符串和文件系统参数列表(如果参数看起来不一致,也会打印此数据)。
- fat={12|16|32}
- 指定 12、16 或 32 位 fat。这会覆盖自动 FAT 类型检测程序。请谨慎使用!
- iocharset=value
- 用于在 8 位字符和 16 位 Unicode 字符之间转换的字符集。默认值为 iso8859-1。长文件名以 Unicode 格式存储在磁盘上。
- tz=UTC
此选项禁用本地时间(Windows 在 FAT 上使用)和 UTC(Linux 内部使用)之间的时间戳转换。当挂载设置为 UTC 的设备(如数码相机)时,这特别有用,以避免本地时间的陷阱。
quiet
开启 quiet 标志。尝试 chown 或 chmod 文件不会返回错误,即使它们失败了。请谨慎使用!
- 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 查找器用于创建新文件时显示的 creator/type 值。默认值:'????'。
- 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={binary|text|auto}
- 对于 conv=text,读取文件时删除一些随机 CR(特别是所有后跟 NL 的 CR)。对于 conv=auto,在 conv=binary 和 conv=text 之间随机选择。对于 conv=binary,仅读取文件中的内容。这是默认设置。
- 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 卷,正常名称转换将大写映射为小写 ASCII,删除尾随的 ';1',并将 ';' 转换为 '.'。使用 map=off 时不进行名称转换。参见 norock。(默认:map=normal。)map=acorn 类似于 map=normal,但如果存在,也应用 Acorn 扩展。
- mode=value
- 对于非 Rock Ridge 卷,为所有文件赋予指定的模式。(默认:所有人的读取权限。)自 Linux 2.1.37 起,不再需要以十进制指定模式。(八进制由前导 0 指示。)
- unhide
同时显示隐藏和关联文件。(如果常规文件与关联或隐藏文件具有相同的文件名,这可能会导致常规文件无法访问。)
- block={512|1024|2048}
- 将块大小设置为指定值。(默认:block=1024。)
- conv={a[uto]|b[inary]|m[text]|t[ext]}
- (默认:conv=binary。)自 Linux 1.3.54 起,此选项不再生效。(非二进制设置曾经非常危险,可能导致数据静默损坏。)
- cruft
如果文件长度的高字节包含其他垃圾数据,请设置此挂载选项以忽略文件长度的高位。这意味着文件不能大于 16MB。
- session=x
- 选择多会话 CD 上的会话编号。(自 2.3.4 起。)
- sbsector=xxx
- 会话从扇区 xxx 开始。(自 2.3.4 起。)
- 以下选项与 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
- 将卷调整为 value 个块。JFS 仅支持扩大卷,不支持收缩。此选项仅在重新挂载且卷以读写方式挂载时有效。不带值的 resize 关键字会将卷扩大到分区的全部大小。
- nointegrity
- 不写入日志。此选项的主要用途是在从备份介质恢复卷时允许更高的性能。如果系统异常中止,则无法保证卷的完整性。
- integrity
- 默认。将元数据更改提交到日志。使用此选项重新挂载先前指定了 nointegrity 选项的卷,以恢复正常行为。
- errors={continue|remount-ro|panic}
- 定义遇到错误时的行为。(忽略错误,仅标记文件系统错误并继续;或将文件系统重新挂载为只读;或恐慌并停止系统。)
- noquota|quota|usrquota|grpquota
- 这些选项被接受但会被忽略。
minix 的挂载选项
无。
msdos 的挂载选项
参见 fat 的挂载选项。如果 msdos 文件系统检测到不一致,它会报告错误并将文件系统设置为只读。通过重新挂载,文件系统可以再次变为可写。
ncpfs 的挂载选项
就像 nfs 一样,ncpfs 实现期望一个二进制参数(一个 struct ncp_mount_data)传递给 mount 系统调用。此参数由 ncpmount(8) 构建,当前的 mount (2.12) 版本对 ncpfs 一无所知。
nfs 和 nfs4 的挂载选项
参见 nfs(5) 手册页的选项部分(必须安装 nfs-utils 软件包)。
nfs 和 nfs4 实现期望一个二进制参数(一个 struct nfs_mount_data)传递给 mount 系统调用。此参数由 mount.nfs(8) 构建,当前的 mount (2.13) 版本对 nfs 和 nfs4 一无所知。
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 拥有,其他人不可读。
proc 的挂载选项
uid=value 和 gid=value
- 这些选项被识别,但据我所知没有效果。
ramfs 的挂载选项
Ramfs 是一个基于内存的文件系统。挂载它,您就拥有了它。卸载它,它就消失了。自 Linux 2.3.99pre4 起存在。没有挂载选项。
reiserfs 的挂载选项
Reiserfs 是一个日志文件系统。
- conv
指示版本 3.6 reiserfs 软件挂载版本 3.5 文件系统,使用 3.6 格式处理新创建的对象。此文件系统将不再与 reiserfs 3.5 工具兼容。
- hash={rupasov|tea|r5|detect}
- 选择 reiserfs 将用于查找目录内文件的哈希函数。
- rupasov
由 Yury Yu. Rupasov 发明的哈希。它速度快且保留局部性,将字典顺序相近的文件名映射到相近的哈希值。不应使用此选项,因为它会导致很高的哈希冲突概率。
- tea
由 Jeremy Fitzhardinge 实现的 Davis-Meyer 函数。它使用名称中的哈希置换位。它在一定的 CPU 成本下获得了很高的随机性,因此哈希冲突概率很低。如果在 r5 哈希上遇到 EHASHCOLLISION 错误,可以使用此选项。
r5
rupasov 哈希的修改版本。它是默认使用的,除非文件系统具有巨大的目录和不寻常的文件名模式,否则是最佳选择。
detect
指示 mount 通过检查正在挂载的文件系统来检测正在使用哪个哈希函数,并将此信息写入 reiserfs 超级块。这仅在旧格式文件系统的第一次挂载时有用。
- hashed_relocation
- 调整块分配器。这可能会在某些情况下提供性能改进。
- no_unhashed_relocation
- 调整块分配器。这可能会在某些情况下提供性能改进。
- noborder
- 禁用 Yury Yu. Rupasov 发明的边界分配器算法。这可能会在某些情况下提供性能改进。
- nolog
禁用日志记录。这会在某些情况下提供轻微的性能改进,代价是失去 reiserfs 从崩溃中快速恢复的能力。即使开启此选项,reiserfs 仍然会执行所有日志操作,除了实际写入其日志区域的操作。nolog 的实现仍在进行中。
notail
默认情况下,reiserfs 将小文件和 '文件尾部' 直接存储到其树中。这会使 lilo(8) 等一些实用程序感到困惑。此选项用于禁用将文件打包到树中。
- replayonly
- 回放日志中的事务,但不实际挂载文件系统。主要由 reiserfsck 使用。
- resize=number
- 一个重新挂载选项,允许在线扩展 reiserfs 分区。指示 reiserfs 假设设备有 number 个块。此选项专为使用逻辑卷管理 (LVM) 的设备而设计。有一个特殊的 resizer 实用程序可以从 ftp://ftp.namesys.com/pub/reiserfsprogs 获取。
- user_xattr
- 启用扩展用户属性。参见 attr(5) 手册页。
- acl
启用 POSIX 访问控制列表。参见 acl(5) 手册页。
- barrier=none / barrier=flush
- 这会启用/禁用日志代码中写入屏障的使用。barrier=none 禁用,barrier=flush 启用。写入屏障强制执行日志提交的正确磁盘顺序,使得易失性磁盘写入缓存可以安全使用,会有一些性能损失。reiserfs 文件系统默认不启用写入屏障。除非您的磁盘以某种方式由电池备份,否则请务必启用屏障。否则在电源故障时,您会面临文件系统损坏的风险。
romfs 的挂载选项
无。
squashfs 的挂载选项
无。
smbfs 的挂载选项
就像 nfs 一样,smbfs 实现期望一个二进制参数(一个 struct smb_mount_data)传递给 mount 系统调用。此参数由 smbmount(8) 构建,当前的 mount (2.12) 版本对 smbfs 一无所知。
sysv 的挂载选项
无。
tmpfs 的挂载选项
size=nbytes
- 覆盖文件系统的默认最大大小。大小以字节为单位,向上取整为完整页。默认值是内存的一半。size 参数还接受后缀 %,以限制此 tmpfs 实例为物理 RAM 的百分比:如果不指定 size 或 nr_blocks,则默认为 size=50%。
- nr_blocks=
- 与 size 相同,但单位为 PAGE_CACHE_SIZE 的块。
- nr_inodes=
- 此实例的最大 inode 数量。默认值是物理 RAM 页数的一半,或者(在具有 highmem 的机器上)低端 RAM 页数,取两者中的较小者。
- 用于大小调整的 tmpfs 挂载选项(size, nr_blocks 和 nr_inodes)接受后缀 k, m 或 g,分别表示 Ki, Mi, Gi(二进制千、兆和吉),并且可以在重新挂载时更改。
- mode=
设置根目录的初始权限。
uid=
用户 ID。
gid=
组 ID。
- mpol=[default|prefer:Node|bind:NodeList|interleave|interleave:NodeList]
- 为该实例中的所有文件设置 NUMA 内存分配策略(如果启用了内核 CONFIG_NUMA)——可以通过 'mount -o remount ...' 在运行时调整。
- default
倾向于从本地节点分配内存。
- prefer:Node
倾向于从给定节点分配内存。
- bind:NodeList
仅从 NodeList 中的节点分配内存。
- 交错
倾向于依次从每个节点分配。
- interleave:NodeList
依次从 NodeList 的每个节点分配。
- NodeList 格式是十进制数字和范围的逗号分隔列表,范围是两个连字符分隔的十进制数字,分别是范围中的最小和最大节点编号。例如,mpol=bind:0-3,5,7,9-15
注意,如果正在运行的内核不支持 NUMA,则尝试使用 mpol 选项挂载 tmpfs 将失败;如果其节点列表指定了未在线的节点,也会失败。如果您的系统依赖于挂载的 tmpfs,但时不时运行没有 NUMA 功能的内核(例如安全的恢复内核),或者在线节点较少,那么建议从自动挂载选项中省略 mpol 选项。它可以在 tmpfs 已经挂载到 MountPoint 后,通过 'mount -o remount,mpol=Policy:NodeList MountPoint' 稍后添加。
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 是由光学存储技术协会定义的“通用磁盘格式”文件系统,通常用于 DVD-ROM。另请参阅 iso9660。
- gid=
设置默认组。
umask=
设置默认 umask。该值以八进制给出。
uid=
设置默认用户。
unhide
显示否则会被隐藏的文件。
- undelete
- 在列表中显示已删除的文件。
- nostrict
- 取消严格一致性检查。
- iocharset
- 设置 NLS 字符集。
- bs=
设置块大小。(除非设为 2048,否则可能无法工作。)
novrs
跳过卷序列识别。
- session=
- 设置从 0 开始计数的 CDROM 会话。默认:最后一个会话。
- anchor=
- 覆盖标准锚点位置。默认:256。
- volume=
- 覆盖 VolumeDesc 位置。(未使用)
- partition=
- 覆盖 PartitionDesc 位置。(未使用)
- lastblock=
- 设置文件系统的最后一个块。
- fileset=
- 覆盖文件集块位置。(未使用)
- rootdir=
- 覆盖根目录位置。(未使用)
ufs 的挂载选项
ufstype=value
- UFS 是一种在不同操作系统中广泛使用的文件系统。问题在于各实现之间存在差异。某些实现的特性未被记录,因此很难自动识别 ufs 的类型。这就是为什么用户必须通过挂载选项指定 ufs 类型的原因。可选值如下:
- old
UFS 的旧格式,这是默认值,只读。(别忘了加上 -r 选项。)
44bsd
用于由类 BSD 系统(NetBSD, FreeBSD, OpenBSD)创建的文件系统。
sun
用于由 SunOS 或 Solaris 在 Sparc 架构上创建的文件系统。
sunx86
用于由 Solaris 在 x86 架构上创建的文件系统。
hp
用于由 HP-UX 创建的文件系统,只读。
- nextstep
用于由 NeXTStep(在 NeXT 工作站上)创建的文件系统(目前为只读)。
- nextstep-cd
用于 NextStep CDROM(块大小 == 2048),只读。
- openstep
用于由 OpenStep 创建的文件系统(目前为只读)。Mac OS X 也使用相同的文件系统类型。
- onerror=value
- 设置错误时的行为
- panic
如果遇到错误,引发内核恐慌(kernel 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 是控制台使用的文件系统安全 8 位 Unicode 编码。可以通过此选项为文件系统启用,或通过 utf8=0、utf8=no 或 utf8=false 禁用。如果设置了 'uni_xlate',则 UTF8 被禁用。
- shortname={lower|win95|winnt|mixed}
- 定义适合 8.3 字符的文件名在创建和显示时的行为。如果存在长文件名,它将始终优先显示。共有四种模式:
- lower
显示时强制短名称为小写;当短名称不全为大写时存储长名称。此模式为默认模式。
win95
显示时强制短名称为大写;当短名称不全为大写时存储长名称。
winnt
按原样显示短名称;当短名称不全为小写或不全为大写时存储长名称。
混合
按原样显示短名称;当短名称不全为大写时存储长名称。
usbfs 的挂载选项
devuid=uid、devgid=gid 和 devmode=mode
- 设置 usbfs 文件系统中设备文件的所有者、组和模式(默认:uid=gid=0,mode=0644)。模式以八进制给出。
- busuid=uid、busgid=gid 和 busmode=mode
- 设置 usbfs 文件系统中总线目录的所有者、组和模式(默认:uid=gid=0,mode=0555)。模式以八进制给出。
- listuid=uid、listgid=gid 和 listmode=mode
- 设置文件 devices 的所有者、组和模式(默认:uid=gid=0,mode=0444)。模式以八进制给出。
xenix 的挂载选项
无。
xfs 的挂载选项
allocsize=size
- 设置执行延迟分配写入时缓冲 I/O 文件末尾的预分配大小(默认大小为 64KiB)。此选项的有效值为页大小(通常为 4KiB)到 1GiB(包含),按 2 的幂递增。
- attr2|noattr2
- 这些选项启用/禁用(默认启用)一种“机会性”改进,即内联扩展属性在磁盘上的存储方式。当新格式首次使用时(通过设置或移除扩展属性),磁盘上的超级块特性位字段将被更新以反映该格式正在使用中。
- barrier
- 启用对日志写入和未写入范围转换使用块层写入屏障。对于支持写入屏障的设备,这允许启用驱动器级写入缓存。
- dmapi
启用 DMAPI(数据管理 API)事件回调。与 mtpt 选项一起使用。
- grpid|bsdgroups 和 nogrpid|sysvgroups
- 这些选项定义新创建的文件获得什么组 ID。设置 grpid 时,它采用创建它所在的目录的组 ID;否则(默认)它采用当前进程的 fsgid,除非目录设置了 setgid 位,在这种情况下它采用父目录的 gid,如果它本身是目录,也会获得 setgid 位。
- ihashsize=value
- 设置可用于散列指定挂载点内存中 inode 的散列桶数量。如果使用零值,默认算法选择的值将显示在 /proc/mounts 中。
- ikeep|noikeep
- 当 inode 集群清空 inode 时,将其保留在磁盘上(ikeep)——这是传统的 XFS 行为,目前仍然是默认设置。使用 noikeep 选项,inode 集群将返回到空闲空间池。
- inode64
- 指示 XFS 被允许在文件系统中的任何位置创建 inode,包括那些会导致 inode 编号占用超过 32 位有效位的位置。这是为了向后兼容,但会导致无法处理大 inode 编号的备份应用程序出现问题。
- largeio|nolargeio
- 如果指定了 nolargeio,stat(2) 报告的 st_blksize 中的最佳 I/O 将尽可能小,以允许用户应用程序避免低效的读/改/写 I/O。如果指定了 largeio,具有 swidth 指定的文件系统将在 st_blksize 中返回 swidth 值(以字节为单位)。如果文件系统未指定 swidth 但指定了 allocsize,则返回 allocsize(以字节为单位)。如果未指定这两个选项中的任何一个,文件系统将表现得好像指定了 nolargeio 一样。
- logbufs=value
- 设置内存中日志缓冲区的数量。有效数字范围为 2-8(包含)。块大小为 64KiB 的文件系统的默认值为 8 个缓冲区,32KiB 的为 4 个,16KiB 的为 3 个,所有其他配置为 2 个。增加缓冲区数量可能会在某些工作负载下提高性能,但代价是为额外的日志缓冲区及其相关控制结构使用内存。
- logbsize=value
- 设置每个内存中日志缓冲区的大小。大小可以用字节指定,或者用带有“k”后缀的千字节指定。版本 1 和版本 2 日志的有效大小为 16384 (16k) 和 32768 (32k)。版本 2 日志的有效大小还包括 65536 (64k)、131072 (128k) 和 262144 (256k)。内存超过 32MiB 的机器的默认值为 32768,内存较少的机器默认使用 16384。
- logdev=device 和 rtdev=device
- 使用外部日志(元数据日志)和/或实时设备。XFS 文件系统最多有三个部分:数据部分、日志部分和实时部分。实时部分是可选的,日志部分可以与数据部分分开或包含在其中。请参阅 xfs(5)。
- mtpt=mountpoint
- 与 dmapi 选项一起使用。此处指定的值将包含在 DMAPI 挂载事件中,并且应该是所使用的实际挂载点的路径。
- noalign
- 数据分配将不会在条带单元边界上对齐。
- noatime
- 读取文件时不会更新访问时间戳。
- norecovery
- 文件系统挂载时将不运行日志恢复。如果文件系统不是干净卸载的,以 norecovery 模式挂载时它很可能是不一致的。因此,某些文件或目录可能无法访问。以 norecovery 挂载的文件系统必须以只读方式挂载,否则挂载将失败。
- nouuid
不使用文件系统 UUID 检查重复挂载的文件系统。这对于挂载 LVM 快照卷很有用。
- osyncisosync
- 使 O_SYNC 写入实现真正的 O_SYNC。如果没有此选项,Linux XFS 的表现就像使用了 osyncisdsync 选项,这将使设置了 O_SYNC 标志的文件的写入操作表现得如同使用了 O_DSYNC 标志。这可以在不牺牲数据安全性的前提下提高性能。然而,如果此选项未生效,系统崩溃时可能会丢失 O_SYNC 写入产生的时间戳更新。如果时间戳更新至关重要,请使用 osyncisosync 选项。
- uquota|usrquota|uqnoenforce|quota
- 启用用户磁盘配额核算,并(可选)强制执行限制。请参阅 xfs_quota(8) 了解详情。
- gquota|grpquota|gqnoenforce
- 启用组磁盘配额核算,并(可选)强制执行限制。请参阅 xfs_quota(8) 了解详情。
- pquota|prjquota|pqnoenforce
- 启用项目磁盘配额核算,并(可选)强制执行限制。请参阅 xfs_quota(8) 了解详情。
- sunit=value 和 swidth=value
- 用于指定 RAID 设备或条带卷的条带单元和宽度。value 必须以 512 字节块为单位指定。如果未指定此选项,且文件系统是在条带卷上制作的,或者在 mkfs 时为 RAID 设备指定了条带宽度或单元,则 mount 系统调用将从超级块恢复该值。对于直接在 RAID 设备上制作的文件系统,如果文件系统创建后底层磁盘布局发生变化,这些选项可用于覆盖超级块中的信息。如果指定了 sunit 选项,则必须指定 swidth 选项,且该值必须是 sunit 值的倍数。
- swalloc
- 当当前文件结束符正在扩展且文件大小大于条带宽度时,数据分配将向上取整到条带宽度边界。
xiafs 的挂载选项
无。虽然 xiafs 没有什么问题,但它用得不多,也没有人维护。大概不应该使用它。自 Linux 2.1.21 版本以来,xiafs 已不再是内核源代码的一部分。
循环设备 (The Loop Device)
另一种可能的类型是通过循环设备挂载。例如,命令
mount /tmp/fdimage /mnt -t vfat -o loop=/dev/loop3将设置循环设备 /dev/loop3 以对应文件 /tmp/fdimage,然后将此设备挂载到 /mnt 上。
这种挂载类型支持四个选项,即 loop、offset、sizelimit 和 encryption,它们实际上是 losetup(8) 的选项。(这些选项可以与文件系统类型特有的选项结合使用。)
如果没有提到显式的循环设备(只给出了一个 '-o loop' 选项),那么 mount 将尝试找到一些未使用的循环设备并使用它。
自 Linux 2.6.25 起支持自动销毁循环设备,此后 mount 分配的任何循环设备都将由 umount 释放,而与 /etc/mtab 无关。
你也可以使用 'losetup -d' 或 'umount -d' 手动释放循环设备。
返回值
mount 具有以下返回代码(这些位可以进行 OR 运算)
- 0
成功
1
错误的调用或权限
2
系统错误(内存不足、无法 fork、没有更多循环设备)
4
内部 mount 错误
8
用户中断
16
写入或锁定 /etc/mtab 时出错
32
挂载失败
64
部分挂载成功
说明
外部挂载助手的语法是
- /sbin/mount.<suffix> spec dir [-sfnv] [-o options] [-t type.subtype]
- 其中 <type> 是文件系统类型,-sfnvo 选项具有与标准挂载选项相同的含义。-t 选项用于支持子类型的文件系统(例如 /sbin/mount.fuse -t fuse.sshfs)。
文件
- /etc/fstab
文件系统表
/etc/mtab
已挂载文件系统表
/etc/mtab~
锁定文件
/etc/mtab.tmp
临时文件
/etc/filesystems
要尝试的文件系统类型列表
参见
mount(2), umount(2), fstab(5), umount(8), swapon(8), nfs(5), xfs(5), e2label(8), xfs_admin(8), mountd(8), nfsd(8), mke2fs(8), tune2fs(8), losetup(8)
错误
损坏的文件系统可能会导致崩溃。
某些 Linux 文件系统不支持 -o sync 和 -o dirsync(ext2、ext3、fat 和 vfat 文件系统在挂载时使用 sync 选项时确实支持同步更新(类似于 BSD))。
-o remount 可能无法更改挂载参数(例如,所有 ext2fs 特有的参数(除了 sb)都可以通过重新挂载进行更改,但你不能更改 fatfs 的 gid 或 umask)。
按标签或 UUID 挂载仅当你的设备具有列在 /proc/partitions 中的名称时才有效。特别是,如果内核是用 devfs 编译的但未挂载 devfs,它很可能会失败。
/etc/mtab 和 /proc/mounts 文件可能不匹配。第一个文件仅基于 mount 命令选项,但第二个文件的内容还取决于内核和其他设置(例如远程 NFS 服务器。在特定情况下,mount 命令可能会报告关于 NFS 挂载点不可靠的信息,而 /proc/mounts 文件通常包含更可靠的信息。)
即使使用 noac,由于内核中缺乏一致性检查,检查文件描述符引用(即 fcntl 和 ioctl 函数族)的文件在 NFS 文件系统上可能会导致结果不一致。
历史
在 Version 5 AT&T UNIX 中就存在 mount 命令。
可用性
mount 命令是 util-linux-ng 软件包的一部分,可从 ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/ 获取。