Eu tenho o seguinte problema. Eu quero montar um compartilhamento glusterfs sobre o Infiniband em um cliente do CentOS 7. O glusterfs share '/ data' é separado por um host chamado storage1. Para o cliente eu configuro e sistema CentOS mínimo. Instalei rdma
e opensm
para executar o infiniband. Ambos são adicionados à seqüência de inicialização via
systemctl enable rdma.service
systemctl enable opensm.service
Os dispositivos de rede são gerenciados usando o NetworkManager e ping storage1
funciona bem na rede infiniband. Então eu adicionei, conforme descrito na documentação do gluster, uma entrada fstab:
storage1:/data /net/data glusterfs defaults,acl,_netdev 0 0
Quando reiniciei o sistema, o serviço net-data.mount
falhou. Após o término da inicialização, posso fazer o login e iniciar manualmente:
systemctl start net-data.mount
e tudo funciona bem. Depois de analisar o problema, descobri que todos os outros compartilhamentos de rede (nfs, gluster) que usam a conexão ethernet normal do cliente são montados durante a inicialização. No journalctl
descobri que o OpenSM, que é necessário para o Inifiniband, é muito lento durante a inicialização. A montagem do compartilhamento acima mencionado é realizada 5 segundos antes do OpenSM concluir sua inicialização. Mas a descrição de serviço do OpenSM diz que ele é desejado pelo network.target
e, portanto, é considerado antes que os compartilhamentos de rede sejam montados.
Então, minha pergunta é como eu posso introduzir um temporizador em algum lugar na seqüência de inicialização que espera até que a rede Inifiniband esteja realmente pronta / o OpenSM esteja lendo.
Eu não uso os recursos de RDMA do gluster.
O arquivo de serviço do OpenSM é, como instalado pelo yum / rpm:
[Unit]
Description=Starts the OpenSM InfiniBand fabric Subnet Manager
Documentation=man:opensm
DefaultDependencies=false
Before=network.target remote-fs-pre.target
Requires=rdma.service
After=rdma.service
[Service]
Type=forking
ExecStart=/usr/libexec/opensm-launch
[Install]
WantedBy=network.target
Editar: Eu encontrei um workround que parece realmente ruim. Eu editei o / usr / libexec / opensm-launch e incluí o sleep 15 no seu e espere até que o script de inicialização termine.
É possível integrar tal comportamento no systemd?