3.13. Points de montage associés et Ordre de montage du système de fichiers
Quand vous utilisez l'option
bind
de la commande mount
, vous devrez vous assurer que les systèmes de fichiers sont montés dans l'ordre qui convient. Dans l'exemple suivant, le répertoire /var/log
doit être installé avant d'exécuter le point de montage associé sur le répertoire /tmp
:
# mount --bind /var/log /tmp
L'ordre des points de montage des systèmes de fichiers est déterminé comme suit :
- En général, l'ordre de montage des systèmes de fichiers est déterminé par l'ordre dans lequel les systèmes de fichiers apparaissent dans le fichier
fstab
. Les seules exception sont les systèmes de fichiers qui sont montés avec un marqueur_netdev
ou bien les systèmes de fichiers qui ont leur propre scriptinit
. - Un système de fichiers avec son propre script
init
est monté plus tard au cours du processus d'initialisation, après les systèmes de fichiers dansfstab
. - Les systèmes de fichiers montés avec le marqueur
_netdev
sont montés quand le réseau a été activé dans le système.
Si vous avez besoin de créer un point de montage associé sur lequel monter un système de fichiers GFS2 pour votre configuration, vous pourrez ordonner le fichier
fstab
comme suit :
- Montez des systèmes de fichiers locaux requis pour le point de montage associé.
- Faire un montage associé du répertoire où le système de fichiers GFS2 sera monté.
- Création d'un système de fichiers GFS2.
Si votre configuration requiert que vous fassiez un montage associé de répertoire local ou de système de fichierssur un système de fichiers GFS2, énumérer les systèmes de fichiers dans le bonordre dans le fichier
fstab
ne montera pas les systèmes de fichierscorrectement, puisque le système de fichiers GFS2 ne sera pas monté avant que le scriptinit
de GSF soit exécuté. Dans ce cas, vous devrez écrire unscript init
pour exécuter le montage associé, pour que le montage associé ne prenne pas effet avant que le système de fichiers GFS2 ne soit monté.
Le script suivant est un exemple de script
init
personnalisé. Le script crée un montage associé de deux répertoires dans deux répertoires du système de fichiers GFS2. Dans cet exemple, il y a un point de montage GFS2 existant à /mnt/gfs2a
, qui est monté quand le script init
de GFS2 exécute, suite au démarrage du cluster.
Dans cet exemple de script, les valeurs de l'énoncé
chkconfig
indiquent ce qui suit :
- 345 indique les niveaux d'exécution auxquels le script va démarrer
- 29 est la priorité de départ, qui, dans ce cas, indique que le script va exécuter au départ à la suite du script
init
de GFS2, qui a une priorité de démarrage de 26 - 73 correspond à la priorité 'stop', qui dans ce cas, indique que le script cessera en cours de fermeture juste avant le script GFS2, qui lui, a une priorité de 74.
Les valeurs de démarrage et d'arrêt indiquent que vous pouvez effectuer manuellement l'action indiquée manuellement en exécutant les commandes
service start
et service stop
. Ainsi, si le script s'intitule fredwilma
, alors vous pourrez exécuter la commande service fredwilma start
.
Ce script doit être mis dans le répertoire
/etc/init.d
avec les mêmes permissions que les autres scripts de ce répertoire. Vous pourrez alors exécuter une commande chkconfig on
pour relier le script aux niveaux d'exécution demandés. Ainsi, si le script s'intitule fredwilma
, vous pourrez exécuter la commande 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