Cómo compartir directorios en Linux mediante NFS

Amigos en este POST explicaré como compartir directorios en nuestra red local con NFS. NFS nos permitirá usar directorios compartidos como si fueran directorios locales.

Utilizar un directorio compartido puede resultar muy útil a la hora de generar respaldos (backups) de archivos, configuraciones, bases de datos, etc. Un ejemplo de esto lo podemos ver en el anterior artículo: Cómo generar backups automáticos de Zentyal.

Este artículo asume que posees los conocimientos mínimos de Linux, sabes cómo usar la terminal, y lo más importante, conoces tu servidor. La configuración es simple y se asume que estás ejecutando la terminal con la cuenta de root, si no es así, deberás adicionar ‘sudo’ a los comandos para obtener los privilegios de root.

¿Qué es NFS?

Network File System (sistema de archivos de red), o NFS, es un protocolo de nivel de aplicación, según el Modelo OSI. Es utilizado para sistemas de archivos distribuido en un entorno de red de computadoras de área local. Posibilita que distintos sistemas conectados a una misma red accedan a ficheros remotos como si se tratara de locales.
El sistema NFS está dividido al menos en dos partes principales: un servidor y uno o más clientes. Los clientes acceden de forma remota a los datos que se encuentran almacenados en el servidor.

https://es.wikipedia.org/wiki/Network_File_System

Instalación del servidor

Primero debemos actualizar el sistema, después instalamos el paquete nfs-kernel-server:

$ sudo su
# apt update
# apt install nfs-kernel-server

Crear un directorio compartido en el servidor

En este punto crearemos un directorio que queremos compartir con los clientes:

# mkdir -p /nfs/compartido

Si queremos que todos los clientes tengan acceso al directorio, se deben eliminar las restricciones de los permisos:

# chown nobody:nogroup /nfs/compartido
# chmod 777 /nfs/compartido

Configurar el archivo exports

Ahora es necesario otorgar los permisos de acceso a la máquina que cumple la función de servidor, para esto debemos modificar el archivo /etc/exports

# nano /etc/exports

Al final del archivo adicionaremos la instrucción de acceso para un cliente:

/nfs/compartido        192.168.1.14(rw,sync,no_subtree_check)

O para varios clientes:

/nfs/compartido 192.168.1.0/24(rw,sync,no_subtree_check)

Entre las opciones disponibles tenemos:

  • ro: permiso de solo lectura del directorio
  • rw: permiso de lectura y escritura del directorio
  • subtree_check: especifica la verificación de subdirectorios
  • no_subtree_check: previene verificación de subdirectorios
  • sync: Escribe todos los cambios en el disco antes de aplicarlo
  • Async: ignora la verificación de sincronización para mejorar la velocidad

Aplicar los cambios y reiniciamos el servicio:

# exportfs -a
# systemctl restart nfs-kernel-server

Permisos de acceso del firewall

En el caso que se tenga configurado el firewall del servidor, será necesario permitir el acceso a los clientes:

Para un cliente:

# ufw allow from 192.168.1.14 to any port nfs

Para varios clientes:

# ufw allow from 192.168.1.0/24 to any port nfs

Comprobamos los cambios realizados:

# ufw status

Instalación del cliente

En el cliente instalaremos nfs-common:

# apt install nfs-common

Crear el directorio donde se montará la carpeta compartida del servidor:

# mkdir –p /nfs/backups/

Montar el directorio compartido:

# mount 192.168.1.10:/nfs/compartido /nfs/backups

Montar de manera permanente el directorio compartido:

# nano /etc/fstab
192.168.1.10:/nfs/compartido       /nfs/backups      nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

Comprobamos los cambios en el cliente:

# df -h

Entradas relacionadas