Estoy ejecutando un pequeño servidor para nuestra parte plana. Es principalmente un servidor de archivos con algunos servicios adicionales. Los clientes son máquinas Linux (principalmente Ubuntu, pero también algunas Distros) y algunas Mac (-Book) entre ellas (pero no son importantes para la pregunta). El servidor ejecuta Ubuntu 11.10 (Oneiric Ocelot) 'Server Edition', el sistema desde el que hago mi configuración y prueba ejecuta 11.10 'Desktop Edition'. Estuvimos ejecutando nuestros recursos compartidos con Samba (con los 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, los 7 días de la semana para ahorrar energía (si alguien necesita cosas del servidor, lo enciende y lo apaga después, por lo que solo funciona un par de horas cada día). Pero desde la configuración de autofs, los clientes cuelgan a menudo cuando el servidor no se está ejecutando.
Puedo iniciar todos los clientes bien, 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
/nfs
recurso compartido mientras el servidor no se está ejecutando, se cuelga durante al menos dos minutos (porque los autofs no pueden conectarse al servidor pero se mantienen tratando, supongo).- ¿Hay alguna manera de evitar eso? ¿De modo que el montaje se retrasaría hasta un cambio en el directorio o hasta que se acceda al contenido de ese directorio? ¿No cuando "mira" un enlace a una acción debajo
/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 un "no se puede encontrar / conectar a ese directorio" o algo así.
- ¿Hay alguna manera de evitar eso? ¿De modo que el montaje se retrasaría hasta un cambio en el directorio o hasta que se acceda al contenido de ese directorio? ¿No cuando "mira" un enlace a una acción debajo
Cuando el servidor se está ejecutando, todo funciona bien.
Pero cuando el servidor se apaga, antes de que un recurso compartido se desmonte, las herramientas (como
df
oll
) se bloquean (suponiendo que piensan que el recurso compartido todavía está encendido 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 o reiniciarán cuando el servidor esté inactivo y todavía tengan recursos compartidos montados. Se cuelgan (infinitamente como parece) en " matar los procesos restantes " y nada parece suceder.
Creo que todo se reduce a buenos valores de tiempo de espera para montar y desmontar. Y tal vez para eliminar todos los recursos compartidos cuando se pierde la conexión con el servidor.
Entonces mi pregunta es: ¿Cómo manejar esto? Y como beneficio adicional: ¿hay una buena manera de vincular dentro /nfs
sin la necesidad de montar los recursos compartidos reales (una opción de autofs o tal vez usando un pseudo FS para el /nfs
que se reemplaza cuando ocurre el montaje o algo así)?
Mi configuración
La configuración de NFS es bastante básica 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)
Debajo de 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 del archivo y la propiedad en lugar de la configuración de NFS) y el segundo es rw para todos. Nota: No tienen entradas adicionales en / etc / exportaciones , aunque su montaje por separado funciona.
En el lado del cliente, se configuran /etc/fstab
y montan 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
los clientes y configuré el resto de esta manera:
/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 HowTos 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 24/7. Entonces obtenemos los bloqueos cuando un cliente arranca sin que el servidor se ejecute o cuando el servidor deja de funcionar mientras los recursos compartidos aún están conectados.
hard
ybg
al principio me suena intuitivo. ¿Quiero que la montura no vuelva a intentarlo y vuelva inmediatamente si se rescata?intr
parece estar bien, pero parece que ya no funciona: " La opción de montaje intr / nointr está en desuso después del kernel 2.6.25. Solo SIGKILL puede interrumpir una operación NFS pendiente en estos núcleos, y si se especifica, esta opción de montaje se ignora para proporcionar compatibilidad con versiones anteriores. con granos más viejos ".hard,bg
a/etc/auto.master
parece cambiar nada. Atime ls -l ~
(mi directorio de usuario contiene un enlace simbólico a/nfs/upload
) todavía demora más de dos minutos, cuando el servidor no se está ejecutando.sudo reload autofs && sudo restart autofs
Jugué un poco más con algunas de las opciones de la página de manual. Todos
bg,hard
,bg,soft
,fg,hard
yfg,soft
me dan los tiempos de más de dos minuetos regrese.Sin
retrans=1,retry=0
embargo, el ajuste (combinado con cualquiera de los anteriores) me da tiempos alrededor de tres segundos. Bastante decente. Aunque no estoy seguro de lo que significa cada combinación. Cavará más allá.También me encontré con las opciones de autofs
MOUNT_WAIT
yUMOUNT_WAIT
. No he podido obtener algunos resultados diferentes con ellos, pero seguiré intentándolo. Parece lika una buena manera de usar la opción NFS "más segura" (también conocida como más reintentos, etc.) pero tiempos de retorno rápidos para autofs, ¿o no?fuente
rsize=32768,wsize=32768,noatime
como se señala aquí: techrepublic.com/blog/opensource/…Para configurar un sistema de archivos NFS para que se monte automáticamente cada vez que inicie su sistema Red Hat Linux, debe agregar una entrada para ese sistema de archivos NFS al archivo / etc / fstab. El archivo / etc / fstab contiene información sobre todos los diferentes tipos de sistemas de archivos montados (y disponibles para ser montados) para su sistema Red Hat Linux. EJ:: nfs El corresponde al nombre de host, la dirección IP o el nombre de dominio completo del servidor que exporta el sistema de archivos. El es la ruta al directorio exportado. Especifica en qué parte del sistema de archivos local montar el directorio exportado. Este punto de montaje debe existir antes de que se lea / etc / fstab o el montaje fallará El área especifica las opciones de montaje para el sistema de archivos. Por ejemplo, si el área de opciones indica rw, suid, el sistema de archivos exportado se montará de lectura-escritura y se utilizará el usuario y el groupid establecido por el servidor. Tenga en cuenta que los paréntesis no deben usarse aquí
fuente