MOUNT(8)

NAME
mount - 挂载文件系统

SYNOPSIS 总览
mount [-lhV]

mount -a [-fFnrsvw] [-t vfstype] [-O optlist]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir

DESCRIPTION 描述
Unix 系统中，所有可以存取的文件都被组织为一个很大的树形结构，称为文件层次结构 (file hierarchy)，以 / 为根。这些文件可以分布在多个设备上。 mount 命令用作将设备上的文件系统挂接到这个树形结构上。相反， umount(8) 命令用于将它分离。

mount 命令的标准格式，是
    mount -t type device dir
这样做告诉内核将 device 中的文件系统 (文件系统类型是 type) 挂接到目录 dir 。目录 dir 中以前的内容 (如果有的话) 以及它的所有者和模式都不再可见，只要这个文件系统仍然处于挂载状态。路径名 dir 仅指向 device 中的文件系统的根。

有三种运行方式不会真正执行挂载动作：
    mount -h
输出帮助信息；
    mount -V
输出版本信息；以及只输入
    mount [-l] [-t type]
列出所有已挂载的文件系统 (类型是 type)。 选项 -l 将在列表中加入 (ext2, ext3 和 XFS) 卷标。参见下面。 从 Linux 2.4.0 开始，可以将文件层次的一部分重新挂载到其他地方。调用的方法是
    mount --bind olddir newdir
运行之后，可以从两个位置访问到相同的内容。 这种方式只挂接单一的文件系统 (的一部分)，在其中挂载的其他文件系统不会被挂接到新访问点。如果要在新访问点挂接完整的文件层次结构，使用
    mount --rbind olddir newdir
注意文件系统挂载选项与初始挂载时相同，不能与 --bind/--rbind 同时使用 -o 选项来改变它们。 从 Linux 2.5.1 开始，可以完整地将一个子树移动到另一个位置。调用的方法是
    mount --move olddir newdir
proc 文件系统不关联到特定的设备，在挂载的时候，可以使用任意的符号，例如 proc 来代替设备部分。(通常的选择是 none ，但这是不明智的： umount 的错误提示消息 `none busy' 可能带来迷惑。) 大多数设备以 (块设备的) 文件名指代，例如 /dev/sda1， 但是也有其他的可能，例如，在挂载 NFS 时， device 可能看上去像是 knuth.cwi.nl:/dir 。可以用块设备的卷标或 UUID 来指代设备 (参见下面的 -L 和 -U 选项)。 文件 /etc/fstab (参见 fstab(5))， 包含着描述哪些设备应当挂载到什么地方，使用哪些选项的行。这个文件有三种用法：

(i) 命令
    mount -a [-t type] [-O optlist]
(通常在启动脚本中调用) 使得 fstab 中提到的所有文件系统 (只要有合适的类型和参数) 被按照指示挂载，除非行中包含了关键字 noauto。参数 -F 将使 mount 产生 (fork) 新进程，从而使得文件系统可以同时被挂载。

(ii) 当挂载 fstab 中提到的文件系统时，只要给出设备，或者只给出挂载点就可以了。

(iii) 通常，只有超级用户可以挂载文件系统。但是，如果 fstab 的行中包含选项 user， 那么任何人都可以挂载相应的文件系统。

因此，假如有一行是
    /dev/cdrom /cd iso9660 ro,user,noauto,unhide
那么任何人都可以挂载 CDROM 中的 iso9660 文件系统，使用命令
    mount /dev/cdrom
或
    mount /cd
就可以了。要了解更多信息，参见 fstab(5)。 只有挂载某个文件系统的用户可以再卸载它。如果要让任何人都可以卸载，那么在 fstab 的行中使用 users 而不是 user。 选项 owner 与选项 user 相似，但它限制用户必须是设备文件的拥有者。这种方式可能非常有用，例如对于 /dev/fd， 如果一个登录脚本使得终端用户成为设备的所有者的话。(?) 程序 mount 和 umount 在文件 /etc/mtab 中维护一个当前已挂在的文件系统列表。如果调用 mount 时没有参数，将输出这个列表。 proc 文件系统被挂载后，(假设挂载点是 /proc)， 文件 /etc/mtab 和 /proc/mounts 的内容是非常相似的。前者的信息要多一些，例如使用的挂载选项等等，但是不一定是最新的 (参见下面的 -n 选项)。可以用一个指向 /proc/mounts 的符号链接来代替 /etc/mtab， 但是这样做会丢失一些信息，尤其是使用 loop 设备时将稍有不便，并且选项 "user" 将失效。

OPTIONS 选项
运行 mount 时的全部选项首先包括 fstab 表中为指定文件系统设定的选项，其次是通过 -o 参数指定的选项，最后还会添加一个 -r 或 -w 选项，如果有的话。 mount 命令可用的选项包括：

-V  输出版本信息

-h  输出帮助信息

-v  冗余输出模式

-a  挂载 fstab 中提到的 (指定类型的) 所有文件系统

-F  (与 -a 联合使用) 为每个设备产生一个新进程来挂载。这样使得可以并行地挂载不同的设备或连接不同的 NFS 服务器。这样的好处是更快；同时 NFS 延时也是并行的。缺点是挂载顺序是不定的。因此，如果你想挂载 /usr 和 /usr/spool， 不能使用这个选项。

-f  做挂载过程中的所有事，除了实际的系统调用；如果不明白的话，它是在 "伪装" 挂载文件系统。这个选项在与 -v 标志联合使用时很有用，可以发现 mount 命令正在试图做什么。它也可以用来为早先以 -n 选项加载的设备添加记录。

-i  不调用 /sbin/mount.<filesystem> 程序，即使它存在。

-l  在 mount 的输出中添加 ext2，ext3 和 XFS 卷标。mount 必须有读取磁盘设备的权限 (例如，suid root) 才能这样做。用户可以用 e2label(8) 工具来为 ext2 或 ext3 设置卷标，对于 XFS 应当使用 xfs_admin(8)。

-n  挂载但是不写入 /etc/mtab。 有时这样做是必要的，例如当 /etc 是只读文件系统的时候。

-p num
    如果要加载一个加密的环回设备，从文件描述符 num 中读取 passphrase 而不是从终端读。

-s  容忍误用的选项而不报错。如果使用了某个文件系统不支持的选项，它将被忽略。并不是所有文件系统都支持这个选项。这个选项的存在是为了支持 Linux 中基于 autofs 的自动挂载程序。

-r  只读地挂载文件系统。有一个同义词是 -o ro。

-w  挂载文件系统为可读/写。这是默认选项。有一个同义词是 -o rw。

-L label
    挂载具有指定卷标 label 的分区。

-U uuid
    挂载具有指定 uuid 的分区。这两个选项要求存在文件 /proc/partitions (这个文件自 Linux 2.1.116 开始出现)。

-t vfstype
    跟随在 -t 的参数用于指示文件系统类型。当前支持的文件系统类型包括： adfs, affs, autofs, coda, coherent, cramfs, devpts, efs, ext, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, nfs4, ntfs, proc, qnx4, ramfs, reiserfs, romfs, smbfs, sysv, tmpfs, udf, ufs, umsdos, vfat, xenix, xfs, xiafs. 注意 coherent，sysv 和 xenix 是等价的，并且 xenix 和 coherent 将在未来被移除 — 使用 sysv 代替它们。从 Linux 2.1.21 开始， ext 和 xiafs 类型不再存在。 对于大多数类型， mount 程序要做的事情就是发出一个简单的系统调用 mount(2)， 不要求知道文件系统的细节知识。但是对于很少的一些类型 (例如 nfs，nfs4，smbfs，ncpfs)，必须使用特别的代码。nfs 的特别代码是内嵌的，而 smbfs 和 ncpfs 有单独的 mount 程序。为了可以用统一的方式处理所有类型的文件，mount 在挂载 TYPE 类型的文件系统时，将执行程序 /sbin/mount.TYPE (如果它存在的话)。由于 smbmount 程序的各种版本有不同的调用约定， /sbin/mount.smbfs 可能不得不设计为一个 shell 脚本来设定需要的调用。 默认类型是 iso9660。 如果没有给出 -t 选项，或者给出的类型是 auto， 将探测超块来判断文件系统类型 (可以支持 adfs, bfs, cramfs, ext, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, ntfs, qnx4, reiserfs, romfs, udf, ufs, vxfs, xfs, xiafs 等文件系统)。如果探测失败，mount 将试图读取文件 /etc/filesystems， 如果不存在，就读取文件 /proc/filesystems。 所有在文件中列出的文件系统类型都将被尝试，除了那些标记为 "nodev" 的类型 (例如， devpts, proc, nfs, 和 nfs4)。 如果 /etc/filesystems 以只包含单个 * 的一行结束的话，mount 将继续读取文件 /proc/filesystems。 类型 auto 在用户挂载软驱设备时可能很有用。创建一个 /etc/filesystems 文件在改变探测顺序时很有用 (例如，在 msdos 之前先尝试 vfat)，或者如果你使用内核模块自动挂载的话。 警告：探测过程是 "启发式" 的 (依赖于出现合适的 "魔数")，可能将文件系统类型识别错误，从而带来灾难性的后果。如果你的数据非常有价值，不要让 mount 去猜。 可以用逗号分隔的列表来指定多个类型。文件系统类型列表也可以前缀 no 来指示不对这样的文件系统进行任何操作。(这种做法对于选项 -a 十分有意义。) 例如，命令
        mount -a -t nomsdos,ext
    将挂载所有的文件系统，除了类型为 msdos 和 ext 的那一些。

-O  与 -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  指定挂载选项的办法是在 -o 标志后面跟随以逗号分隔的选项列表。某些选项只有在出现在文件 /etc/fstab 中时才有意义。下列选项可以用于任何要挂载的文件系统 (但是并非所有文件系统都关心它们，例如，选项 sync 在今天只对 ext2，ext3 和 ufs 有效)：

    async
        所有对文件系统的 I/O 操作都必须是异步完成的。

    atime
        每次存取时更新 inode 存取时间。这是默认选项。

    auto
        可以在使用 -a 选项时被挂载。

    defaults
        使用默认选项： rw, suid, dev, exec, auto, nouser, 以及 async.

    dev 解析文件系统中的字符设备或块设备。

    exec
        允许执行二进制文件。

    _netdev
        文件系统居于需要网络连接的设备上 (用于防止系统不断尝试挂载这些文件系统，直到系统中网络被启动)。

    noatime
        不更新文件系统的 inode 存取时间 (例如，可以更快地存取 news spool 从而提升新闻服务器的速度)。

    noauto
        只能被显式地挂载 (也就是说，选项 -a 不会使这个文件系统被挂载)。

    nodev
        不解析文件系统中的字符设备或块设备。

    noexec
        不允许执行被加载的文件系统中的任何二进制文件。这个选项对于需要加载包含不适于自己体系结构的二进制可执行文件的文件系统的服务器有用。

    nosuid
        不允许 set-user-identifier 或 set-group-identifier 位起作用。(这样看上去很安全，但是如果你安装了 suidperl(1) 那么是非常不安全的。)

    nouser
        禁止普通的 (即，非 root) 用户来挂载文件系统。这是默认选项。

    remount
        试图重新挂载一个已经挂载的文件系统。这个选项通常用于改变文件系统的挂载标志，尤其是使一个只读文件系统变为可读写。它不会改变设备或者挂载点。

    ro  只读地挂载文件系统。

    rw  挂载文件系统为可读/写。

    suid
        允许 set-user-identifier 或 set-group-identifier 位起作用。

    sync
        所有对文件系统的 I/O 操作都应当是同步完成的。

    dirsync
        所有对文件系统内目录的更新应当是同步完成的。这个选项影响下列系统调用：creat, link, unlink, symlink, mkdir, rmdir, mknod 以及 rename。

    user
        允许普通的用户挂载文件系统。挂载者的用户名被写入 mtab，从而使他可以再次卸载文件系统。这个选项暗含了选项 noexec, nosuid, 以及 nodev (除非在后续选项中指定 user,exec,dev,suid)。

    users
        允许每个用户挂载和卸载文件系统你哦个。这个选项暗含了选项 noexec, nosuid, 以及 nodev (除非在后续选项中指定 users,exec,dev,suid)。

--bind
    将一个子树重新挂载到其他地方 (从而使它的内容可以从两个地方同时获取)。参见上面。

--move
    将一个子树移动到其他位置。参见上面。

FILESYSTEM SPECIFIC MOUNT OPTIONS 文件系统特定参数
下列参数只对特定的文件系统有效。我们按照文件系统来排列它们。它们都应该写在 -o 标志后面。

Mount options for adfs

uid=value 和 gid=value
    设置文件系统中文件的属主和组 (默认值：uid=gid=0)。

ownmask=value 和 othmask=value
    分别设置 ADFS 'owner' 和 'other' 权限的权限掩码 (默认分别是 0700 和 0077)。参见 /usr/src/linux/Documentation/filesystems/adfs.txt。

Mount options for affs

uid=value 和 gid=value
    设置文件系统根的属主和组 (默认值：uid=gid=0，但是如果给出 uid 或 gid 选项而没有给出值，将使用当前进程的 uid 和 gid)。

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

mode=value
    设置所有文件的模式为 value & 0777， 无论初始的权限是什么。为有读权限的目录添加搜索权限。值以八进制给出。

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

usemp
    设置文件系统根的 uid 和 gid 为挂载点的值，直到第一次 sync 或 umount 为止，然后清除这个选项。奇怪……

verbose
    为每次成功挂载输出一条消息。

prefix=string
    当跟随链接时，在文件卷名前使用的前缀。

volume=string
    当跟随符号链接时，在 `/' 前使用的前缀 (最多 30 个字符)。

reserved=value
    (默认值: 2.) 在设备起始保留的块数。

root=value
    显式地给出 root 块的位置。

bs=value
    给出块大小。允许的值是 512, 1024, 2048, 4096。

grpquota / noquota / quota / usrquota
    这些选项被接受，但是被忽略。 (但是， /etc/fstab 中的这些字符串对 quota 工具有效。)

Mount options for coherent
None.

Mount options for devpts
devpts 文件系统是一个伪文件系统，惯例是挂载到 /dev/pts。 为了获取一个伪终端，进程首先打开 /dev/ptmx; 然后可以从中获取伪终端号 number，最后就可以使用伪终端的从设备了，设备名是 /dev/pts/<number>。

uid=value 和 gid=value
    设置新创建的 PTY 的属主和组为指定值。如果不指定任何东西，它们将被设置为创建它们的进程的值。例如，如果某个 tty 终端进程组的 GID 是 5，那么 gid=5 将使得新创建的 PTY 属于这个终端进程组。

mode=value
    设置新创建的 PTY 的模式为指定值。默认是 0600 。 设置 mode=620 和 gid=5 将使新创建的 PTY 的默认行为是 ``mesg y'' (用户可写)。

Mount options for ext
没有。注意 `ext' 文件系统已经过时了。不要使用它。从 Linux 2.1.21 开始 extfs 不再是内核源码的一部分。

Mount options for ext2
`ext2' 文件系统是标准的 Linux 文件系统。由于内核的 bug，它挂载时的选项是随机的 (在 Linux 2.0.4 中已修复)。

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 / check=normal / check=strict
    设置检测级别。在至少其中一个被设置时 ( check=normal 是默认的设置)，挂载时将检测 inodes 和块位图 (在大磁盘上这将花费超过半分钟时间，并且没什么用处)。 (? With strict checking, block deallocation checks that the block to free is in the data zone.)

check=none / nocheck
    不进行检测。这样就快一些了。较新的内核不再理会 check 选项了 - 使用 e2fsck(8) 来检测更有意义。

debug
    在每次 (re)mount 的时候输出调试信息。

errors=continue / errors=remount-ro / errors=panic
    定义遇到错误时的行为。(或者忽略错误，只将文件系统标记为不正确的，然后继续；或者重新只读挂载它，或者 panic 挂起系统。)默认是设置文件系统超块，可以用 tune2fs(8) 修改。

grpid 或 bsdgroups / nogrpid 或 sysvgroups
    这些选项定义了新创建的文件获得什么组 id。当设置了 grpid 的时候，使用文件所在的目录的组 id；否则 (这是默认值) 使用当前进程的 fsgid，除非这个目录设置了 setgid 属性，这种情况下使用父目录的 gid，并且如果新创建的是一个目录，那么也设置它的 setgid 属性。

resgid=n 和 resuid=n
    ext2 文件系统保留一定比例的可用空间 (默认是 5%，参见 mke2fs(8) 和 tune2fs(8))。 这些选项决定了谁可以使用保留的块。(简单地说：拥有指定 uid 或者属于指定组的用户。)

sb=n
    使用块 n 而不是第一块作为超块。在文件系统被损坏时，这样很有用。(早些时候，超块在每 8192 块都会复制一个：在块 1，8193，16385，……(如果文件系统很大，超块将被复制成百上千次)。从 1.08 版开始， mke2fs 有一个 -s (稀疏超块) 选项，可以减少超块备份的数量，从 1.15 版开始它成为默认值。注意这样做意味着使用较新的 mke2fs 创建的 ext2 文件系统无法在 Linux 2.0.* 中以读写方式挂载。)这里块编号的单位是 1k。因此，如果想使用以 4k 为单位的文件系统中的第 32768 块，应当用 "sb=131072"。

grpquota / noquota / quota / usrquota
    这些选项被接受，但是被忽略。

nouid32
    禁止 32-bit UIDs 和 GIDs。这个选项用于与旧版内核互操作，旧版内核只保存和读取 16-bit 的值。

Mount options for ext3
文件系统 `ext3' 是 ext2 文件系统的一个版本，但是加入了日志功能。它支持 ext2 的所有选项，还支持下列扩展：

journal=update
    更新 ext3 文件系统的日志为当前的格式。

journal=inum
    如果一个日志已存在，这个选项被忽略。否则，它指定了用于保存日志文件的 inode 编号。ext3 将创建一个新日志，覆盖 inode 编号是 inum 的文件的原有内容。

noload
    在挂载时不读取 ext3 文件系统的日志。

data=journal / data=ordered / data=writeback
    指定文件数据的日志模式。元数据 (metadata) 总是被记录。(?)

    journal
        在写入文件系统之前，所有数据首先被提交到日志中。

    ordered
        这是默认的模式，所有数据在它的元数据被提交给日志之前，被强制直接写入文件系统。

    writeback
        写入顺序不定，数据可能在元数据已被提交给日志之后写入文件系统。传闻这是效率最高的方式。它保证了文件系统内部的一致性，但是在崩溃和恢复后文件内可能出现旧数据。

Mount options for fat
(注意： fat 不是一个单独的文件系统类型，而是 msdos, umsdos 和 vfat 文件系统的共同之处。)

blocksize=512 / blocksize=1024 / blocksize=2048
    设置块大小 (默认值是 512)。

uid=value 和 gid=value
    设置所有文件的属主和组。(默认值：当前进程的 uid 和 gid。)

umask=value
    设置 umask (权限位的掩码，表示指定的位 不 置值)。默认值是当前进程的 umask。值以八进制给出。

dmask=value
    设置只对目录有效的 umask 值。默认值是当前进程的 umask。值以八进制给出。自 2.5.43 版起出现。

fmask=value
    设置只对普通文件有效的 umask 值。默认值是当前进程的 umask。值以八进制给出。自 2.5.43 版起出现。

check=value
    可以选择三种不同级别的文件名限制：

    r[elaxed]
        大写和小写都可以，但是它们等价，长名字被截断 (例如， verylongname.foobar 成为 verylong.foo)， 在名称的每个部分 (主名称和扩展名) 都可以出现前导和中间的空格。

    n[ormal]
        与 "relaxed" 类似，但是不允许使用很多特殊字符 (*, ?, <, 空格等等)。这是默认值。

    s[trict]
        与 "normal" 类似，但是名称不能包含长文件名，也不能包含在 Linux 中可用，但在 MS-DOS 中不能用的特殊字符 (+, =, 空格等等)。

codepage=value
    设置转换 FAT 和 VFAT 文件系统上的字符 (shortname characters) 时使用的代码页。默认情况下，使用代码页 437。

conv=b[inary] / conv=t[ext] / conv=a[uto]
    fat 文件系统可以在内核中进行 CRLF<-->NL (MS-DOS 文本格式与 UNIX 文本格式) 的转换。下列转换模式是可行的：

    binary
        不进行转换。这是默认值。

    text
        在所有文件中进行 CRLF<-->NL 转换。

    auto
        只转换没有 "知名格式" 的扩展名的文件。已知的扩展名可以从 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 的程序不希望进行内核级别的文件转换。很多人在转换中损坏了数据。小心！ 对于以 binary 模式挂载的文件系统，可以用转换工具 (fromdos/todos)。

cvf_format=module
    强制驱动器使用 CVF (Compressed Volume File 压缩卷文件) 模块 cvf_module 而不是自动探测。如果内核支持 kmod，那么选项 cvf_format=xxx 也可以控制按需加载 CVF 模块。

cvf_option=option
    要传递给 CVF 模块的选项。

debug
    打开 debug 标志。将输出文件系统的版本信息和参数列表 (如果参数不一致，也会输出这些数据)。

fat=12 / fat=16 / fat=32
    指定为 12，16 或 32 位 fat。这个选项跳过了自动 FAT 类型检测过程。小心使用！

iocharset=value
    用来在 8 bit 字符和 16 bit Unicode 字符转换时的字符集。默认值是 iso8859-1。磁盘中的长文件名是以 Unicode 格式存储的。

quiet
    打开 quiet 标志。对文件进行 chown 或 chmod 操作不会返回错误，尽管它们会失败。小心使用！

sys_immutable, showexec, dots, nodots, dotsOK=[yes|no]
    多种试图在 FAT 文件系统中套用 Unix 或 DOS 惯例的误导的尝试。

Mount options for hpfs

uid=value and gid=value
    设置所有文件的属主和组。(默认值：当前进程的 uid 和 gid。)

umask=value
    设置 umask (权限位的掩码，表示指定的位 不 置值)。默认值是当前进程的 umask。值以八进制给出。

case=lower / case=asis
    将所有文件名转换为小写，或者保持不变。(默认值： case=lower。)

conv=binary / conv=text / conv=auto
    对于 conv=text， 在读取文件时，随机地删除某些 CR (特别的，删除所有跟随有 NL 的那些) 对于 conv=auto， 随机地在 conv=binary 以及 conv=text 之间选择。对于 conv=binary， 只读取文件中原本的内容。这是默认值。

nocheck
    如果一致性检测出错，不放弃挂载。

Mount options for iso9660
ISO 9660 是一种标准，描述了用于 CD-ROM 的文件系统结构。(这种文件系统类型也在一些 DVD 中出现。另外参见 udf 文件系统。) 通常 iso9660 文件名以 8.3 格式出现 (即，对文件名长度的限制与 DOS 相同)，另外所有字符都是大写。没有文件所有者，权限位，链接数等等，也没有对块设备/字符设备作出扩展。 Rock Ridge 是对 iso9660 的扩展，提供了所有这些 unix 文件系统的特性。使用 Rock Ridge 的时候，基本上，每个目录记录中都有扩展域来提供所有的附加信息。这样的文件系统与普通的 UNIX 文件系统没有什么区别 (当然，它是只读的)。

norock
    禁止使用 Rock Ridge 扩展，即使有的话。参见 map。

nojoliet
    禁止 M$ Joliet 扩展，即使有的话。参见 map。

check=r[elaxed] / check=s[trict]
    对于 check=relaxed， 文件名在查找前首先被转换为小写。这个选项可能只在与 norock 和 map=normal 同时使用时有意义。(默认值： check=strict。)

uid=value 和 gid=value
    设置文件系统中的所有文件指定的用户或组 id，可能会覆盖 Rock Ridge 扩展中找到的信息。(默认值： uid=0,gid=0.)

map=n[ormal] / map=o[ff] / map=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] / conv=b[inary] / conv=m[text] / conv=t[ext]
    (默认值： conv=binary。)从Linux1.3.54开始这个选项不再有用。 (非 binary 的设置在过去是非常危险的，很容易带来悄无声息的数据损坏。)

cruft
    如果文件长度的高位字节包含其他垃圾信息，设置这个选项来忽略文件长度的高位字节。这意味着文件不能大于 16MB。如果整个 CDROM 的大小很奇特 (负值或者超过 800MB)，那么自动启用这个选项。如果看到的卷序列编号不是 0 或 1，那么也会设置。

session=x
    设置多区段 CD 中的区段号。(自 2.3.4 开始)

sbsector=xxx
    区段从 xxx 扇区开始。(自 2.3.4 开始)

下列选项与 vfat 含义相同，只有在光盘使用了 M$ Joliet 扩展时指定它们才有效。

iocharset=value
    将 CD 上的 16 bit Unicode 字符转换为 8bit 字符时所用的字符集。默认是 iso8859-1。

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

Mount options for minix
None.

Mount options for msdos
参见 fat 的挂载选项。如果 msdos 文件系统被检测到不一致，它将报告错误并设置文件系统为只读。可以通过 remount 来使它可写。

Mount options for ncpfs
与 nfs 类似， ncpfs 的实现要求在 mount 系统调用中提供一个二进制的参数 (一个结构 ncp_mount_data)。 这个参数可以用 ncpmount(8) 构造，当前版本的 mount (2.12) 对于 ncpfs 一无所知。

Mount options for nfs
nfs 文件系统没有使用由内核解析的文本的选项字符串，而是必须提供二进制的参数，类型是 struct nfs_mount_data。 mount 程序自身解析下列形式为 `tag=value' 的选项，将它们放到上面提到的结构中： rsize=n, wsize=n, timeo=n, retrans=n, acregmin=n, acregmax=n, acdirmin=n, acdirmax=n, actimeo=n, retry=n, port=n, mountport=n, mounthost=name, mountprog=n, mountvers=n, nfsprog=n, nfsvers=n, namlen=n. 选项 addr=n 被接受但是被忽略。同时，下列布尔值选项也被识别，可能前缀有 no ： bg, fg, soft, hard, intr, posix, cto, ac, tcp, udp, lock. 参见 nfs(5) 来获取细节。 尤其有用的选项包括

rsize=8192,wsize=8192
    这样将使得 nfs 连接与默认缓冲大小 4096 相比要更快。(NFSv2 不能使用更大的 rsize 和 wsize 值。)

hard
    访问以 NFS 方式挂载的文件系统中的文件的程序将在服务器崩溃时挂起。进程不能被中断或杀死，除非同时指定 intr。 当 NFS 服务器恢复运行时，程序将保持原来的状态继续执行，这可能是你想要的。

soft
    这个选项允许内核超时，如果 nfs 服务器一段时间没有响应的话。可以用 timeo=time 来指定。在 nfs 服务器偶尔失去响应或者重启，而某些进程试图从服务器获取文件时，这个选项可能有用。通常它只会带来不少麻烦。

nolock
    不使用锁定。不启动 lockd。

Mount options for nfs4
nfs4 文件系统没有使用由内核解析的文本的选项字符串，而是必须提供二进制的参数，类型是 struct nfs4_mount_data。 mount 程序自身解析下列形式为 `tag=value' 的选项，将它们放到上面提到的结构中： rsize=n, wsize=n, timeo=n, retrans=n, acregmin=n, acregmax=n, acdirmin=n, acdirmax=n, actimeo=n, retry=n, port=n, proto=n, clientaddr=n, sec=n. 选项 addr=n 被接受但是被忽略。同时，下列布尔值选项也被识别，可能前缀有 no ： bg, fg, soft, hard, intr, cto, ac, 参见 nfs(5) 来获取细节。 尤其有用的选项包括

rsize=32768,wsize=32768
    这样将使得 nfs 连接与默认缓冲大小 4096 相比要更快。

hard
    访问以 NFS 方式挂载的文件系统中的文件的程序将在服务器崩溃时挂起。进程不能被中断或杀死，除非同时指定 intr。 当 NFS 服务器恢复运行时，程序将保持原来的状态继续执行，这可能是你想要的。

soft
    这个选项允许内核超时，如果 nfs 服务器一段时间没有响应的话。可以用 timeo=time 来指定。延时的单位是一秒的十分之一。在 nfs 服务器偶尔失去响应或者重启，而某些进程试图从服务器获取文件时，这个选项可能有用。避免将这个选项与 proto=udp 同时使用，或者使用很短的延时。

Mount options for ntfs

iocharset=name
    返回文件名时使用的字符集。与 VFAT 不同，NTFS 不允许使用包含无法转换的字符的文件名。

utf8
    使用 UTF-8 来转换文件名。

uni_xlate=[0|1|2]
    如果是 0 (或 `no' 或 `false')时，不使用逃逸序列来处理未知 Unicode 字符。如果是 1 (或 `yes' 或 `true') 或 2，使用 vfat 样式的以 ":" 开始的 4 字节逃逸序列。这里 2 用的是 little-endian，而 1 是交换字节顺序的 big-endian。

posix=[0|1]
    如果启用 (posix=1)，文件系统区分大小写。8.3 格式的别名被表示为硬连接，而不是不显示。

uid=value, gid=value 和 umask=value
    设置文件系统中文件的权限。umask 值以八进制值给出。默认情况下，文件所有者是 root，不能被其他人读取。

Mount options for proc

uid=value 和 gid=value
    这些选项被识别，但是没有任何效果。

Mount options for ramfs
ramfs 是一种基于内存的文件系统。挂载它就会产生，卸载它就会消失。自 Linux 2.3.99pre4 开始出现。没有选项。

Mount options for reiserfs
Reiserfs 是一种日志文件系统。挂载选项的详细描述位于 http://www.namesys.com/mount-options.html。

conv
    指示 3.6 版的 reiserfs 软件挂载 3.5 版的文件系统，对于新创建的对象使用 3.6 版的格式。这个文件系统不再与 3.5 版的工具兼容。

hash=rupasov / hash=tea / hash=r5 / hash=detect
    选择 reiserfs 使用哪种 hash 函数来在目录内查找文件。

    rupasov
        Yury Yu. Rupasov 发明的一种。它比较快，保留了局部性，将字面上相近的文件名映射为相近的 hash 值。不应当使用这个选项，因为这种方法可能带来很高的冲突。

    tea 一个 Davis-Meyer 函数，由 Jeremy Fitzhardinge 实现。它使用各位进行重排列的名称的散列。它的随机性较高，因此可以减少冲突，代价是 CPU 性能损耗。如果在使用 r5 散列时遇到 EHASHCOLLISION 错误时，可以用它。

    r5  修改过的 rupasov 散列，它是默认值，也是最好的选择，只要文件系统目录树不是那么大，没有不一般的文件名模式。

    detect
        指示 mount 检测要挂载的文件系统正在使用哪种散列函数，将信息写入 reiserfs 超块。这个选项只有在第一次挂载旧格式的文件系统时才有用。

hashed_relocation
    调整块分配器。某些情况下可以带来性能提高。

no_unhashed_relocation
    调整块分配器。某些情况下可以带来性能提高。

noborder
    禁止 border allocator 算法，它是由 Yury Yu. Rupasov 发明的。某些情况下可以带来性能提高。

nolog
    禁止日志。某些情况下可以带来性能轻微提高，代价是失去了从崩溃中快速恢复的能力。即使使用这个选项，reiserfs 仍然进行所有日志动作，将实际的写入保存到日志区域。 nolog 的实现工作还在进行中。

notail
    默认情况下，reiserfs 将小文件和 "文件零头" 直接保存在树中。这样做会给某些工具带来麻烦，例如 LILO(8)。 这个选项用来禁止将文件放入树中。

replayonly
    重放日志中的事务，但不真正挂载文件系统。主要由 reiserfsck 使用。

resize=number
    remount 的一个选项，允许在线扩展 reiserfs 分区。指示 reiserfs 假定设备上有 number 个块。这个选项被设计为用于逻辑卷管理 (LVM) 下的设备。有一个特殊的 resizer 工具，可以从这里得到 ftp://ftp.namesys.com/pub/reiserfsprogs。

Mount options for romfs
None.

Mount options for smbfs
与 nfs 类似， smbfs 的实现需要为 mount 系统调用提供一个二进制的参数 (类型是 struct smb_mount_data)。 这个参数由 smbmount(8) 构造，当前版本的 mount (2.12) 对此一无所知。

Mount options for sysv
None.

Mount options for tmpfs
下列参数值可以加后缀 k, m 或 g ， 意思是 Ki, Mi, Gi (二进制千，兆和吉)，可以在 remount 的时候更改。

size=nbytes
    替换文件系统的默认大小。单位是字节，舍入到完整的页面。默认是内存的一半。

nr_blocks=
    块数。

nr_inodes=
    inode 数。

mode=
    设置根目录的初始权限。

Mount options for udf
udf 是 the Optical Storage Technology Association 定义的统一光盘格式 "Universal Disk Format" 文件系统，通常用于 DVD-ROM。参见 iso9660。

gid=
    设置默认组。

umask=
    设置默认 umask。值以八进制给出。

uid=
    设置默认用户。

unhide
    显示在一般情况下隐藏的文件。

undelete
    显示已删除的文件。

strict
    严格遵循标准 (未用到)。

utf8
    (未用到)。

iocharset
    (未用到)。

bs= 设置块大小。(不能小于 2048)

novrs
    跳过卷序列识别。

session=
    选择 CDROM 区段，从 0 开始。默认：最后一个区段。

anchor=
    选择标准锚点位置。默认值：256。

volume=
    选择 VolumeDesc 位置。(未使用)

partition=
    选择 PartitionDesc 位置。(未使用)

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

fileset=
    设置文件集的块位置。(未使用)

rootdir=
    设置根文件夹的位置。(未使用)

Mount options for ufs

ufstype=value
    UFS 是一种在不同的操作系统中广泛使用的文件系统。问题在于不同实现间的差别。某些实现没有将所有特性载入文档，因此很难自动判断 ufs 的类型。这就是为什么用户需要在 mount 选项中指定类型的原因。可能的值是：

    old 旧格式的 ufs。这是默认值，只读。(别忘了加上 -r 选项)

    44bsd
        由 BSD 家族的系统 (NetBSD,FreeBSD,OpenBSD) 创建的文件系统。

    sun 由 SunOS 或 Sparc 版本的 Solaris 创建的文件系统。

    sunx86
        由 x86 版本的 Solaris 创建的文件系统。

    nextstep
        由 NeXTStep (运行于 NeXT 主机上) 创建的文件系统。(当前为只读)

    nextstep-cd
        适用于 NeXTStep CDROM (block_size == 2048)，只读。

    openstep
        由 OpenStep 创建的文件系统 (当前为只读)。Mac OS X 也使用同样的文件系统类型。

onerror=value
    设置出错后的行为：

    panic
        如果遇到错误，将导致内核 panic。

    [lock|umount|repair]
        这些挂载选项目前什么都不做；如果遇到错误，只打印一条终端消息。

Mount options for umsdos
参见 msdos 的挂载选项。选项 dotsOK 被 umsdos (? explicitly killed)。

Mount options for vfat
首先， fat 的挂载选项都被识别。选项 dotsOK 被 vfat (? explicitly killed)。 更多的选项，包括

uni_xlate
    将未处理的 Unicode 字符转换为特殊的逃逸序列。这样允许你保存和恢复含有任何 Unicode 字符的文件名。没有这个选项的话，对于无法转换的名称将使用 `?' 代替。逃逸字符是 `:'，因为它在 vfat 文件系统中是无效字符。用来替换 Unicode 字符 u 的逃逸序列是 `:', (u & 0x3f), ((u>>6) & 0x3f), (u>>12) 。

posix
    允许两个文件的名称仅有大小写不同。

nonumtail
    首先试着创建不带序列号码的短名称，然后再试 name~num.ext。

utf8
    UTF8 是文件系统安全的 Unicode 8-bit 编码，用于终端。它可以在支持它的文件系统中启用。如果设置了 `uni_xlate'，那么 UTF8 就被禁止。

shortname=[lower|win95|winnt|mixed]
    定义创建和显示满足 8.3 格式的文件名时的行为。如果存在对应的长名字，那么总是显示长名字。有四种模式：

    lower
        强制短名称在显示时转换为小写；当短名称不都是大写时保存一个长名称。(?)

    win95
        强制短名称在显示时转换为大写；当短名称不都是大写时保存一个长名称。(?)

    winnt
        原样显示短名称；当短名称不都是小写，也不都是大写时保存一个长名称。(?)

    mixed
        原样显示短名称；当短名称不都是大写时保存一个长名称。(?)
默认值是 "lower" 。

Mount options for xenix
None.

Mount options for xfs

biosize=size
    设置首选的缓存的 I/O 大小 (默认是 64K)。 size 必须表示为期望 I/O 大小的对数 (以 2 为底)。有效的值是 14 到 16 (即，16K，32K 和 64K字节)。在页面大小为 4K 的机器上，13 (8K 字节) 也是有效的大小。对于每个文件，首选的缓存 I/O 大小也可以用 ioctl(2) 系统调用来调整。

dmapi  /  xdsm
    启用 DMAPI (数据管理接口 Data Management API) 事件管理 (? callouts)。

logbufs=value
    设置内存中记录缓存的数量。有效值是 2 到 8。默认值是对块大小 64K 的文件系统使用 8 缓存，对块大小 32K 的文件系统使用 4 缓存，对块大小 16K 的文件系统使用 3 缓存，其他所有情况都使用 2 缓存。增加缓存数量在某些情形下可以提高性能，代价是附加记录缓存以及控制结构占用的内存空间。

logbsize=value
    设置内存中记录缓存的大小。有效的大小是 16384 (16K) 和 32768 (32K)。对于内存超过 32MB 的机器，默认值是 32768，内存小的机器默认使用 16384。

logdev=device 和 rtdev=device
    使用外部的记录 (元数据日志) 和/或实时设备。XFS 文件系统包含最多三个部分：数据段，记录段，实时段。实时段是可选的，记录段可以与数据段分离，或者包含在内。参见 xfs(5)。

noalign
    数据分配不对齐数据单元边缘。

noatime
    读取文件时，不更新存取时间戳。

norecovery
    文件系统挂载时不运行记录恢复。如果文件系统并非正常卸载，那么以此模式挂载时将可能是不一致的。某些文件或目录可能无法存取。以此模式挂载文件系统时必须是只读的，否则将失败。

osyncisdsync
    使写入设置了 O_SYNC 标志的文件时的行为类似于设置了 O_DSYNC 标志时。这样可以带来更好的性能，却不会危害数据安全。但是如果设置了这个选项，如果系统崩溃，O_SYNC 写入的时间戳更新将会丢失。

quota / usrquota / uqnoenforce
    启用用户磁盘限额计数，强制进行限制 (可选)。

grpquota / gqnoenforce
    启用组磁盘限额计数，强制进行限制 (可选)。

sunit=value and swidth=value
    用来为 RAID 设备或 stripe 卷指定区块单位和宽度。(?) value 必须以 512 字节的块为单位指定。如果没有指定这个选项， (? and the filesystem was made on a stripe volume or the stripe width or unit were specified for the RAID device at mkfs time, then the mount system call will restore the value from the superblock.) 对于直接在 RAID 设备上创建的文件系统，这些选项可以用来覆盖超块中的信息，如果文件系统创建后，下层的磁盘排列发生改变的话。 如果没有指定 sunit 选项的话，那么需要有 swidth 选项，值必须是 sunit 的倍数。

Mount options for xiafs
没有。虽然 xiafs 没什么错，但是它用得不多，也没有人维护。应该避免用它。从 Linux 2.1.21 开始不再是内核源码的一部分了。

THE LOOP DEVICE 环回设备
还有一种类型是通过环回设备来挂载。例如，命令
  mount /tmp/fdimage /mnt -t msdos -o loop=/dev/loop3,blocksize=1024
将设置环回设备 /dev/loop3 关联到文件 /tmp/fdimage， 然后将这个设备挂载到 /mnt。 这种类型的挂载有三种选项，名称是 loop, offset and encryption， 实际是给 losetup(8) 的参数。如果没有显式地指明环回设备 (而仅仅使用了选项 `-o loop')，那么 mount 将查找未使用的环回设备然后使用它。如果你没有把 /proc/mounts 链接成 /etc/mtab ， 那么使用 mount 分配的环回设备可以用 umount 来释放。当然也可以手动地释放环回设备，使用 `losetup -d'，参见 losetup(8)。

RETURN CODES 返回值
mount 有如下的返回值 (可以是位或的结果)：

0   成功

1   命令或权限不正确

2   系统错误 (内存溢出，不能产生新进程，没有更多的环回设备)

4   mount 内部的 bug 或没有 nfs 支持

8   用户中断

16  写或锁定 /etc/mtab 出错

32  挂载失败

64  某些挂载成功

FILES 文件
/etc/fstab 文件系统表
/etc/mtab 已挂载文件系统表
/etc/mtab~ 文件锁
/etc/mtab.tmp 临时文件

SEE ALSO 参见
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)

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

某些 Linux 文件系统不支持 -o sync 和 -o dirsync (ext2 和 ext3 文件系统 支持 同步更新 (? a la BSD)，如果以 sync 选项挂载的话。)

-o remount 不能用来改变挂载参数 (例如，所有 ext2fs-specific 参数，除了 sb， 都可以在 remount 时改变，但是不能改变 fat 文件系统的 gid 或 umask 。)

HISTORY 历史
mount 命令存在于 Version 5 AT&T UNIX 。

TRANSBY
LinuxForum.Net CMPP 中文手册页计划 http://cmpp.linuxforum.net

* Tue Jun 22 2004 Yuan Yijun <bbbush@163.com>
- 初始版本