No meu caso particular, quero iniciar a remote-fs
unidade depois que tudo glusterfs
começar completamente.
Meus arquivos systemd:
glusterfs
alvo:
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
alvo:
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 os daemons Gluster começar bem sucedido e eu quero montar Gluster sistema de arquivos via NFS, mas compartilhamento NFS da Gluster se prepara não imediatamente após glusterfs.service
começou, mas alguns segundos depois, de modo geral remote-fs
não é capaz de montá-lo mesmo em relação Requires
e After
directivas.
Vamos ver o 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...
Aqui está tudo OK, o sistema de arquivos remoto (/ stor) parece estar montado após o glusterfs ser iniciado, pois significava estar de acordo com os arquivos da unidade ... Mas as próximas linhas são:
//...skipped.....
Apr 14 16:16:22 node04 systemd[1]: Started GlusterFS brick processes (stopping only).
O que? O GlusterFS se preparou apenas para este momento! E então 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.
A montagem falhou porque o servidor NFS não estava pronto quando o systemd tentou montar o armazenamento.
Devido à natureza não determinística do processo de inicialização do systemd, às vezes (aproximadamente 1 de 10 inicializações) a montagem desse sistema de arquivos na inicialização é bem-sucedida.
Se a montagem do onboot não tiver êxito, posso efetuar login no servidor e montar manualmente o diretório / stor, para que o serviço NFS do Gluster pareça funcionar bem.
Então, como começar remote-fs
depois glusterfsd
, ou seja, depois da Started GlusterFS brick processes
linha aparecer no log?
remote-fs
parece ser um dos últimos alvos, por isso não consigo iniciá-lo depois de outro "contorno" que, de fato, não é obrigatório remote-fs
.
glusterfsd.service
arquivo de unidade. Não parece realmente iniciar nenhum serviço e, na verdade, mata qualquer glusterfsd
processo. Você tem algum outro arquivo de unidade relacionado ao gluster?
stor.mount
unidade?
ExecStartPre=<command>
propriedade à seção Unidadeglusterfsd.service
que executa um comando que será bloqueado até que o glusterfs esteja pronto? Isso pode impedir que oglusterfsd.service
indicador indique sucesso e ative oremotefs.target
.