NFS

NFS permite compartir directorios por red de forma sencilla en entorno Linux, aunque como todo tiene sus pegas (la principal, es sensible por defecto a cortes en la conexión cliente-servidor)

A continuación un pequeño ejemplo, en el que compartimos el directorio /nas/work/dir1 en server2 para que esté accesible en el directorio /mnt/server2/dir1 en client.

En NFS, configuramos lo que queremos hacer en ambos extremos. En el servidor, el fichero clave es /etc/exports:

# Una chuleta rápida de las opciones disponibles está en "man exports"
# Generalmente se puede omitir el fsid, pero si el sistema de ficheros donde se encuentra
# /nas/work/dir1 es XFS, <a href="https://www.mmacleod.ca/blog/2014/02/nfs-exports-and-xfss-inode64-mount-option/">mejor especificarlo</a> (a fin de evitar esotéricos problemas al montar
# o acceder al directorio...)
# rw -> lectura y escritura
# no_subtree_check -> "as a general guide, disable subtree_check"
# no_root_squash -> no "mapear" uid/gid 0 al uid/gid "anonymous"
/nas/work/dir1 client.xyz.com(rw,no_subtree_check,no_root_squash,fsid=1)

Ojo con utilizar fsid=0, ya que tiene un significado especial (“NFS root”)

Luego notificamos los cambios con exportfs:

# -r notifica y también hace limpieza (directorios que se han eliminado de /etc/exports)
# -f limpia completamente la tabla de exportacion en el kernel, y va añadiendo nuevas 
#    entradas segun los clientes hacen peticiones
exportfs -r

En el cliente, modificamos /etc/fstab:

# Una chuleta rápida de las opciones disponibles está en "man nfs"
# defaults -> opciones por defecto (se pueden comprobar concretamente con "mount" o "nfsstat -m"
#    Habitualmente son: relatime, vers=4, rsize=1048576, wsize=1048576, namlen=255, 
#    proto=tcp, port=0, sec=sys, minorversion=0, local_lock=none
# soft,retrans=N -> despues de N retransmisiones, se aborta la operación (hay una cierta
#    probabilidad de "corrupción de datos silenciosa")
# timeo=D -> esperar D decimas de segundo antes de reintentar mandar la petición (retransmisión)
# bg, retry=M -> permanecer intentando "montar" el recurso NFS en segundo plano (background)
#    durante M minutos
# intr -> permitir que señales interrumpan operaciones NFS (se ignora desde el kernel 2.6.25)
server2.xyz.com:/nas/work/dir1 /mnt/server2/dir1 nfs defaults,bg,retry=5,timeo=5,soft,retrans=5 0 0

Resolución de problemas

  • Añade la opción “-v” a mount
  • Verifica que el cliente puede ver los puertos del servidor (con nmap o similar)
  • showmount -e SERVER
  • rpcinfo -p SERVER
  • rpcdebug

Mas info: NFS Troubleshooting

Why file and directory operations are synchronous in NFS

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *