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