4.13. mount --bind и порядок подключения

Файловые системы должны подключаться в определенном порядке. Так, в приведенном ниже примере каталог /var/log должен быть смонтирован до того, как будет создана связь между ним и /tmp.
# mount --bind /var/log /tmp
Как определяется порядок:
  • Монтирование файловых систем осуществляется в порядке следования в fstab. Исключение составляют файловые системы с собственными сценариями init и те, которые монтируются с флагом _netdev.
  • Файловые системы с собственным сценарием init монтируются после обработки файла fstab.
  • Файловые системы, монтируемые с флагом _netdev, будут подключены во время инициализации сети.
Если системная конфигурация требует, чтобы монтирование GFS2 осуществлялось в переподключенный каталог, порядок действий в fstab должен быть следующим:
  1. Сначала монтируются локальные файловые системы.
  2. Устанавливается связь с каталогом, в который будет подключена GFS2.
  3. Монтирование GFS2 в этот каталог.
Если же наоборот надо перемонтировать локальный каталог в GFS2, порядок в fstab не играет никакой роли, так как GFS2 монтируется только на стадии выполнения сценария init GFS2. В этом случае mount --bind надо добавить в сценарий — тогда связь будет установлена после монтирования GFS2.
Ниже будет приведен пример сценария init, который смонтирует два каталога в файловую систему /mnt/gfs2a.
Обратите внимание на числа в строке chkconfig:
  • 345 — уровни выполнения, на которых будет запускаться сценарий;
  • 29 — приоритет запуска, то есть сценарий будет запускаться после сценария инициализации GFS2, который имеет приоритет 26;
  • 73 — приоритет остановки, то есть этот сценарий будет останавливаться до сценария GFS2, который имеет приоритет 74.
Запуск и остановку можно выполнить вручную с помощью команд service start и service stop. Например, для запуска сценария fredwilma выполните service fredwilma start.
Сценарий надо поместить в /etc/init.d и присвоить ему такие же разрешения, как и у других сценариев в этом каталоге. Затем выполните chkconfig on для его активации на выбранных уровнях выполнения: 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