En mi caso particular, quiero iniciar la remote-fs
unidad después de que todo glusterfs
comience completamente.
Mis archivos systemd:
glusterfs
objetivo:
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
objetivo:
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, todos los demonios comienzan Gluster éxito y quiero montar Gluster sistema de archivos a través de NFS, pero compartido NFS de Gluster se prepara no inmediatamente después de glusterfs.service
iniciado, pero a los pocos segundos, por lo que por lo general remote-fs
es incapaz de montar incluso respecto Requires
y After
directivas.
Veamos el log:
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...
Aquí todo está bien, el sistema de archivos remoto (/ stor) parece estar montado después de que comenzaron los glusterfs, ya que debía estar de acuerdo con los archivos de la unidad ... Pero las siguientes líneas son:
//...skipped.....
Apr 14 16:16:22 node04 systemd[1]: Started GlusterFS brick processes (stopping only).
¿Qué? ¡GlusterFS se preparó solo para este momento! Y luego vemos:
//...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.
El montaje falló porque el servidor NFS no estaba listo cuando systemd intentó montar el almacenamiento.
Debido a la naturaleza no determinista del proceso de arranque systemd, a veces (aprox. 1 de 10 arranques) el montaje de este sistema de archivos en el arranque tiene éxito.
Si el montaje al inicio no tuvo éxito, puedo iniciar sesión en el servidor y montar manualmente el directorio / stor, por lo que el servicio NFS de Gluster parece funcionar bien.
Entonces, ¿cómo comenzar remote-fs
después glusterfsd
, es decir, después de que la Started GlusterFS brick processes
línea aparece en el registro?
remote-fs
parece ser uno de los últimos objetivos, por lo que no puedo iniciarlo después de otro objetivo de "solución" que de hecho no es necesario remote-fs
.
glusterfsd.service
archivo de unidad. En realidad, no parece iniciar ningún servicio y, de hecho, mata cualquier glusterfsd
proceso. ¿Tiene algún otro archivo de unidad relacionado con Gluster?
stor.mount
unidad?
ExecStartPre=<command>
propiedad a la sección Unidad deglusterfsd.service
que ejecute un comando que bloqueará hasta que esté listo glusterfs? Eso puede evitar que elglusterfsd.service
indique éxito y active elremotefs.target
.