linux mount命令

概要

该命令用来挂在(虚拟)文件系统

命令

mount -t type [-o options] device dir

参数

解释

device

指定要挂载的设备,比如磁盘、光驱等

dir

指定把文件系统挂载到哪个目录

type

指定挂载的文件系统类型,一般不用指定(除非是虚拟文件系统),mount 命令能够自行判断

options

指定挂载参数,比如 ro 表示以只读方式挂载文件系统

形式

查看系统支持的文件类型

cat /proc/filesystems

nodev	sysfs
nodev	rootfs
nodev	bdev
nodev	proc
nodev	cgroup
nodev	cpuset
nodev	tmpfs
nodev	devtmpfs
nodev	binfmt_misc
nodev	debugfs
nodev	securityfs
nodev	sockfs
nodev	usbfs
nodev	pipefs
nodev	anon_inodefs
nodev	inotifyfs
nodev	devpts
nodev	ramfs
nodev	hugetlbfs
	iso9660
nodev	pstore
nodev	mqueue
	ext4
	xfs

第一列说明文件系统是否需要挂载在一个块设备上, nodev 表明后面的文件系统不需要挂接在块设备上。 第二列是内核支持的文件系统。

查看已挂载的文件系统

mount

/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/sdb1 on /home type xfs (rw,noatime,nobarrier)
/dev/sda4 on /tmp type xfs (rw,noatime,nobarrier)
/dev/sda5 on /var/log type xfs (rw,noatime,nobarrier)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

输出格式

fs_spec on fs_file type fs_vfstype (fs_mntopts)

参数

解释

fs_spec

挂载的块设备或远程文件系统

fs_file

文件系统的挂载点

fs_vfstype

文件系统的类型

fs_mntopts

与文件系统相关的更多选项,不同的文件系统其选项也不太一样

另一种查看目录与文件系统的方式

df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        54G   18G   33G  36% /
tmpfs            63G   24K   63G   1% /dev/shm
/dev/sda1       923M   78M  798M   9% /boot
/dev/sdb1       2.2T  1.5T  762G  66% /home
/dev/sda4       112G   33M  112G   1% /tmp
/dev/sda5       105G  2.5G  102G   3% /var/log

除了tmpfs外,展示的都是块设备的文件系统挂载点。它还能展示当前文件系统的使用情况。

如果只看当前目录的所属的文件系统:

df -h .

只查看特定类型的文件系统

mount -t tmpfs

硬盘挂载的3个步骤

创建分区(fdisk

在分区上建立文件系统(mkfs)

挂载分区(mount)

挂载虚拟文件系统

#将内核的proc文件系统挂载到/mnt,
#这样就可以在/mnt目录下看到系统当前运行的所有进程的信息,
#由于proc是内核虚拟的一个文件系统,并没有对应的设备,
#所以这里-t参数必须要指定,不然mount就不知道要挂载啥了。
#由于没有对应的源设备,这里none可以是任意字符串,
#取个有意义的名字就可以了,因为用mount命令查看挂载点信息时第一列显示的就是这个字符串。
dev@ubuntu:~$ sudo mount -t proc none /mnt

#在内存中创建一个64M的tmpfs文件系统,并挂载到/mnt下,
#这样所有写到/mnt目录下的文件都存储在内存中,速度非常快,
#不过要注意,由于数据存储在内存中,所以断电后数据会丢失掉
dev@ubuntu:~$ sudo mount -t tmpfs -o size=64m tmpfs /mnt

目录与文件系统的对应关系

一个目录可以重复挂载多个文件系统,类似于stact,只有最后一次挂载有效。当使用umount命令后,当前挂载的文件系统被取消,该目录关联到次一级文件系统中。

多个目录也可以关联到同一文件系统,这样没有目录里展示的内容应该是一致的。

mount bind

如果说mount主要挂载块设备,bind mount则可以将任何一个挂载点、普通目录或者文件挂载到其他地方

bind mount会将源目录绑定到目的目录,然后在目的目录下就可以看到源目录里的文件

#准备要用到的目录
dev@ubuntu:~$ mkdir -p bind/bind1/sub1
dev@ubuntu:~$ mkdir -p bind/bind2/sub2
dev@ubuntu:~$ tree bind
bind
├── bind1
│   └── sub1
└── bind2
    └── sub2

#bind mount后,bind2里面显示的就是bind1目录的内容
dev@ubuntu:~$ sudo mount --bind ./bind/bind1/ ./bind/bind2
dev@ubuntu:~$ tree bind
bind
├── bind1
│   └── sub1
└── bind2
    └── sub1

bind mount是可以指定readonly属性

我们也可以bind mount单个文件,这个功能尤其适合需要在不同版本配置文件之间切换的时候

#创建两个用于测试的文件
dev@ubuntu:~$ echo aaaaaa > bind/aa
dev@ubuntu:~$ echo bbbbbb > bind/bb
dev@ubuntu:~$ cat bind/aa
aaaaaa
dev@ubuntu:~$ cat bind/bb
bbbbbb

#bind mount后,bb里面看到的是aa的内容
dev@ubuntu:~$ sudo mount --bind ./bind/aa bind/bb
dev@ubuntu:~$ cat bind/bb
aaaaaa

#即使我们删除aa文件,我们还是能够通过bb看到aa里面的内容
dev@ubuntu:~$ rm bind/aa
dev@ubuntu:~$ cat bind/bb
aaaaaa

#umount bb文件后,bb的内容出现了,不过aa的内容再也找不到了
dev@ubuntu:~$ sudo umount bind/bb
dev@ubuntu:~$ cat bind/bb
bbbbbb

相关命令

umount. -- 取消挂载

你可能感兴趣的:(操作系统,linux,bash,运维)