本章介绍如何在 Solaris OS 中挂载和取消挂载文件系统。
以下是本章中的逐步说明列表。
创建文件系统后,需要使其对系统可用,以便您可以使用它。通过挂载文件系统可使该文件系统可用,这会将文件系统连接到指定挂载点上的系统目录树。始终会挂载根 (/) 文件系统。
下表提供了根据文件系统的使用方法对其进行挂载的指南。
如有必要,可以通过将包含文件系统的可移除介质插入到驱动器中并运行 volcheck 命令,挂载该介质。有关挂载可移除介质的更多信息,请参见第 1 章,管理可移除介质(概述)。
下表列出了 /usr/sbin 目录中用于挂载和取消挂载文件系统的命令。
表 19–1 用于挂载和取消挂载文件系统的命令
命令 |
说明 |
手册页 |
---|---|---|
mount |
挂载文件系统和远程资源。 | |
mountall |
挂载 /etc/vfstab 文件中指定的所有文件系统。当系统进入多用户模式时,mountall 命令会自动运行。 | |
umount |
取消挂载文件系统和远程资源。 | |
umountall |
取消挂载 /etc/vfstab 文件中指定的所有文件系统。 |
在使用 mount 和 mountall 命令时,请牢记以下要点:
mount 和 mountall 命令不能挂载具有明确不一致地方的读/写文件系统。如果从 mount 或 mountall 命令收到错误消息,则可能需要检查文件系统。有关如何检查文件系统的信息,请参见第 22 章,检查 UFS 文件系统一致性(任务)。
umount 和 umountall 命令不会取消挂载繁忙的文件系统。如果以下条件之一成立,则认为文件系统繁忙:
用户正在访问文件系统中的文件或目录。
程序打开了文件系统中的文件。
文件系统被共享。
仅当从只读访问重新挂载为读写访问时,才可以使用 remount 选项。不能从读写访问重新挂载为只读访问。
下表介绍了可以使用 mount -o 选项指定的常用选项。如果指定多个选项,请使用逗号(无空格)将其分隔。例如,-o ro,nosuid。
有关每种文件系统类型的挂载选项的完整列表,请参阅特定的挂载手册页(例如 mount_ufs(1M))。
表 19–2 常用的 -o 挂载选项
挂载选项 |
文件系统 |
说明 |
---|---|---|
bg | fg |
NFS |
如果第一个挂载尝试失败,请在后台 (bg) 或前台 (fg) 重试其他挂载。此选项对于非关键的 vfstab 项是安全的。缺省情况下使用 fg。 |
hard | soft |
NFS |
如果服务器没有响应,则指定过程。soft 选项表示返回了错误。hard 选项表示继续重试请求,直到服务器响应为止。缺省情况下使用 hard。 |
intr | nointr |
NFS |
指定在硬挂载的文件系统上等待响应时,是否将键盘中断传送到挂起的进程。缺省情况下使用 intr(允许中断)。 |
largefiles | nolargefiles |
UFS |
可用于创建大于 2 GB 的文件。largefiles 选项意味着使用此选项挂载的文件系统可能包含大于 2 GB 的文件。如果指定了 nolargefiles 选项,则无法在运行 Solaris 2.6 或兼容版本的系统上挂载文件系统。缺省情况下使用 largefiles。 |
logging | nologging |
UFS |
用于启用或禁用文件系统的日志记录。UFS 日志记录是在将事务(构成完整 UFS 操作的更改)应用于 UFS 文件系统之前将事务存储到日志中的过程。日志记录有助于防止 UFS 文件系统变得不一致,这意味着可以跳过 fsck。跳过 fsck 可减少系统崩溃或异常关闭系统后重新引导系统的时间。 日志是通过文件系统上的空闲块分配的,对于每 1 GB 文件系统其大小约为 1 MB,最大为 64 MB。缺省情况下使用 logging。 |
atime | noatime |
UFS |
限制文件的访问时间更新,但是如果更新与对上次更改文件状态的时间或上次修改文件的时间的更新一致则除外。有关更多信息,请参见 stat(2)。此选项可减少访问时间不重要的文件系统上的磁盘活动(例如,Usenet 新闻假脱机)。缺省情况下会记录常规访问时间 (atime)。 |
remount |
所有 |
更改与已挂载的文件系统关联的挂载选项。通常,此选项可以与除 ro 之外的任何选项结合使用。但是,使用此选项可进行的更改取决于文件系统的类型。 |
retry=n |
NFS |
在挂载操作失败时重试该操作。n 是重试的次数。 |
ro | rw |
CacheFS、NFS、PCFS、UFS、HSFS |
指定读/写 (rw) 或只读 (ro)。如果不指定此选项,则缺省情况下使用 rw。HSFS 的缺省选项是 ro。 |
suid | nosuid |
CacheFS、HSFS、NFS、UFS |
允许或禁止执行 setuid。缺省情况下允许执行 setuid。 |
/etc/vfstab 文件中的项包含七个字段,下表介绍了这些字段。
表 19–3 /etc/vfstab 文件的字段说明
字段名 |
说明 |
---|---|
device to mount |
此字段可标识以下内容之一:
|
device to fsck |
与 device to mount 字段标识的 UFS 文件系统对应的原始(字符)设备名称(例如 /dev/rdsk/c0t0d0s0)。此字段可确定 fsck 命令使用的原始接口。如果没有适用设备,请使用连字符 (-),如对于只读文件系统或远程文件系统。 |
mount point |
标识挂载文件系统的位置(例如 /usr)。
|
FS type |
标识文件系统的类型。 |
fsck pass |
此字段为 fsck 命令用来确定是否检查文件系统的传送号。如果此字段包含短划线 (-),则不会检查文件系统。 如果此字段包含零,则不会检查 UFS 文件系统。但是,会检查非 UFS 文件系统。如果此字段包含的值大于零,则会始终检查文件系统。 对于此字段中的值为 1 的所有文件系统,将按它们在 vfstab 文件中出现的顺序进行检查(每次检查一个)。如果在 fsck pass 值大于 1 的多个 UFS 文件系统上运行 fsck 命令并且使用了整理选项 (-o p),则 fsck 命令将自动并行检查不同磁盘上的文件系统,以最大程度地提高效率。否则,传送号的值没有任何作用。 |
mount at boot |
设置为 yes 或 no,以指示在引导系统时 mountall 命令是否应该自动挂载文件系统。请注意,此字段与 AutoFS 无关。根 (/)、/usr 和 /var 文件系统最初不是从 vfstab 文件挂载的。对于这些文件系统以及诸如 /proc 和 /dev/fd 之类的虚拟文件系统,此字段应该始终设置为 no。 |
mount options |
挂载文件系统时使用的一系列以逗号分隔的选项(中间无空格)。使用短划线 (-) 表示没有选项。有关常用挂载选项的列表,请参见表 19–2。 |
必须为 /etc/vfstab 文件中的每个字段输入一个值。如果某个字段没有值,请务必指定一个短划线 (-)。否则,系统可能无法成功引导。同样,字段值也不能为空白。
以下各节介绍如何通过在 /etc/vfstab 文件中添加项或从命令行使用 mount 命令来挂载文件系统。
$ mount [ -v ] |
-v 可以详细模式显示已挂载文件系统的列表。
此示例说明如何使用 mount 命令显示有关当前挂载的文件系统的信息。
$ mount / on /dev/dsk/c0t0d0s0 read/write/setuid/intr/largefiles/xattr/onerror=... /devices on /devices read/write/setuid/dev=46c0000 on Thu Sep ... /system/contract on ctfs read/write/setuid/devices/dev=43c0001 ... /usr on /dev/dsk/c0t0d0s6 read/write/setuid/intr/largefiles/xattr/... /proc on /proc read/write/setuid/dev=4700000 on Thu Sep 2 ... /etc/mnttab on mnttab read/write/setuid/dev=47c0000 on Thu Sep 2 ... /etc/svc/volatile on swap read/write/setuid/devices/xattr/dev=4480001 ... /system/object on objfs read/write/setuid/devices/dev=44c0001 ... /dev/fd on fd read/write/setuid/dev=4800000 on Thu Sep 2 ... /var/run on swap read/write/setuid/xattr/dev=1 on Thu Sep 2 ... /tmp on swap read/write/setuid/xattr/dev=2 on Thu Sep 2 ... /stuff on /dev/dsk/c0t0d0s5 read/write/setuid/intr/largefiles/xattr... /export/home on /dev/dsk/c0t0d0s7 read/write/setuid/intr/largefiles/... /home/rimmer on pluto:/export/home/rimmer remote/read/write/setuid/xattr/... $ |
成为超级用户或承担等效角色。
如有必要,请为要挂载的文件系统创建挂载点。
# mkdir /mount-point |
编辑 /etc/vfstab 文件并添加项。请确保执行以下操作:
有关 /etc/vfstab 字段各项的详细信息,请参见表 19–3。
由于在引导过程中内核会将根 (/) 文件系统挂载为只读,因此只有 remount 选项(以及可以与 remount 结合使用的选项)会影响 /etc/vfstab 文件中的根 (/) 项。
以下示例说明如何将磁盘片 /dev/dsk/c0t3d0s7 作为 UFS 文件系统挂载到挂载点 /files1。原始字符设备 /dev/rdsk/c0t3d0s7 会指定为 device to fsck。fsck pass 值为 2 意味着将检查文件系统,但不是按顺序检查。
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # /dev/dsk/c0t3d0s7 /dev/rdsk/c0t3d0s7 /files1 ufs 2 yes - |
以下示例说明如何将 /export/man 目录作为 NFS 文件系统从系统 pluto 挂载到挂载点 /usr/man 上。由于该目录是 NFS 文件系统,因此既不会指定 device to fsck 也不会指定 fsck pass。在本示例中,mount options 为 ro(只读)和 soft。
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options pluto:/export/man - /usr/man nfs - yes ro,soft |
以下示例说明如何将根 (/) 文件系统挂载到回送挂载点 /tmp/newroot 上。必须始终在 LOFS 文件系统中的文件系统之后挂载 LOFS 文件系统。
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # / - /tmp/newroot lofs - yes - |
成为超级用户或承担等效角色。
挂载 /etc/vfstab 文件中列出的文件系统。
# mount /mount-point |
其中 /mount-point 指定了 /etc/vfstab 文件的 mount point 或 device to mount 字段中的项。通常,指定挂载点较为容易。
以下示例说明如何挂载 /etc/vfstab 文件中列出的 /usr/dist 文件系统。
# mount /usr/dist |
以下示例说明在已挂载文件系统的情况下使用 mountall 命令时显示的消息。
# mountall /dev/rdsk/c0t0d0s7 already mounted mount: /tmp already mounted mount: /dev/dsk/c0t0d0s7 is already mounted, /export/home is busy, or the allowable number of mount points has been exceeded |
使用 mountall 命令时,在挂载具有 device to fsck 项的所有文件系统之前,将对其进行检查和修复(如有必要)。
以下示例说明如何挂载 /etc/vfstab 文件中列出的所有本地系统。
# mountall -l # mount / on /dev/dsk/c0t0d0s0 read/write/setuid/intr/largefiles/xattr/onerror=... /devices on /devices read/write/setuid/dev=46c0000 on Thu Sep ... /system/contract on ctfs read/write/setuid/devices/dev=43c0001 ... /usr on /dev/dsk/c0t0d0s6 read/write/setuid/intr/largefiles/xattr/... /proc on /proc read/write/setuid/dev=4700000 on Thu Sep 2 ... /etc/mnttab on mnttab read/write/setuid/dev=47c0000 on Thu Sep 2 ... /etc/svc/volatile on swap read/write/setuid/devices/xattr/dev=4480001 ... /system/object on objfs read/write/setuid/devices/dev=44c0001 ... /dev/fd on fd read/write/setuid/dev=4800000 on Thu Sep 2 ... /var/run on swap read/write/setuid/xattr/dev=1 on Thu Sep 2 ... /tmp on swap read/write/setuid/xattr/dev=2 on Thu Sep 2 ... /stuff on /dev/dsk/c0t0d0s5 read/write/setuid/intr/largefiles/xattr... /export/home on /dev/dsk/c0t0d0s7 read/write/setuid/intr/largefiles/... |
以下示例说明如何挂载 /etc/vfstab 文件中列出的所有远程文件系统。
# mountall -r # mount / on /dev/dsk/c0t0d0s0 read/write/setuid/intr/largefiles/xattr/onerror=... /devices on /devices read/write/setuid/dev=46c0000 on Thu Sep ... /system/contract on ctfs read/write/setuid/devices/dev=43c0001 ... /usr on /dev/dsk/c0t0d0s6 read/write/setuid/intr/largefiles/xattr/... /proc on /proc read/write/setuid/dev=4700000 on Thu Sep 2 ... /etc/mnttab on mnttab read/write/setuid/dev=47c0000 on Thu Sep 2 ... /etc/svc/volatile on swap read/write/setuid/devices/xattr/dev=4480001 ... /system/object on objfs read/write/setuid/devices/dev=44c0001 ... /dev/fd on fd read/write/setuid/dev=4800000 on Thu Sep 2 ... /var/run on swap read/write/setuid/xattr/dev=1 on Thu Sep 2 ... /tmp on swap read/write/setuid/xattr/dev=2 on Thu Sep 2 ... /stuff on /dev/dsk/c0t0d0s5 read/write/setuid/intr/largefiles/xattr... /stuff on /dev/dsk/c0t0d0s5 read/write/setuid/intr/largefiles/xattr... /export/home on /dev/dsk/c0t0d0s7 read/write/setuid/intr/largefiles/... /home/rimmer on pluto:/export/home/rimmer remote/read/write/setuid/xattr/... |
成为超级用户或承担等效角色。
如有必要,请为要挂载的文件系统创建挂载点。
# mkdir /mount-point |
本地系统上必须存在挂载点才能挂载文件系统。挂载点是要向其附加已挂载文件系统的目录。
挂载 UFS 文件系统。
# mount [-o mount-options] /dev/dsk/device-name /mount-point |
指定可以用来挂载 UFS 文件系统的挂载选项。有关选项的列表,请参见表 19–2 或 mount_ufs(1M)。
指定包含文件系统的片的磁盘设备名称(例如 /dev/dsk/c0t3d0s7)。 要查看磁盘的片信息,请参见如何显示磁盘片信息。
指定要挂载文件系统的目录。
以下示例说明如何将 /dev/dsk/c0t3d0s7 挂载到 /files1 目录上。
# mount /dev/dsk/c0t3d0s7 /files1 |
挂载文件系统时,缺省情况下会选用 largefiles 选项。使用此选项可以创建大于 2 GB 的文件。一旦文件系统包含大文件,就无法使用 nolargefiles 选项重新挂载文件系统或将其挂载到运行 Solaris 2.6 或兼容版本的系统上,直到删除任何大文件并运行 fsck 命令将状态重置为 nolargefiles 为止。
此过程假定文件系统包含在 /etc/vfstab 文件中。
如有必要,请为要挂载的文件系统创建挂载点。
# mkdir /mount-point |
本地系统上必须存在挂载点才能挂载文件系统。挂载点是要向其附加已挂载文件系统的目录。
确保文件系统中不存在大文件。
# cd /mount-point # find . -xdev -size +20000000 -exec ls -l {} \; |
其中 /mount-point 用于标识要检查是否包含大文件的文件系统的挂载点。
如有必要,请删除此文件系统中的任何大文件或将其移动到其他文件系统。
取消挂载文件系统。
# umount /mount-point |
重置文件系统状态。
# fsck /mount-point |
使用 nolargefiles 选项重新挂载文件系统。
# mount -o nolargefiles /mount-point |
以下示例说明如何检查 /datab 文件系统并使用 nolargefiles 选项将其重新挂载。
# cd /datab # find . -xdev -size +20000000 -exec ls -l {} \; # umount /datab # fsck /datab # mount -o nolargefiles /datab |
成为超级用户或承担等效角色。
如有必要,请为要挂载的文件系统创建挂载点。
# mkdir /mount-point |
本地系统上必须存在挂载点才能挂载文件系统。挂载点是要向其附加已挂载文件系统的目录。
确保资源(文件或目录)在服务器中可用。
要挂载 NFS 文件系统,必须使用 share 命令使资源在服务器中可用。有关如何共享资源的信息,请参见《系统管理指南:网络服务》中的“关于 NFS 服务”。
挂载 NFS 文件系统。
# mount -F nfs [-o mount-options] server:/directory /mount-point |
指定可以用来挂载 NFS 文件系统的挂载选项。有关常用的 mount 选项的列表,请参见表 19–2;有关选项的完整列表,请参见 mount_nfs(1M)。
指定包含共享资源的服务器主机名,以及要挂载的文件或目录的路径。
指定要挂载文件系统的目录。
以下示例说明如何将 /export/packages 目录从服务器 pluto 挂载到 /mnt 上。
# mount -F nfs pluto:/export/packages /mnt |
使用以下过程可从硬盘挂载 PCFS (DOS) 文件系统。
成为超级用户或承担等效角色。
如有必要,请为要挂载的文件系统创建挂载点。
# mkdir /mount-point |
本地系统上必须存在挂载点才能挂载文件系统。挂载点是要向其附加已挂载文件系统的目录。
挂载 PCFS 文件系统。
# mount -F pcfs [-o rw | ro] /dev/dsk/device-name:logical-drive /mount-point |
指定可以将 PCFS 文件系统挂载为读/写 (rw) 还是只读 (ro)。如果不指定此选项,则缺省情况下使用 rw。
指定整个磁盘的设备名称(例如 /dev/dsk/c0t0d0p0)。
指定 DOS 逻辑驱动器名(c 到 z)或驱动器号(1 到 24)。驱动器 c 相当于驱动器 1,表示驱动器上的主 DOS 片。所有其他字母或数字均表示扩展的 DOS 片内的 DOS 逻辑驱动器。
指定要挂载文件系统的目录。
请注意,必须使用冒号分隔 device-name 和 logical-drive。
以下示例说明如何将主 DOS 片中的逻辑驱动器挂载到 /pcfs/c 目录上。
# mount -F pcfs /dev/dsk/c0t0d0p0:c /pcfs/c |
以下示例说明如何在 /mnt 目录上将扩展的 DOS 片中的第一个逻辑驱动器挂载为只读。
# mount -F pcfs -o ro /dev/dsk/c0t0d0p0:2 /mnt |
取消挂载文件系统会将该文件系统从文件系统挂载点删除,并从 /etc/mnttab 文件中删除相应项。部分文件系统管理任务无法在已挂载的文件系统上执行。出现以下情况时,应取消挂载文件系统:
文件系统不再需要,或者已被包含更新的软件的文件系统所替换。
需要使用 fsck 命令检查和修复文件系统。有关 fsck 命令的更多信息,请参见第 22 章,检查 UFS 文件系统一致性(任务)。
进行完整备份之前,应取消挂载文件系统。有关进行备份的更多信息,请参见第 25 章,备份文件和文件系统(任务)。
在系统关闭过程中,会自动取消挂载文件系统。
在紧急情况下,可以使用 umount -f 选项强制取消挂载繁忙的文件系统。建议在正常情况下不要使用此做法,因为取消挂载包含打开文件的文件系统可能会导致数据丢失。此选项只能用于 UFS 和 NFS 文件系统。
取消挂载文件系统的先决条件包括:
您必须是超级用户或承担等效角色。
必须有一个文件系统可用于取消挂载。不能取消挂载繁忙的文件系统。如果出现以下任一情况,则认为文件系统繁忙:用户正在访问文件系统中的目录,程序打开了该文件系统中的文件,文件系统正在被共享。通过执行以下操作,可以使文件系统可用于取消挂载:
转到其他文件系统中的目录。
从系统中注销。
使用 fuser 命令列出正在访问文件系统的所有进程并将其停止(如有必要)。有关更多详细信息,请参见如何停止访问文件系统的所有进程。
如果需要取消挂载用户正在使用的文件系统,请通知他们。
取消共享文件系统。有关取消共享文件系统的信息,请参见 unshare(1M)。
要验证是否已取消挂载一个或多个系统,请检查 mount 命令的输出。
$ mount | grep unmounted-file-system $ |
列出正在访问文件系统的所有进程,以便确定要停止的进程。
# fuser -c [ -u ] /mount-point |
针对文件系统挂载点的文件以及那些已挂载文件系统内的任何文件进行报告。
显示每个进程 ID 的用户登录名。
指定要为其停止进程的文件系统的名称。
停止正在访问文件系统的所有进程。
# fuser -c -k /mount-point |
SIGKILL 会发送到正在使用文件系统的每个进程。
在没有首先警告用户的情况下,不应停止用户进程。
验证是否没有进程正在访问文件系统。
# fuser -c /mount-point |
以下示例说明如何停止正在使用 /export/home 文件系统的进程 4006c。
# fuser -c /export/home /export/home: 4006c # fuser -c -k /export/home /export/home: 4006c # fuser -c /export/home /export/home: |
使用以下过程可取消挂载除根 (/)、/usr 或 /var 文件系统之外的文件系统。
根 (/)、/usr 和 /var 文件系统只能在关机过程中取消挂载。系统需要有这些文件系统才能正常工作。
确保已满足取消挂载文件系统的先决条件中列出的先决条件。
取消挂载文件系统。
# umount /mount-point |
其中 /mount-point 是要取消挂载的文件系统的名称。这可以是以下各项之一:
挂载文件系统的目录的名称
文件系统的设备名称路径
NFS 文件系统的资源
LOFS 文件系统的回送目录
以下示例说明如何取消挂载本地起始文件系统。
# umount /export/home |
以下示例说明如何取消挂载片 7 上的文件系统。
# umount /dev/dsk/c0t0d0s7 |
以下示例说明如何强制取消挂载 /export 文件系统。
# umount -f /export # |
以下示例说明如何取消挂载 /etc/vfstab 文件中除根 (/)、/proc、/var 和 /usr 文件系统之外的所有文件系统。
# umountall |
除繁忙的那些文件系统以外,将取消挂载其他所有文件系统。