CentOS 7 - Problemas de dependência do Systemctl com montagem de rede e OpenSM

1

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?

    
por M.K. aka Grisu 18.02.2015 / 15:54

0 respostas