mount 命令用来挂载文件系统。其基本命令格式为:
mount -t type [-o options] device dir
device:指定要挂载的设备,比如磁盘、光驱等。
dir:指定把文件系统挂载到哪个目录。
type:指定挂载的文件系统类型,一般不用指定,mount 命令能够自行判断。
options:指定挂载参数,比如 ro 表示以只读方式挂载文件系统。
可以通过 man page 和 -h 选项来获得最直接的帮助文档:
$ man mount $ mount -h
虽然多数情况下我们不用指定 -t 参数显式地说明文件系统的类型,但文件系统的类型对 mount 命令来说确实是非常重要的。原因是假如你要挂载一个当前系统不支持的文件系统,它是没办法工作的。当前系统支持的文件系统类型是由内核来决定的,比如 ext2、ext3、ext4、sysfs 和 proc 等常见的文件系统默认都是被支持的。我们可以通过查看 /proc/filesystems 文件来观察当前系统具体都支持哪些文件系统:
$ cat /proc/filesystems
第一列说明文件系统是否需要挂载在一个块设备上, nodev 表明后面的文件系统不需要挂接在块设备上。 第二列是内核支持的文件系统。
通过 mount 命令查看已挂载的文件系统,会输出丰富的信息,如下图所示:
让我们先来解释一下输出信息的格式和含义。输出中的每行代表挂载的一个文件系统,其格式为:
fs_spec on fs_file type fs_vfstype (fs_mntopts)
fs_spec:挂载的块设备或远程文件系统
fs_file:文件系统的挂载点
fs_vfstype:文件系统的类型
fs_mntopts:与文件系统相关的更多选项,不同的文件系统其选项也不太一样
比如上图中的第一行含义为:挂载的设备为%20sysfs,挂载点为%20/sys,文件系统的类型为%20sysfs。括号中的%20rw%20表示以可读写的方式挂载文件系统,noexec%20表示不能在该文件系统上直接运行程序。
/etc/fstab
/etc/mtab
/proc/mounts
mount%20-a%20会将%20/etc/fstab%20中定义的所有挂载点都挂上(一般是在系统启动时的脚本中调用,自己最好别用!)。
mount%20和%20umount%20命令会在%20/etc/mtab%20文件中维护当前挂载的文件系统的列表,这个文件在目前的系统中还是被支持的。但是更好的方式是用链接文件%20/proc/mounts%20代替%20/etc/mtab%20文件。这是因为在用户空间中维护的普通文件%20/etc/mtab%20很难稳定可靠的与%20namespaces、containers%20等%20Linux%20的高级功能协作。在%20ubuntu%2016.04%20上,%20/etc/mtab%20和%20/proc/mounts%20一样,都是指向%20/proc/self/mounts%20的链接文件。
下面我们介绍一些%20mount%20命令的常见用例。
输出系统挂载的所有文件系统
如果执行%20mount%20命令时不加任何参数,就会输出系统挂载的所有文件系统:
$%20mount
输出指定类型的文件系统
通过%20-t%20参数可以只输出指定类型的文件系统,比如下面的命令只会输出%20tmpfs%20类型的文件系统:
$%20mount%20-t%20tmpfs
对于一个磁盘分区,我们可以使用%20mkfs%20命令把磁盘分区格式化为指定的文件系统,比如%20ext4:
$ sudo mkfs -t ext4 /dev/sdb1
然后把该分区挂载到 /mnt 目录:
$ sudo mount /dev/sdb1 /mnt