Dans mon cas particulier, je veux démarrer l' remote-fs
unité après tout glusterfs
démarre complètement.
Mes fichiers systemd:
glusterfs
cible:
node04:/usr/lib/systemd/system # cat glusterfsd.service
[Unit]
Description=GlusterFS brick processes (stopping only)
After=network.target glusterd.service
[Service]
Type=oneshot
ExecStart=/bin/true
RemainAfterExit=yes
ExecStop=/bin/sh -c "/bin/killall --wait glusterfsd || /bin/true"
ExecReload=/bin/sh -c "/bin/killall -HUP glusterfsd || /bin/true"
[Install]
WantedBy=multi-user.target
remote-fs
cible:
node04:/usr/lib/systemd/system # cat remote-fs.target
[Unit]
Description=Remote File Systems
Documentation=man:systemd.special(7)
Requires=glusterfsd.service
After=glusterfsd.service remote-fs-pre.target
DefaultDependencies=no
Conflicts=shutdown.target
[Install]
WantedBy=multi-user.target
OK, tous les démons Gluster commencent avec succès et je veux monter le système de fichiers Gluster via NFS, mais le partage NFS de Gluster ne se prépare pas immédiatement après le glusterfs.service
démarrage, mais quelques secondes plus tard, il remote-fs
est donc généralement impossible de le monter même en ce qui concerne les directives Requires
et After
.
Voyons le journal:
Apr 14 16:16:22 node04 systemd[1]: Started GlusterFS, a clustered file-system server.
Apr 14 16:16:22 node04 systemd[1]: Starting GlusterFS brick processes (stopping only)...
Apr 14 16:16:22 node04 systemd[1]: Starting Network is Online.
Apr 14 16:16:22 node04 systemd[1]: Reached target Network is Online.
Apr 14 16:16:22 node04 systemd[1]: Mounting /stor...
Ici, tout va bien, le système de fichiers distant (/ stor) semble être monté après le démarrage de glusterfs, car il devait être conforme aux fichiers d'unité ... Mais les lignes suivantes sont:
//...skipped.....
Apr 14 16:16:22 node04 systemd[1]: Started GlusterFS brick processes (stopping only).
Quelle? GlusterFS ne s'est préparé que pour ce moment! Et puis on voit:
//...skipped.....
Apr 14 16:16:23 node04 mount[2960]: mount.nfs: mounting node04:/stor failed, reason given by server: No such file or directory
Apr 14 16:16:23 node04 systemd[1]: stor.mount mount process exited, code=exited status=32
Apr 14 16:16:23 node04 systemd[1]: Failed to mount /stor.
Apr 14 16:16:23 node04 systemd[1]: Dependency failed for Remote File Systems.
Apr 14 16:16:23 node04 systemd[1]: Unit stor.mount entered failed state.
Le montage a échoué car le serveur NFS n'était pas prêt lorsque systemd a tenté de monter le stockage.
En raison de la nature non déterministe du processus de démarrage de systemd, le montage de ce système de fichiers au démarrage réussit parfois (environ 1 sur 10).
Si le montage onboot n'a pas réussi, je peux me connecter au serveur et monter manuellement le répertoire / stor, donc le service NFS de Gluster semble fonctionner correctement.
Alors, comment commencer remote-fs
après glusterfsd
, c'est-à-dire après que la Started GlusterFS brick processes
ligne apparaît dans le journal?
remote-fs
semble être l'une des toutes dernières cibles, donc je ne peux pas le démarrer après une autre cible de "contournement" qui n'est en fait pas requise par remote-fs
.
glusterfsd.service
fichier d'unité. Il ne semble pas réellement démarrer de services, et en fait, tue tous les glusterfsd
processus. Avez-vous d'autres fichiers d'unité liés à Gluster?
stor.mount
unité?
ExecStartPre=<command>
propriété à la section Unitglusterfsd.service
qui exécute une commande qui se bloquera jusqu'à ce que glusterfs soit prêt? Cela peut empêcher le theglusterfsd.service
d'indiquer le succès et d'activer leremotefs.target
.