Como definir um retorno de chamada para NFS para permitir scripts?

Como definir um retorno de chamada para NFS para permitir scripts?

O contexto

Tenho dois servidores: um NAS e um servidor cliente. Ambas são máquinas pequenas (Raspberry, OLinuXino) e estão conectadas ao mesmo filtro de linha (que possui um botão liga / desliga).

O servidor cliente monta os volumes NFS do NAS na inicialização.

O problema

Quando ligo o filtro de linha, os dois servidores são inicializados ao mesmo tempo. Mas no momento em que o cliente tenta montar volumes NFS, eles ainda não estão disponíveis no NAS.

Então eu tenho que montá-los manualmente e quero automatizar isso.

Eu uso o fstab para montar os volumes em uma distribuição Debian Wheezy.

nas.local:/media/myshare  /media/myshare nfs defaults 0 0

Como eu resolveria isso

Então pensei em adicionar um script no NAS que chamasse um comando ssh para dizer ao cliente "monte seus volumes NFS, eles estão prontos agora!".

Algo como ssh -i idFile login@clientServer 'sudo mount -a'do lado do NAS.

A questão

Qual seria o melhor lugar para colocar esse tipo de script?

Um gancho NFS? Algo como um retorno de chamada?

Pergunta extra

Ou existe outra e melhor maneira de fazer isso?

Responder1

Eu tentaria me proteger contra falhas por vários motivos. Um cron job que verifica se o volume está montado e depois o monta, caso não esteja, conseguiria isso.

  1. Use Eu criaria o script usando a resposta deVerifique se o diretório foi montado com bash [fechado]

  2. Para a montagem no script bash que você está criando, use a resposta de Giles para modificar seu arquivo sudoers para permitir que o script cron seja executado como sudoComo executar um programa específico como root sem solicitar senha?. Esta pode ser uma etapa opcional dependendo da sua configuração.

  3. Configure seu cron job. Você vai querer dois. A primeira seria verificar regularmente a montagem e montá-la, caso contrário. Dessa forma, se algum deles falhar de forma independente, ele voltará a ficar online. O segundo deve empregar um cron após a inicialização. Esta resposta irá ajudá-loO trabalho do Crontab começa +1 minuto após @reboot

Do lado do servidor: você pode anexar um script ao próprio serviço NFS. Você pode editar seu script de serviço para ser executado após um breve período de suspensão após a conclusão. O script bash poderia seguir o formato:

sleep 60 && my_mount_script.sh

Usando o systemd você pode esperarsystemd para aguardar a conclusão do comando antes de reiniciar/desligar ou encerrar outros processospara o nfs.service iniciar. As substituições incluiriam a remoção da seção Antes e a alteração do nome do serviço posterior para nfs.service

informação relacionada