该命令用来挂在(虚拟)文件系统
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
创建分区(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会将源目录绑定到目的目录,然后在目的目录下就可以看到源目录里的文件
#准备要用到的目录
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. -- 取消挂载