Conditional 'mount' no Linux: dev ou nfs

1

Eu tenho um ponto de montagem - deixe-o ser /media/question - e dois dispositivos possíveis: um disco rígido físico e uma pasta NFS remota. Às vezes eu conecto o dispositivo fisicamente, em outros casos eu o monto via NFS.

Existe uma maneira de especificar os dois em fstab , de modo que a execução de mount /media/question , de preferência, escolha o volume físico e quando não estiver disponível - NFS?

    
por kolypto 05.06.2010 / 20:39

2 respostas

1

Você precisa criar um script Bash que verifique se o dispositivo físico existe, se houver, monte o dispositivo e monte o compartilhamento NFS.

Algo parecido com isto:

if [ -d /media/disk ] ; then {
mount /media/disk ...
}
else{ ...

você pode colocar este script em /etc/init.d para executar na inicialização ou você pode adicionar ao cron para verificação a cada 5 minutos ou outro intervalo de tempo ...

    
por 05.06.2010 / 22:24
1

Você também pode ver o udev se ele estiver instalado. Isso permite que ações ocorram quando um dispositivo é adicionado ou removido; como quando surge uma interface de rede. Para ver isso em ação, procure nos arquivos que cobrem o acesso à rede em /etc/udev/rules.d/ (chamado 77-network.rules na minha caixa SuSE). Você pode definir ações quando uma interface sobe / desce:

/etc/udev/rules.d/77-network.rules

# SUBSISTEMA == "net",

ENV {INTERFACE} == "ppp * | ippp * | isdn * | plip * | lo * | irda * | dummy * | ipsec * | tun * | tap * | bond * | br * | vlan * | modem * | dsl * ", GOTO=" skip_ifup "

SUBSISTEMA == "net", ACTION == "add", RUN +="/ sbin / ifup $ env {INTERFACE} -o hotplug"

SUBSISTEMA == "net", ACTION == "remove", RUN +="/ sbin / ifdown% k -o hotplug"

LABEL="skip_ifup"

(a linha "ENV (INTERF .... ') é usada para ignorar interfaces de rede não padronizadas, se for correspondida, salta para a instrução LABEL correspondente. As linhas SUBSYTEM são acionadas quando a instrução ACTION corresponde - isto é, uma interface é ADICIONADO ou REMOVIDO ”)

Portanto, se você alterar a ação "add / remove" para chamar seu script, que chamaria ifup / ifdown, execute o que quiser depois disso. .por exemplo. chame "ifup $ @", em seguida, verifique o IP da interface e monte as entradas correspondentes. Se as montagens foram listadas em fstab com a opção “noauto”, você só precisa de uma convenção de nomenclatura simples para localizar a entrada e emitir uma montagem.

De maneira semelhante, o script /etc/udev/rules.d/56-idedma.rules abrange IDE (ou drives sata) e seria executado quando as unidades forem detectadas. Esse script permitiria que as montagens locais fossem iniciadas com base na presença, usando um script RUN alternativo.

A nomenclatura e ordenação de regras é similar àquela usada no sistema init. Dê uma olhada nos arquivos de ajuda e regra para mais exemplos e opções.

    
por 13.10.2010 / 13:38