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.
https://es.wikipedia.org/wiki/Network_File_System
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.
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