本文首发于我的公众号码农之屋(id: Spider1818),专注于干货分享,包含但不限于Java编程、网络技术、Linux内核及实操、容器技术等。欢迎大家关注,二维码文末可以扫。
1 mount简介
对mount命令进行介绍之前,先简单解释下什么是“挂载”。“一切皆为文件”是linux系统的基本哲学之一,linux将所有设备都看作是文件,并为它们提供了一套统一的操作接口。当插入一块新硬盘时,起初我们是无法使用linux命令访问该硬盘内容,这是因为linux系统还识别不到它的存在。而后我们将新硬盘的分区挂载到linux根目录/的某个子目录下(最好为空),我们就可以通过访问该子目录间接访问新硬盘分区内容了。顾名思义,“挂载”就是将某个设备挂接到一个已存在的目录上,访问该目录就等同于访问被挂载的设备。
mount命令用于将分区挂接到linux根目录下的某个子目录下,从而将分区和该目录衔接起来,只要访问该子目录,就等同于访问了该分区。
1.1 命令格式
mount -t <vsftype> [option] [-o spec_option] devicedir
1.2 常见vsftype
文件系统类型 | 说明 |
ext2 | linux目前常用的文件系统 |
msdos | MS-DOS的fat |
nfs | 网络文件系统 |
iso9660 | CD-ROM光盘标准文件系统 |
ntfs | windows NT/2000/XP的文件系统 |
说明:-t <vsftype>,指定被挂载设备的文件系统类型(可通过查看/proc/filesystems内容,了解当前系统支持哪些文件系统类型;如果不指定,会自动选择正确的类型)。
1.3常用option
option | 说明 |
-a | 自动检查/etc/fstab文件中是否有疏漏未被挂载的设备,如果有,则自动执行挂载操作 |
-o | 指定挂载的特殊选型,比如读写权限等(如果不指定,则使用默认值) |
-n | 系统默认会把挂载情况写入/etc/mtab中,但有些场景会刻意不写入,此时就需要使用该选项 |
-r | 设置被挂载文件为只读权限 |
-w | 设置被挂载文件为可写权限(默认为可写) |
1.4特殊option
spec_option | 说明 |
defaults | 使用所有选项的默认值(auto、nouser、rw、suid) |
auto/noaunto | 允许/不允许以-a选项进行安装 |
user /nouser | 允许/不允许一般用户挂载 |
ro | 以只读方式进行挂载 |
rw | 以读写方式进行挂载 |
remount | 重新安装已经安装了的文件系统 |
1.5 mount示例
1)查看已挂载的文件系统信息
root@LTY:/opt # mount
sysfs on /systype sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proctype proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /devtype devtmpfs (rw,nosuid,size=14605236k,nr_inodes=3651309,mode=755)
securityfs on/sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
...
说明:输出信息格式为fs_spec on fs_file type fs_vfstype(fs_mntopts)
格式 | 说明 |
fs_spec | 被挂载的块设备或远程文件系统 |
fs_file | 文件系统挂载点 |
fs_vfstype | 文件系统类型 |
fs_mntopts | 与文件系统相关的选项,不同文件系统,其选项也不太一样 |
2)输出文件系统为类型为tmpfs的文件系统信息(也可以使用findmnt命令查看挂载情况,命令格式为findmnt MOUNT_POINT | device)
root@LTY:/opt # mount-t tmpfs
tmpfs on/dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /runtype tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /tmptype tmpfs (rw,nosuid,nodev)
tmpfs on/run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=2929992k,mode=700)
3)将tmpfs挂载在/mnt/lty目录下(mount + 挂载源 + 挂载点),然后用df命令查看是否已经挂载成功
root@LTY:/opt # mounttmpfs /mnt/lty
root@LTY:/opt # df| grep tmpfs
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 14649972 0 14649972 0% /dev/shm
tmpfs 14649972 224168 14425804 2% /run
tmpfs 14649972 0 14649972 0% /mnt/lty
2 umount简介
umount命令用于卸载目前挂载在linux目录的文件系统。使用umount进行卸载时,最好使用挂载点进行卸载,避免卸载时发生混乱(可能一个设备挂载了多个挂载点)。
2.1 命令格式
umount [option] [设备名or 挂载点]
2.2 umount常用option
option | 说明 |
-a | 卸除/etc/mtab中记录的所有文件系统 |
-n | 卸除时不要将信息存入/etc/mtab文件中 |
-r | 若无法成功卸除,则尝试以只读的方式重新挂入文件系统 |
-t<文件系统类型> | 仅卸除选项中所指定的文件系统 |
-v | 执行时显示详细的信息 |
说明:进程正在使用的设备是无法卸载的,可使用lsof MOUNT_POINT查看挂载点上运行的进程,然后使用kill命令杀死进程;或使用fuser -vmk MOUNT_POINT,查看并杀死在挂载点上运行的进程。最后再执行umount命令。
2.3 umount示例
1)根据设备名进行卸载(/dev/sha1)
root@LTY:/opt # umount-v /dev/sda1
/dev/sda1umounted
2)根据挂载点进行卸载(/mnt/mymount),此时无进程正在使用设备
root@LTY:/opt # umount-v /mnt/mymount/
/tmp/diskboot.imgumounted
3)根据挂载点进行卸载(/mnt/mymount),此时有进程正在使用设备(使用fuser命令杀死挂载点上的进程)
root@LTY:/opt # umount-v /mnt/mymount/
umount:/mnt/mymount: device is busy
root@LTY:/opt # fuser-vmk /mnt/mymount/
root@LTY:/opt # umount-v /mnt/mymount/
/tmp/diskboot.imgumounted
我的公众号「码农之屋」(id: Spider1818) ,分享的内容包括但不限于 Linux、网络、云计算虚拟化、容器Docker、OpenStack、Kubernetes、SDN、OVS、DPDK、Go、Python、C/C++编程技术等内容,欢迎大家关注。