Como eu testo se um determinado ponto de montagem está montado corretamente?

2

O uso de qualquer /etc/mtab , /proc/mounts , mount ou mountpoint pode fornecer informações incorretas caso ocorra uma das seguintes situações:

  • O controle remoto está off-line (as soluções baseadas em grep -file falham)
  • Para montagens do NFS, o controle remoto parou de exportar ou o serviço NFS foi interrompido ( mountpoint falha)
  • O controle remoto mudou os endereços IP (todas as soluções falham)

Como posso recuperar uma simples resposta sim / não para saber se a montagem é utilizável como pretendido? Tanto quanto eu entendo, todas as informações de montagem são armazenadas em /etc/mtab e em /proc/mounts . Sem causar um travamento (como stat ), existe uma maneira de verificar se o estado real da rede é como as informações locais me levariam a acreditar?

Isso precisa ser uma ferramenta muito genérica, capaz de lidar com montagens CIFS e NFS (e outras, provavelmente).

Restrição

Eu só posso usar o que vem com a distribuição padrão no RHEL 6. Geralmente, tudo em /bin:/sbin:/usr/bin:/usr/sbin é um jogo justo. Isso não é por opção e não é um ponto móvel, então não posso aceitar uma resposta que usa ferramentas externas. Para o futuro dos leitores, porém, eu os recebo como comentários :)

Referências

  • Como testar se um determinado caminho é um ponto de montagem
  • Qual é a melhor maneira de verificar se um volume está montado em um script Bash?
por Sean Allred 13.01.2015 / 21:57

2 respostas

3

Eu tenho medo que isso seja impossível.

A única maneira de descobrir se um dispositivo NFS (ou, mais geralmente, qualquer rede) é utilizável é tentar usá-lo e isso pode bloquear (e demorar algum tempo).

Além disso, "não usar" não é algo permanente. Se o controle remoto retornar on-line, a montagem se tornará utilizável novamente.

    
por 13.01.2015 / 22:20
0

No Ubuntu eu criei os pontos de montagem de root , mas eles são montados para um usuário diferente, então verificar a propriedade me dá uma indicação se eles foram montados ou não.

Todas as minhas montagens estão em /media , então o seguinte script mostra quais foram montados:

ls -ld /media/* |                      \
  while read x x usr grp x x x x name; \
  do if [ $usr == root ];              \
     then echo $name not mounted;      \
     else echo $name mounted;          \
     fi;                               \
  done

Se você precisar montar como root, talvez possa usar um grupo diferente e verificar isso.

Observe que isso verifica se uma montagem anterior foi bem-sucedida. Se um dispositivo montado ou compartilhamento de rede subsequentemente for desativado sem ser desmontado, os acessos a ele ainda serão interrompidos.

    
por 13.01.2015 / 23:32

Tags