NFS (parte 4): Compartir almacenamiento en un servidor Ubuntu 20.04 LTS

Publicado por P. Ruiz en

logoComo es lógico, antes de compartir parte de la capacidad de almacenamiento de un servidor Ubuntu 20.04 LTS con otros clientes de la red, a través del protocolo NFS, necesitarás haber instalado el software necesario en dicho servidor, algo que ya te hemos explicado en el artícolo NFS (parte 1): Instalación en un servidor Ubuntu 20.04 LTS.

Sin embargo, antes de aplicar los cambios que te explicamos en este artículo, deberás haber puesto en práctica el artículo anterior.

En particular, vamos  a suponer que necesitamos compartir con los clientes dos carpetas del servidor: /home y /compartido. Los pasos que deberemos seguir son estos:

  • Crear la carpeta o las carpetas que aún no existan.

  • Exportar el contenido de las carpetas.

  • Reiniciar el servicio NFS.

  • Crear un archivo en una de las carpetas compartidas para comprobar que es accesible desde los clientes.

Crear las carpetas a compartir

La creación de una carpeta para compartir es tan sencilla como utilizar el comando mkdir.

Además, como no queremos que los usuarios experimenten problemas para acceder a los datos, también cambiaremos el nombre del usuario y grupo propietarios de la carpeta, para que no sean propiedad de nadie. Esto lo conseguiremos con el comando chown.

Por último, modificaremos los permisos de acceso, para que todos los usuarios puedan llevar a cabo cualquier acción sobre ella. Para lograrlo, usaremos el comando chmod.

En definitiva, los comandos a ejecutar serán estos:

sudo mkdir /compartido
sudo chown nobody:nogroup /compartido
sudo chmod -R 777 /compartido

Creamos la carpeta y cambiamos sus permisos.

NFS-parte-4-compartir-almacenamiento-en-el-servidor-ubuntu-2004-lts-001

Esto en cuanto a la carpeta /compartido. Por su parte, a la carpeta /home sólo accederemos como superusuario y a cada una de sus subcarpetas con el usuario correspondiente. Por este motivo, no cambiaremos su propiedad.

En el capítulo que dedicamos a NFS dentro de nuestro libro Sistemas Operativos en Red (2ª edición) hablamos de una forma detallada de los de los permisos cuando usamos NFS, pero, de momento, nos interesa que todo sea lo más sencillo posible.

Exportar el contenido de las carpetas

Después del paso anterior, debemos editar el archivo /etc/exports. Este es el archivo donde se indican a NFS las carpetas que vamos a compartir (exportar, en la terminología NFS).

Cada carpeta exportada debe estar en una línea diferente de este archivo, aunque una línea muy larga puede continuarse en la línea siguiente poniendo al final una barra invertida (‘\’).

Las líneas tienen el siguiente formato:

ruta cliente_1(opciones) cliente_2(opciones) …

No hay espacios en la definición de un cliente, sólo entre un cliente y otro, y entre el primero y la ruta de la carpeta.

Observa que cada cliente tiene dos partes:

  • La primera identifica al ordenador cliente (en el ejemplo lo hemos representado como cliente_1, cliente_2, …).

    Podemos usar cualquiera de las siguientes opciones:

    • Una dirección IP o un nombre DNS.

    • Caracteres comodín para representar todo el nombre del cliente o una parte. Podemos utilizar los comodines siguientes:

      • ‘?’, Para representar un carácter cualquiera.

      • ‘*’, Para representar cualquier conjunto de caracteres.

      No se recomienda utilizarlos con direcciones IP.

    • Intervalos de direcciones IP. Por ejemplo, 192.168.1.0/30, que permitirá acceder a las primeras 30 direcciones a partir de 192.168.1.0

    • netgropus. Cuando dispongamos de un servidor NIS en la red, podremos agrupar los usuarios en grupos.

      En este caso, podremos utilizar el grupo con el formato @nombre_de_grupo.

  • La segunda será una lista de opciones para compartir.

    Entre las opciones que podemos utilizar, se encuentran las siguientes:

    • ro (read-only): La carpeta compartida será de sólo lectura. Es la opción predeterminada.

    • rw (read-write): El usuario podrá realizar cambios en el contenido de la carpeta compartida.

    • wdelay: El servidor NFS no escribe en el disco si espera otra solicitud de forma inminente. Así se reducen los accesos a disco y mejora el rendimiento. Es la opción predeterminada, pero sólo funciona cuando usamos la opción sync.

    • no_wdelay: Deshabilita la característica anterior.

    • root_squash: Evita que los usuarios con privilegios administrativos los mantengan, sobre la carpeta compartida, cuando se conectan remotamente. En su lugar, se les trata como a un usuario remoto más. Es la opción predeterminada.

    • no_root_squash: Deshabilita la característica anterior.

    • sync: Evita responder peticiones antes de escribir los cambios pendientes en disco. Es la opción predeterminada.

    • sync: Evita responder peticiones antes de escribir los cambios pendientes en disco. Es la opción predeterminada.

    • async: Deshabilita la característica anterior. Mejora el rendimiento a cambio de que exista el riesgo de corrupción en los archivos o, incluso, en todo el sistema de archivos, si se produjese una interrupción del fluido eléctrico o un bloqueo del sistema.

    • subtree_check: Cuando el directorio compartido es un subdirectorio de un sistema de archivos mayor, NFS comprueba los directorios por encima de éste para verificar sus permisos y características. Es la opción predeterminada.

    • no_subtree_check: Deshabilita la característica anterior, lo que hace que el envío de la lista de archivos sea más rápido, pero puede reducir la seguridad.

En nuestro caso, incluiremos estas dos nuevas líneas en el archivo /etc/exports:

/home *(rw,sync,no_root_squash,no_subtree_check)
/compartido *(rw,sync,no_subtree_check)

Y para lograrlo, recurriremos, como es habitual, al editor de textos nano:

Abrimos el editor con privilegios de administración.

NFS-parte-4-compartir-almacenamiento-en-el-servidor-ubuntu-2004-lts-002

Una vez abierto el archivo, incluimos las líneas que indicamos más arriba:

Para salir, guardando los cambios, usamos la combinación de teclas Ctrl + X.

NFS-parte-4-compartir-almacenamiento-en-el-servidor-ubuntu-2004-lts-003

Iniciar/reiniciar el servicio NFS

Siempre que hagamos cambios en el archivo /etc/exports, necesitaremos reiniciar el servicio para que éstos sean efectivos. Lo conseguiremos escribiendo la siguiente orden en la ventana de terminal:

sudo systemctl restart nfs-kernel-server

Si el servicio no estuviese en ejecución, en lugar de reinciarlo, sencillamente lo iniciaremos. Es decir, la orden que escribiremos en la ventana de terminal es la siguiente:

sudo systemctl start nfs-kernel-server

Ejecutamos el comando.

NFS-parte-4-compartir-almacenamiento-en-el-servidor-ubuntu-2004-lts-004

Crear un archivo en una carpeta compartida

Después de configurar el servidor, tendremos que hacer lo propio con los clientes. Sin embargo, para que podamos comprobar que todo es correcto después de completar esa la operación, sería conveniente disponer de algún contenido en una de las carpetas compartidas. Así comprobaremos que el contenido está accesible.

Por lo tanto, nos dirigimos a /compartido y creamos un archivo cualquiera:

touch Documento\ compartido\ en\ el\ servidor.txt

En este caso, nos hemos decantado por el oportuno nombre de Documento compartido en el servidor.txt.

NFS-parte-4-compartir-almacenamiento-en-el-servidor-ubuntu-2004-lts-005

Y con esto estamos listos para la siguiente fase, que consistirá en el acceso desde los sistemas operativos cliente… Pero será artículos diferentes.

Espero que esta serie de artículos te esté resultando interesante.