GNU/Linux >> Tutoriales Linux >  >> Linux

Automount Nfs:configuración de tiempo de espera de Autofs para servidores no confiables:¿cómo evitar colgar?

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í.
  • Cuando el servidor se está ejecutando, todo funciona bien.

  • Pero cuando el servidor se apaga, antes un recurso compartido se desmontó, herramientas (como df o ll ) 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.


Linux
  1. Cómo usar autofs para montar recursos compartidos NFS

  2. Cómo usar el comando showmount para enumerar recursos compartidos en un servidor NFS

  3. Pkexec:¿cómo configurar un tiempo de espera personalizado para Auth_admin_keep al escribir una política de Pkexec?

  4. Cómo crear servidores de nombres personalizados para su servidor dedicado

  5. ¿Cómo configurar correctamente los permisos para la carpeta NFS? Permiso denegado en el extremo de montaje.

Cómo agregar un host Linux en el servidor Zabbix para monitoreo

Cómo configurar un servidor NFS y configurar almacenamiento NFS en Proxmox VE

Cómo monitorear servidores Linux usando CloudStats

Cómo ejecutar un comando durante un tiempo específico en Linux

Cómo crear un controlador de dominio en Linux para AD

Cómo configurar un servidor NGINX RTMP para transmisión