驻留在 SATA/PATA 或者 SCSI 设备上的文件系统需要手动安装才能访问它。
mount 命令允许 root 用户手动挂载文件系统。
mount 命令的第一个参数指定要挂载的文件系统。
第二个参数指定文件系统在挂载后可用的目标目录。
目标目录称为挂载点。
使用 mount 挂载文件系统的一般语法是:
# mount [-t file_system_type] [-o mount_options] device mount_point_directory
通过使用 mount,我们可以覆盖 /etc/fstab 中的默认设置。
例如,输入以下内容将分区 /dev/sdd1 挂载到目录 /data:
# mount /dev/sdd1 /data
我们通常不指定文件系统类型,因为它是自动识别的(在超级块中使用幻数,或者只是通过尝试不同的文件系统类型;有关详细信息,请参阅 man mount)。
以下是在使用命令 mount 或者通过在 /etc/fstab 中输入它们来挂载文件系统时可以使用的一些选项。
- remount。此选项会导致已挂载的文件系统再次挂载。当我们更改 /etc/fstab 中的选项时,我们可以使用 remount 来合并更改。
- rw, ro 。这些选项指示文件系统是可写 (rw) 还是只读 (ro)。
- sync, async。这些选项设置文件系统中的同步 (sync) 或者异步 (async) 输入和输出。默认设置为异步。
- atime, noatime。这些选项设置是否在 inode (atime) 中更新文件的访问时间 (noatime)。选项 noatime 应该可以提高性能。
- nodev, dev。 nodev 选项可防止在文件系统中解释设备文件。
- noexec, exec。我们可以使用选项 noexec 禁止在文件系统上执行程序。
- nosuid, suid。 nosuid 选项确保文件系统中的 suid 和 sgid 位被忽略。
某些选项仅在文件 /etc/fstab 中有意义。
这些选项包括:
- auto, noauto。系统启动时,在文件 /etc/fstab 中使用选项 noauto 设置的文件系统不会自动挂载。
- user, nouser。此选项允许用户挂载文件系统。通常,这是用户 root 的特权。
- defaults。此选项会导致使用默认选项 rw、suid、dev、exec、auto、nouser 和 async。
选项 noauto 和 user 通常结合用于可移动媒体,例如软盘或者 CD-ROM 驱动器。
卸载文件系统
挂载文件系统后,我们可以使用 umount 命令(不带“n”)卸载文件系统。
我们可以通过对设备或者挂载点使用 umount 来卸载文件系统。
例如,要卸载安装在 /data 的文件系统 (dev/sdd1),我们可以输入以下内容之一:
# umount /data
或者
umount /dev/sdd1
为了卸载文件系统,任何应用程序或者用户都不得使用该文件系统。
如果正在使用,Linux 将文件系统视为“忙”,并拒绝卸载文件系统并产生以下错误。
# umount /data umount: /data: target is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
如果挂载点被进程访问,则无法卸载。
要使 umount 成功,进程需要停止访问挂载点。
lsof 命令在提供的目录中列出所有打开的文件和访问它们的进程。
确定当前阻止文件系统成功卸载的进程很有用。
# lsof /data COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 1160 root cwd DIR 253,1 180 4194369 /root rsyslogd 566 root cwd DIR 253,1 224 64 / ...
我们还可以使用 fuser 命令获取当前在要卸载的 mpunt 点上运行的进程的进程 ID。
# fuser -cu /data
我们还可以使用 fuser 命令终止挂载点上的所有进程。
# fuser -ck /data
一旦识别出进程,就可以采取行动,例如等待进程完成或者向进程发送 SIGTERM 或者 SIGKILL 信号。
在这种情况下,卸载挂载点就足够了。
# umount /data
注意:挂载点上的文件系统繁忙的一个常见原因是 shell 提示的当前工作目录低于活动挂载点。
访问挂载点的进程是bash。
更改到挂载点之外的目录允许卸载设备。
查看当前挂载的文件系统
我们可以通过输入命令 mount 查看当前挂载的文件系统。
出现类似如下信息:
# mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=487424k,nr_inodes=121856,mode=755) /dev/vda1 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota) ...
我们还可以在文件 /proc/mounts 中查看此信息。
强制卸载文件系统
有时,无论我们尝试做什么,系统(内核)都会将文件系统视为繁忙。
在这些情况下,我们可以输入 umount -f 以强制卸载文件系统。
但是,我们建议仅将其用作最后的手段,因为内核认为文件系统仍处于挂载状态可能是有原因的。
# umount -f /mount_point