Nel mio caso particolare voglio avviare l' remote-fs
unità dopo che tutto si è avviato glusterfs
completamente.
I miei file systemd:
glusterfs
bersaglio:
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
bersaglio:
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, tutti i demoni Gluster iniziano con successo e voglio montare il filesystem Gluster tramite NFS, ma la condivisione NFS di Gluster si prepara non immediatamente dopo l' glusterfs.service
avvio, ma pochi secondi dopo, quindi di solito remote-fs
non è in grado di montarlo nemmeno per quanto riguarda Requires
e After
direttive.
Vediamo il registro:
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...
Qui è tutto a posto, il filesystem remoto (/ stor) sembra essere montato dopo l'avvio di glusterfs, come voleva dire secondo i file di unità ... Ma le righe successive sono:
//...skipped.....
Apr 14 16:16:22 node04 systemd[1]: Started GlusterFS brick processes (stopping only).
Che cosa? GlusterFS è pronto solo per questo momento! E poi vediamo:
//...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.
Il montaggio non è riuscito perché il server NFS non era pronto quando systemd ha tentato di montare la memoria.
A causa della natura non deterministica del processo di avvio di systemd, a volte (circa 1 su 10 boot) il montaggio di questo filesystem all'avvio ha esito positivo.
Se il montaggio su avvio non ha avuto esito positivo, posso accedere al server e montare manualmente la directory / stor, quindi il servizio NFS di Gluster sembra funzionare correttamente.
Quindi, come iniziare remote-fs
dopo glusterfsd
, ovvero dopo che la Started GlusterFS brick processes
riga appare nel registro?
remote-fs
sembra essere uno degli ultimi obiettivi, quindi non riesco a farlo partire dopo un altro obiettivo "aggirante" che in realtà non è richiesto da remote-fs
.
glusterfsd.service
file di unità. Non sembra avviare effettivamente alcun servizio e in effetti uccide tutti i glusterfsd
processi. Avete altri file di unità relativi al gluster?
stor.mount
unità?
ExecStartPre=<command>
proprietà alla sezione Unitàglusterfsd.service
che esegue un comando che bloccherà fino a quando glusterfs non sarà pronto? Ciò può impedire alglusterfsd.service
simbolo di indicare il successo e di attivare ilremotefs.target
.