4.13. 绑定挂载和文件系统挂载顺序
当您使用
mount
命令的 bind
选项时,您必须确定使用正确的顺序挂载该文件系统。在以下示例中,必须在 /tmp
目录中执行绑定挂载前挂载 /var/log
目录:
# mount --bind /var/log /tmp
按以下方法决定文件系统挂载顺序:
- 通常文件系统挂载顺序由
fstab
文件中文件系统出现的顺序决定。例外情况包括使用_netdev
标签挂载的文件系统或者有自身初始化
脚本的文件系统。 - 有自身
初始化
脚本的文件系统在初始化进程后期挂载,即在挂载fstab
文件中的文件系统之后挂载。 - 使用
_netdev
标签挂载的文件系统会在该系统中启用网络时挂载。
如果您的配置需要创建绑定挂载以便挂载 GFS2 文件系统,您可以命令
fstab
文件进行如下操作:
- 挂载绑定挂载所需本地文件系统。
- 绑定挂载要挂载 GFS2 文件系统的目录。
- 挂载 GFS2 文件系统。
如果您的配置需要您在 GFS2 文件系统中绑定挂载本地目录或者文件系统,在
fstab
文件中列出正确的文件系统顺序也不会正确挂载文件系统,因为在 GFS2 初始化
脚本运行前不会挂载该 GFS2 文件系统。在这种情况下,您应该在初始化
脚本中写入命令执行绑定挂载,这样在挂载 GFS2 文件系统前就不会发生绑定挂载。
以下脚本是自定义
初始化
脚本示例。这个脚本在 GFS2 文件系统的两个目录中执行绑定挂载。在这个示例中,在 /mnt/gfs2a
有一个 GFS2 挂载点,可在集群启动并运行初始化
脚本时执行挂载。
在这个示例脚本中
chkconfig
状态值说明:
- 345 说明启动该脚本的运行等级
- 29 是启动优先性,在这个示例中表示该脚本会在启动时在 GFS2
初始化
脚本之后运行,后者的启动优先性为 26 - 73 为停止优先性,在这个示例中表示该脚本会在关闭时在 GFS2 脚本之后停止,后者的停止优先性为 74
启动和停止值表示您可以通过执行
service start
和 service stop
命令手动执行所示动作。例如:如果该脚本名为 fredwilma
,则您可以执行 service fredwilma start
。
应将这个脚本放到
/etc/init.d
目录并拥有与该目录中其他脚本相同的权限。您可以执行 chkconfig on
命令将该脚本链接到所示的运行等级中。例如:如果该脚本名为 fredwilma
,那么您可以执行 chkconfig fredwilma on
。
#!/bin/bash # # chkconfig: 345 29 73 # description: mount/unmount my custom bind mounts onto a gfs2 subdirectory # # ### BEGIN INIT INFO # Provides: ### END INIT INFO . /etc/init.d/functions case "$1" in start) # In this example, fred and wilma want their home directories # bind-mounted over the gfs2 directory /mnt/gfs2a, which has # been mounted as /mnt/gfs2a mkdir -p /mnt/gfs2a/home/fred &> /dev/null mkdir -p /mnt/gfs2a/home/wilma &> /dev/null /bin/mount --bind /mnt/gfs2a/home/fred /home/fred /bin/mount --bind /mnt/gfs2a/home/wilma /home/wilma ;; stop) /bin/umount /mnt/gfs2a/home/fred /bin/umount /mnt/gfs2a/home/wilma ;; status) ;; restart) $0 stop $0 start ;; reload) $0 start ;; *) echo $"Usage: $0 {start|stop|restart|reload|status}" exit 1 esac exit 0