mount更多用法

介绍

每一个使用linux或类unix系统的人都会用到的命令mount,它用来挂载/卸载文件系统。这是该命令基本功能,除了基本功能该命令还有其它功能。

更多多多多多多多多多多多多多多多用法

绑定挂载(bind mount)

windows的快捷方式、linux的软硬链接,相信你已很熟悉了,下面我来说说mount的绑定挂载--bind

linux的软硬链接原理:
原理图

  • 软连接受应用程序影响,不是所有应用程序都能通过软连接访问资源的
  • 硬链接只能作用在文件上,不能为文件夹创建硬链接

bind mount:
能成功克服软硬链接的缺点,将文件或文件夹挂载到指定的挂载点上。使对挂载点的操作转移到文件或文件夹上。

1
2
3
4
5
6
7
 # ls -li uts*
583819234 -rw-r--r--. 1 root root 4 1月 23 16:55 uts
606248334 -rw-r--r--. 1 root root 2 1月 23 10:44 uts2
# mount --bind ./uts2 ./uts
# ls -li uts*
606248334 -rw-r--r--. 1 root root 2 1月 23 10:44 uts
606248334 -rw-r--r--. 1 root root 2 1月 23 10:44 uts2

uts的inode变成了,uts2的inode id,所有访问uts的io都会转移到uts2上;并且在mount中能查看到bind mount信息。

1
2
3
 # mount
...
/dev/mapper/rhel_rhel82-root on /home/zhoub/uts type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

bind mount是用挂载文件或目录信息遮盖了挂载的文件或目录,当不需要时,可以通过umount卸载,恢复原文件或目录的信息。

挂载传播(mount propagation)

执行clone()时,进程拷贝当前文件系统树,此后,新进程就拥有与原进程相同的文件系统树拷贝,两个文件系统树中的任何挂载操作都不会影响另一个拷贝。尽管每个进程使用单独的文件系统名称空间在理论上非常有意义,但完全隔离也会造成较大限制性。进程克隆了系统的文件系统名称空间之后,已经运行的系统守护进程无法为这个用户自动挂载 CD-ROM,因为在原文件系统名称空间中执行的挂载无法影响用户的拷贝。2006 年引入的挂载传播(mount propagation)解决了这个问题,挂载传播定义了挂载对象之间的关系。

  • 共享挂载(share mount)
    如果两个挂载对象具有共享关系,那么一个挂载对象中的挂载事件会传播到另一个挂载对象,反之亦然
    mount --make-shared <mount-object>
    mount --make-rshared <mount-object>
  • 从属挂载(slave mount)
    如果两个挂载对象形成从属(slave)关系,那么一个挂载对象中的挂载事件会传播到另一个挂载对象,但是反过来不行;在这种关系中,从属对象是事件的接收者
    mount --make-slave <mount-object>
  • 私有挂载(private mount)
    既不传播也不接收挂载事件
    mount --make-private <mount-object>
  • 不可绑定挂载(unbindable mount)
    与私有挂载相似,但是不允许执行绑定挂载
    mount --make-unbindable <mount-object>

参考&鸣谢