Estoy ejecutando un pequeño servidor para nuestro piso compartido. Es principalmente un servidor de archivos con algunos servicios adicionales. Los clientes son máquinas Linux (en su mayoría Ubuntu, pero también algunas otras Distros) y algunas Mac (-Book) en el medio (pero no son importantes para la pregunta). El servidor ejecuta Ubuntu 11.10 (Oneiric Ocelot) 'Server Edition', el sistema desde el cual realizo mi configuración y prueba ejecuta la 11.10 'Desktop Edition'. Estuvimos ejecutando nuestros recursos compartidos con Samba (con el que estamos más familiarizados) durante bastante tiempo, pero luego migramos a NFS (porque no tenemos ningún usuario de Windows en la LAN y queremos probarlo) y hasta ahora todo funciona bien .
Ahora quiero configurar el montaje automático con autofs para suavizar las cosas (hasta ahora, todos montan los recursos compartidos manualmente cuando es necesario). El montaje automático parece funcionar también. El problema es que nuestro "servidor" no funciona las 24 horas del día, los 7 días de la semana para ahorrar energía (si alguien necesita cosas del servidor, lo enciende y luego lo apaga, por lo que solo funciona un par de horas cada día). Pero desde que se configuró autofs, los clientes cuelgan y cierran a menudo cuando el servidor no se está ejecutando.
-
Puedo iniciar todos los clientes sin problemas, incluso cuando el servidor no se está ejecutando.
-
Pero cuando quiero mostrar un directorio (en terminal o nautilus), que contiene enlaces simbólicos a un recurso compartido en
/nfs
mientras el servidor no se está ejecutando, se bloquea durante al menos dos minutos (porque autofs no puede conectarse al servidor, pero supongo que sigue intentándolo).- ¿Hay alguna manera de evitar eso? ¿Para que el montaje se retrase hasta un cambio en el directorio o hasta que se acceda al contenido de ese directorio? No cuando "mira" un enlace a un recurso compartido en
/nfs
? Creo que no, pero ¿tal vez es posible no intentar acceder a él durante tanto tiempo? Y solo dame un directorio vacío o "no puedo encontrar/conectarme a ese directorio" o algo así.
- ¿Hay alguna manera de evitar eso? ¿Para que el montaje se retrase hasta un cambio en el directorio o hasta que se acceda al contenido de ese directorio? No cuando "mira" un enlace a un recurso compartido en
-
Cuando el servidor se está ejecutando, todo funciona bien.
-
Pero cuando el servidor se apaga, antes un recurso compartido se desmontó, herramientas (como
df
oll
) cuelgan (asumiendo que piensan que el recurso compartido todavía está activo pero el servidor ya no responderá).- ¿Hay alguna forma de desmontar los recursos compartidos automáticamente cuando se pierde la conexión?
-
Además, los clientes no se apagarán ni reiniciarán cuando el servidor esté inactivo y aún tengan recursos compartidos montados. Se cuelgan (infinitamente como parece) en “matar los procesos restantes ” y no parece pasar nada.
Creo que todo se reduce a valores de tiempo de espera claros para montar y desmontar. Y tal vez para eliminar todos los recursos compartidos cuando se pierda la conexión con el servidor.
Relacionado:`$XAUTHORITY` aparece de la nada en su+tmux?
Entonces mi pregunta es:¿Cómo manejar esto? Y como beneficio adicional:¿existe una buena manera de vincular dentro de /nfs
? sin la necesidad de montar los recursos compartidos reales (una opción autofs o tal vez usando un pseudo FS para /nfs
que se reemplaza cuando ocurre la montura o algo así)?
Mi configuración
La configuración de NFS es bastante básico pero nos ha servido bien hasta ahora (usando NFSv4 ):
/etc/default/nfs-common
NEED_STATD=
STATDOPTS=
NEED_IDMAPD=YES
NEED_GSSD=
/etc/idmapd.conf
[General]
Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = localdomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
/etc/exportaciones
/srv/ 192.168.0.0/24(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)
Bajo la raíz de exportación /srv
tenemos dos directorios con bind
:
/etc/fstab (Servidor)
...
/shared/shared/ /srv/shared/ none bind 0 0
/home/Upload/ /srv/upload/ none bind 0 0
El primero es principalmente de solo lectura (pero lo impongo a través de los atributos y la propiedad del archivo en lugar de la configuración de NFS) y el segundo es rw para todos. Nota:No tienen entradas adicionales en /etc/exports , aunque montarlos por separado funciona.
En el lado del cliente, se configuran en /etc/fstab
y montado manualmente según sea necesario (morton
es el nombre del servidor y se resuelve bien).
/etc/fstab (Cliente)
morton:/shared /nfs/shared nfs4 noauto,users,noatime,soft,intr,rsize=8192,wsize=8192 0 0
morton:/upload /nfs/upload nfs4 noauto,users,noatime,soft,intr,rsize=8192,wsize=8192 0 0
Para la configuración de autofs Eliminé las entradas de /etc/fstab
en los clientes y configure el resto así:
/etc/auto.master
/nfs /etc/auto.nfs
Primero até el ejecutable suministrado /etc/auto.net
(puedes echarle un vistazo aquí) pero no montará nada automáticamente para mí. Luego escribo un /etc/auto.nfs
basado en algunos procedimientos que encontré en línea:
/etc/auto.nfs
shared -fstype=nfs4 morton:/shared
upload -fstype=nfs4 morton:/upload
Y funciona un poco... O funcionaría si el servidor funcionara las 24 horas del día, los 7 días de la semana. Por lo tanto, nos cuelgan cuando un cliente arranca sin que el servidor se esté ejecutando o cuando el servidor deja de funcionar mientras los recursos compartidos aún estaban conectados.
Respuesta aceptada:
Al usar cualquier sistema de montaje, desea evitar situaciones en las que Nautilus enumera el directorio que contiene un montaje que puede montarse o no. Entonces, con autofs, no cree montajes en, por ejemplo, /nfs. Si lo hace, cuando use Nautilus para enumerar el "Sistema de archivos", intentará crear cualquier montaje que deba existir en /nfs, y si esos intentos de montaje fallan, tardará unos minutos en darse por vencido.
Así que lo que hice fue cambiar auto.master para crear los montajes en /nfs/mnt.
Esto solucionó el problema para mí. Solo obtengo un gran retraso si trato de enumerar el contenido de /nfs/mnt, lo cual puedo evitar fácilmente.