使用此命令,可以将已命名的文件系统(本地或远程)连接到指定的挂载点。有关更多信息,请参见 mount(1M) 手册页。在不使用参数的情况下,mount 将显示当前在计算机上挂载的文件系统列表。
标准 Solaris 安装中包括许多类型的文件系统。每个文件系统类型都有特定的手册页,其中列出了适用于该文件系统类型的 mount 选项。NFS 文件系统的手册页为 mount_nfs(1M)。对于 UFS 文件系统,请参见 mount_ufs(1M)。
Solaris 7 发行版可以使用 NFS URL(而不是标准的 server:/pathname 语法)从 NFS 服务器选择要挂载的路径名。有关详细信息,请参见如何使用 NFS URL 挂载 NFS 文件系统。
从 2.6 到当前发行版的任何 Solaris 发行版中包括的 mount 命令版本都不会发出有关无效选项的警告。该命令将默认忽略无法解释的所有选项。请确保验证已使用的所有选项,以便防止出现意外行为。
下面介绍挂载 NFS 文件系统时可跟在 -o 标志后面的某些选项。有关完整的选项列表,请参阅 mount_nfs(1M) 手册页。
可以使用这些选项来选择挂载失败时的重试行为。bg 选项将导致挂载试图在后台运行。fg 选项将导致挂载试图在前台运行。缺省值为 fg,对于必须可用的文件系统而言,这是最佳选择。此选项可防止在挂载完成之前进一步进行处理。bg 是适用于非关键文件系统的适当选择,因为客户机在等待挂载请求完成的同时可以执行其他处理。
此选项可提高大型连续数据传输的性能。数据将直接复制到用户缓冲区。不会在客户机的内核中执行任何缓存操作。缺省情况下,此选项处于关闭状态。
以前,所有写请求都被 NFS 客户机和 NFS 服务器串行化。NFS 客户机已被修改,允许应用程序向单个文件发出并发写入以及并发读取和写入。您可以使用 forcedirectio 挂载选项在客户机上启用此功能。使用此选项时,将为已挂载文件系统中的所有文件启用此功能。还可以通过使用 directio() 接口对客户机的单个文件启用此功能。除非启用了此功能,否则对文件的写入一定是串行化的。而且,如果正在进行并发写入或并发读取和写入,该文件将不再支持 POSIX 语义。
有关如何使用此选项的示例,请参阅使用 mount 命令。
使用此选项,可以在运行 Solaris 2.6 发行版的服务器上访问大于 2 GB 的文件。由于只能在服务器上控制某个大文件是否可以访问,因此在 NFS 版本 3 挂载中将默认忽略此选项。从 2.6 发行版开始,缺省情况下,所有的 UFS 文件系统都使用 largefiles 进行挂载。对于使用 NFS 版本 2 协议的挂载,largefiles 选项将导致挂载失败,且会出现错误。
用于 UFS 挂载的此选项可以保证文件系统中不会存在大文件。请参见 mount_ufs(1M) 手册页。由于只能在 NFS 服务器上控制大文件的存在,因此使用 NFS 挂载时不存在用于 nolargefiles 的选项。系统将拒绝尝试使用此选项挂载 NFS 文件系统,且会出现错误。
从 Solaris 10 发行版开始,nosuid 选项与指定 nosetuid 选项和 nodevices 选项等效。指定 nodevices 选项时,禁止在已挂载的文件系统上打开特定于设备的文件。指定 nosetuid 选项时,系统将忽略位于文件系统中的二进制文件的 setuid 位和 setgid 位。进程将使用执行该二进制文件的用户的权限运行。
suid 选项与指定 setuid 选项和 devices 选项等效。指定 devices 选项时,允许在已挂载的文件系统上打开特定于设备的文件。指定 setuid 选项时,内核将接受位于文件系统中的二进制文件的 setuid 位和 setgid 位。
如果这两个选项都没有指定,则缺省选项为 suid,这将提供指定 setuid 选项和 devices 选项的缺省行为。
下表介绍了将 nosuid 或 suid 与 devices 或 nodevices,以及 setuid 或 nosetuid 组合的效果。请注意,在选项的每个组合中,行为由限制性最强的选项确定。
组合选项的行为 |
选项 |
选项 |
选项 |
---|---|---|---|
与使用 nodevices 和 nosetuid 等效 |
nosuid |
nosetuid |
nodevices |
与使用 nodevices 和 nosetuid 等效 |
nosuid |
nosetuid |
devices |
与使用 nodevices 和 nosetuid 等效 |
nosuid |
setuid |
nodevices |
与使用 nodevices 和 nosetuid 等效 |
nosuid |
setuid |
devices |
与使用 nodevices 和 nosetuid 等效 |
suid |
nosetuid |
nodevices |
与使用 devices 和 nosetuid 等效 |
suid |
nosetuid |
devices |
与使用 nodevices 和 setuid 等效 |
suid |
setuid |
nodevices |
与使用 devices 和 setuid 等效 |
suid |
setuid |
devices |
nosuid 选项为访问可能不可信的服务器的 NFS 客户机提供了附加安全性。使用此选项挂载远程文件系统会减少通过导入不可信设备或导入不可信 setuid 二进制文件来升级权限的机会。所有这些选项在所有的 Solaris 文件系统中都是可用的。
此选项强制在与 NFS 服务器联系时使用公共文件句柄。如果服务器支持公共文件句柄,则由于不使用 MOUNT 协议,因此挂载操作会比较快。此外,由于不使用 MOUNT 协议,公共选项允许通过防火墙进行挂载。
-rw 和 -ro 选项指示文件系统以读写方式挂载还是以只读方式挂载。缺省值为读写,该选项适用于远程起始目录、邮件假脱机目录或需要由用户更改的其他文件系统。只读选项适用于不应该由用户更改的目录。例如,用户不应写入手册页的共享副本。
可以使用此选项指定在挂载事务期间使用的验证机制。mode 的值可以是以下某个值之一。
对 Kerberos 版本 5 验证服务使用 krb5。
对具备完整性的 Kerberos 版本 5 使用 krb5i。
对具备保密性的 Kerberos 版本 5 使用 krb5p。
对于不验证的情况,使用 none。
对于 Diffie-Hellman (DH) 验证,使用 dh。
对于标准的 UNIX 验证,使用 sys。
上述模式还在 /etc/nfssec.conf 中进行了定义。
如果服务器没有做出响应,则使用 soft 选项挂载的 NFS 文件系统将返回错误。hard 选项将导致挂载继续重试,直到服务器做出响应为止。缺省值为 hard,大多数文件系统都应该使用此选项。应用程序不会经常检查从使用 soft 选项挂载的文件系统返回的值,这可能会使应用程序出现故障或可能导致文件损坏。如果应用程序检查返回值,则路由问题和其他情况可能仍然会干扰应用程序或导致文件损坏(如果选择 soft 选项)。在大多数情况下,不应该使用 soft 选项。如果文件系统是使用 hard 选项挂载的且不可用,则使用该文件系统的应用程序将挂起,直到该文件系统可用为止。
请参阅以下示例。
在 NFS 版本 2 或版本 3 中,这两个命令以只读方式从服务器 bee 挂载 NFS 文件系统。
# mount -F nfs -r bee:/export/share/man /usr/man |
# mount -F nfs -o ro bee:/export/share/man /usr/man |
在 NFS 版本 4 中,以下命令行将完成同样的挂载。
# mount -F nfs -o vers=4 -r bee:/export/share/man /usr/man |
在 NFS 版本 2 或版本 3 中,即使已挂载了 /usr/man,此命令也会使用 -O 选项强制在本地系统上挂载服务器 bee 中的手册页。请参见以下内容。
# mount -F nfs -O bee:/export/share/man /usr/man |
在 NFS 版本 4 中,以下命令行将完成同样的挂载。
# mount -F nfs -o vers=4 -O bee:/export/share/man /usr/man |
在 NFS 版本 2 或版本 3 中,此命令使用客户机故障转移。
# mount -F nfs -r bee,wasp:/export/share/man /usr/man |
# mount -F nfs -o vers=4 -r bee,wasp:/export/share/man /usr/man |
在命令行中使用时,列出的服务器必须支持同一版本的 NFS 协议。在命令行中运行 mount 时,请不要同时使用版本 2 和版本 3 服务器。可以同时将这两个服务器与 autofs 一起使用。Autofs 会自动选择最合适的版本 2 或版本 3 服务器。
下面是将 NFS URL 与 NFS 版本 2 或版本 3 中的 mount 命令结合使用的示例。
# mount -F nfs nfs://bee//export/share/man /usr/man |
下面是将 NFS URL 与 NFS 版本 4 中的 mount 命令结合使用的示例。
# mount -F nfs -o vers=4 nfs://bee//export/share/man /usr/man |
为了使客户机允许向文件并发写入以及并发读取和写入,请使用 forcedirectio 挂载选项。下面是一个示例。
# mount -F nfs -o forcedirectio bee:/home/somebody /mnt |
在本示例中,命令将从服务器 bee 挂载 NFS 文件系统,并对目录 /mnt 中的每个文件启用并发读取和写入。 启用对并发读取和写入的支持时,将发生以下情况。
客户机允许应用程序并行写入文件。
缓存在客户机上是禁用的。因此,来自读取和写入的数据将保留在服务器上。更明确地说,由于客户机不会缓存已读取或写入的数据,因此将从服务器读取应用程序尚未为其自身缓存的所有数据。客户机的操作系统不会具有此数据的副本。通常,NFS 客户机将在内核中缓存供应用程序使用的数据。
由于在客户机上禁用了缓存,因此将禁用读前进程和写后进程。读前进程发生在内核预料应用程序下一步可能请求的数据时。然后,内核将启动提前收集该数据的进程。内核的目标是在应用程序请求数据之前将数据准备就绪。
客户机使用写后进程增加写吞吐量。数据将被缓存到内存中,而不是在应用程序每次将数据写入文件时立即启动 I/O 操作。随后,数据将被写入磁盘。
很可能,写后进程会允许以较大的块写入数据,或者允许从应用程序异步写入数据。通常,使用较大块的结果是会增大吞吐量。异步写入允许应用程序处理和 I/O 处理之间有重叠。此外,异步写入还允许存储子系统通过提供更好的 I/O 序列来优化该 I/O。同步写入强制在存储子系统上使用可能不是最佳的 I/O 序列。
如果应用程序不准备处理未被缓存的数据语义,则性能可能会大大降低。多线程应用程序可以避免此问题。
如果未启用对并发写入的支持,则将对所有的写入请求进行串行化。串行化请求时,将发生以下情况。如果正在处理写入请求,则第二个写入请求必须等待第一个写入请求完成之后才能继续进行。
使用不含参数的 mount 命令可以显示客户机上挂载的文件系统。请参见以下内容。
% mount / on /dev/dsk/c0t3d0s0 read/write/setuid on Wed Apr 7 13:20:47 2004 /usr on /dev/dsk/c0t3d0s6 read/write/setuid on Wed Apr 7 13:20:47 20041995 /proc on /proc read/write/setuid on Wed Apr 7 13:20:47 2004 /dev/fd on fd read/write/setuid on Wed Apr 7 13:20:47 2004 /tmp on swap read/write on Wed Apr 7 13:20:51 2004 /opt on /dev/dsk/c0t3d0s5 setuid/read/write on Wed Apr 7 13:20:51 20041995 /home/kathys on bee:/export/home/bee7/kathys intr/noquota/nosuid/remote on Wed Apr 24 13:22:13 2004 |