mount
是 Linux 最常用的功能,用来将存储设备挂载到目录的挂载点上。
注意:Linux 允许将文件系统挂载到已附加了文件系统的目录。这种操作通常很危险。
目录
常用功能
挂载
mount device directory
挂载时,支持通过以下方法识别设备:
- 通用唯一标识符(UUID):例如,UUID=cc82fd59-9465-4af7-a91b-37acf44de266
- 卷标签:例如,LABEL=home
- 设备的完整路径:例如,/dev/sda1
列出挂载点
findmnt
shell
[root@c1-121 ~]# findmnt
TARGET SOURCE FSTYPE OPTIONS
/ /dev/mapper/centos-root xfs rw,relatime,seclabel,attr2,inode64,noquota
├─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime,seclabel
│ ├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime
│ ├─/sys/fs/cgroup tmpfs tmpfs ro,nosuid,nodev,noexec,seclabel,mode=755
│ │ ├─/sys/fs/cgroup/systemd cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd
│ │ ├─/sys/fs/cgroup/perf_event cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,perf_event
│ │ ├─/sys/fs/cgroup/hugetlb cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb
│ │ ├─/sys/fs/cgroup/memory cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,memory
│ │ ├─/sys/fs/cgroup/cpu,cpuacct cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,cpuacct,cpu
│ │ ├─/sys/fs/cgroup/blkio cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,blkio
│ │ ├─/sys/fs/cgroup/cpuset cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,cpuset
│ │ ├─/sys/fs/cgroup/freezer cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,freezer
│ │ ├─/sys/fs/cgroup/net_cls,net_prio cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,net_prio,net_cls
│ │ ├─/sys/fs/cgroup/devices cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,devices
│ │ └─/sys/fs/cgroup/pids cgroup cgroup rw,nosuid,nodev,noexec,relatime,seclabel,pids
│ ├─/sys/fs/pstore pstore pstore rw,nosuid,nodev,noexec,relatime
│ ├─/sys/kernel/config configfs configfs rw,relatime
│ ├─/sys/fs/selinux selinuxfs selinuxfs rw,relatime
│ ├─/sys/kernel/debug debugfs debugfs rw,relatime
│ └─/sys/fs/fuse/connections fusectl fusectl rw,relatime
├─/proc proc proc rw,nosuid,nodev,noexec,relatime
│ └─/proc/sys/fs/binfmt_misc systemd-1 autofs rw,relatime,fd=26,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=59988
│ └─/proc/sys/fs/binfmt_misc binfmt_misc binfmt_misc rw,relatime
├─/dev devtmpfs devtmpfs rw,nosuid,seclabel,size=1928420k,nr_inodes=482105,mode=755
│ ├─/dev/shm tmpfs tmpfs rw,nosuid,nodev,seclabel
│ ├─/dev/pts devpts devpts rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000
│ ├─/dev/hugepages hugetlbfs hugetlbfs rw,relatime,seclabel
│ └─/dev/mqueue mqueue mqueue rw,relatime,seclabel
├─/run tmpfs tmpfs rw,nosuid,nodev,seclabel,mode=755
│ └─/run/user/0 tmpfs tmpfs rw,nosuid,nodev,relatime,seclabel,size=388052k,mode=700
└─/boot /dev/sda1 xfs rw,relatime,seclabel,attr2,inode64,noquota
[root@c1-121 ~]# findmnt -t xfs
TARGET SOURCE FSTYPE OPTIONS
/ /dev/mapper/centos-root xfs rw,relatime,seclabel,attr2,inode64,noquota
└─/boot /dev/sda1 xfs rw,relatime,seclabel,attr2,inode64,noquota
卸载
umount mount-point
umount device
移动挂载点
这个功能一般比较陌生,很多同学会用先umount
然后在mount
的方式完成。
mount --move old-directory new-directory
不常用功能
共享挂载点
Linux 支持将同一个设备挂载到多个挂载点。可用的挂载类型如下:
private
这个类型不接收或转发任何传播事件。
当您在重复或者原始挂载点下挂载另一个文件系统时,不会反映在另一个文件系统中。
shared
这个类型会为给定挂载点创建准确的副本。
当挂载点被标记为 shared 挂载时,原始挂载点中的任何挂载都会反映在其中,反之亦然。
这是根文件系统的默认挂载类型。
slave
此类型会创建给定挂载点的有限重复。
当挂载点标记为 slave 挂载时,原始挂载点中的任何挂载都会反映在该挂载点中,但 slave 挂载中的任何挂载都没有反映在其原始挂载中。
unbindable
此类型可防止给定挂载点被复制。
创建Private挂载点
shell
[root@c2-125 ~]# mount --bind /test1 /test1
[root@c2-125 ~]# mount --make-private /test1
[root@c2-125 ~]# mount --bind /test1 /test2/
[root@c2-125 ~]# mount /dev/sdc /test1/
[root@c2-125 ~]# ls /test1
lost+found test1
[root@c2-125 ~]# ls /test2
[root@c2-125 ~]#
创建share挂载点
shell
[root@c2-125 ~]# mount --bind /test1 /test1
[root@c2-125 ~]# mount --make-shared /test1
[root@c2-125 ~]# mount --bind /test1 /test2/
[root@c2-125 ~]# mount /dev/sdc /test1/
[root@c2-125 ~]# ls /test1
lost+found test1
[root@c2-125 ~]# ls /test2
lost+found test1
shell
[root@c2-125 ~]# touch /test1/test11
[root@c2-125 ~]# ll /test2
total 16
drwx------ 2 root root 16384 Aug 21 11:31 lost+found
-rw-r--r-- 1 root root 0 Aug 21 11:36 test1
-rw-r--r-- 1 root root 0 Aug 21 11:42 test11
[root@c2-125 ~]# touch /test2/test21
[root@c2-125 ~]# ll /test1
total 16
drwx------ 2 root root 16384 Aug 21 11:31 lost+found
-rw-r--r-- 1 root root 0 Aug 21 11:36 test1
-rw-r--r-- 1 root root 0 Aug 21 11:42 test11
-rw-r--r-- 1 root root 0 Aug 21 11:42 test21
shell
[root@c2-125 ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.3M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 156G 9.6G 147G 7% /
/dev/sda1 xfs 1.1G 204M 860M 20% /boot
tmpfs tmpfs 398M 0 398M 0% /run/user/0
/dev/sdc ext4 11G 38M 9.9G 1% /test1
创建salve挂载点
shell
[root@c2-125 ~]# mount --bind /test1 /test1
[root@c2-125 ~]# mount --make-shared /test1
[root@c2-125 ~]# mount --bind /test1 /test2
[root@c2-125 ~]# mount --make-slave /test2
[root@c2-125 ~]# mount /dev/sdc /test2
[root@c2-125 ~]# ls /test2/
lost+found test1 test2
[root@c2-125 ~]# ls /test1/
防止重复挂载
shell
[root@c2-125 ~]# mount --bind /test1 /test1
[root@c2-125 ~]# mount --make-unbindable /test1
[root@c2-125 ~]# mount --bind /test1 /test2
mount: wrong fs type, bad option, bad superblock on /test1,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.