Introducción

En este post vamos a crear una instancia en OpensStack y anexarle un volumen de 2GB. El objetivo será configurar un servicio NFS de exportación y en el volumen anexado, un punto de montaje de la exportación mediante systemd.

Creamos el escenario

Creamos el servidor

Creamos una instancia en OpenStack con una imagen de Debian 11.

openstack server create --flavor m1.mini \
--image "Debian 11 Bullseye" \
--key-name pass \
--security-group default \
--network "red de mariajesus.alloza" \
NFS-Systemd

Le añadimos un volumen de 2GB

openstack volume create --size 2 \
--description "Volumen NFS-Systemd" \
--availability-zone "nova" \
--bootable \
nfs

Le asignamos una IP flotante.

openstack floating ip create ext-net
#IP flotante asignada:
172.22.201.229

Creamos el cliente

Creamos una instancia en OpenStack con una imagen de Debian 11.

openstack server create --flavor m1.mini \
--image "Debian 11 Bullseye" \
--key-name pass \
--security-group default \
--network "red de mariajesus.alloza" \
NFS-Systemd-Cliente

Le asignamos una IP flotante.

openstack floating ip create ext-net
#IP flotante asignada:
172.22.201.247

Configuración

Configuramos el servicio NFS

En la máquina servidor,con ip 172.22.201.229 realizamos las siguientes acciones:

  • Instalamos el servicio NFS:
sudo apt install nfs-kernel-server
sudo apt install nfs-common
  • Tras su instalación, vamos a habilitar y activar el servicio:
systemctl start rpcbind nfs-server
systemctl enable rpcbind nfs-server
  • Comprobamos que el servicio está activo:
systemctl status rpcbind nfs-server

En la siguiente imagen podemos ver que el servicio está activo y que está a la escucha en el puerto 2049.

Configuramos el punto de montaje

Ahora le toca el turno a la máquina cliente, con ip 172.22.201.247. En ella realizamos las siguientes acciones:

  • Creamos el punto de montaje:
mkdir /nfs
  • Creamos el fichero de configuración del punto de montaje:
nano /etc/systemd/system/nfs.mount
  • Añadimos el siguiente contenido:
[Unit]
#Descripción
Description=Montaje NFS-Systemd

[Mount]
#Volumen de 2GB añadido a la instancia
What=/dev/vdb
#Directorio de montaje
Where=/nfs
#Sistema de ficheros empleado
Type=ext4
#Opciones de montaje
Options=defaults

[Install]
#Autoarranque
WantedBy=multi-user.target
  • Vamos a formatear el volumen anexado a la instancia:
mkfs.ext4 /dev/vdb

Y a continuación, reiniciamos el demonio e iniciamos el punto de montaje:

systemctl daemon-reload
systemctl start nfs.mount
  • Comprobamos que el punto de montaje está activo:

Montaje permanente del punto de montaje

Para que el punto de montaje sea permanente, es decir, que se monte automáticamente al arrancar la máquina, realizamos las siguientes acciones:

  • Añadimos el punto de montaje al fichero /etc/fstab:
nano /etc/fstab

#Añadimos la siguiente línea al final del fichero:
/dev/vdb /nfs ext4 defaults 0 0
  • Para que los clientes puedan acceder al punto de montaje, debemos añadir la siguiente línea al fichero /etc/exports:
nano /etc/exports

#Añadimos la siguiente línea al final del fichero:
/nfs 10.0.0.0/24(rw,sync,no_root_squash,no_subtree_check)

La configuración anterior permite que todos los clientes de la red 10.0.0.0/24 puedan acceder al punto de montaje /nfs con permisos de lectura y escritura.

  • Reiniciamos la máquina y comprobamos que el punto de montaje se monta de forma automática al iniciar el sistema.

Configuración del cliente NFS

Ahora vamos a configurar el cliente NFS. En la máquina cliente, con ip 172.22.201.247, realizamos las siguientes acciones:

  • Instalamos el cliente NFS:
apt update && apt upgrade -y
apt install nfs-common
  • Para comprobar que el cliente NFS está instalado, ejecutamos el siguiente comando:
showmount -e 10.0.0.215

Lo que se nos mostrará es la exportación del servidor:

Configuración del punto de montaje del cliente

Ahora vamos a configurar el punto de montaje del cliente. En la máquina cliente, con ip 172.22.201.247, realizamos las siguientes acciones:

  • Creamos el directorio que usaremos como punto de montaje:
mkdir /cliente
  • Y a continuación, creamos el fichero de configuración del punto de montaje:
nano /etc/systemd/system/cliente.mount

La configuración del fichero es la siguiente:

[Unit]
Description=Montaje NFS-cliente

[Mount]
#Dirección IP:Directorio de exportación
What=10.0.0.215:/nfs
#Directorio del recurso compartido
Where=/cliente
#Tipo de recurso
Type=nfs
#Opciones de montaje
Options=defaults

[Install]
#Autoarranque
WantedBy=multi-user.target
  • Activamos y montamos el recurso que queremos compartir:
systemctl enable NFS-cliente.mount
systemctl start NFS-cliente.mount
  • Comprobamos que el punto de montaje está activo:

Montaje permanente del punto de montaje del cliente

Para que el punto de montaje sea permanente, es decir, que se monte automáticamente al arrancar la máquina, realizamos las siguientes acciones:

  • Añadimos el punto de montaje al fichero /etc/fstab:
nano /etc/fstab

#Añadimos la siguiente línea al final del fichero:
10.0.0.215:/nfs /cliente nfs defaults 0 0
  • Reiniciamos la máquina y comprobamos que el punto de montaje se monta de forma automática al iniciar el sistema.

Comprobación del funcionamiento del servicio NFS

Para comprobar que el servicio NFS está funcionando de forma correcta, vamos a crear un directorio y un fichero en el punto de montaje del servidor y comprobar que se reflejan en el punto de montaje del cliente.

¡NOTA! Recuerda que una vez realizados los cambios, para que el sercidor NFS los reconozca, debemos ejecutar sudo exportfs -ra para que se actualicen los cambios.

  • Creamos un directorio y un fichero en el punto de montaje del servidor:
mkdir /NFS-Systemd/prueba
echo "Esto es un texto escrito desde el servidor" > /nfs/nfs-prueba.txt
  • Accederemos al punto de montaje del cliente y comprobaremos que el directorio y el fichero se han creado correctamente:
cd /cliente
ls
cat nfs-prueba.txt
  • Si lo que queremos es crear un fichero desde el cliente, lo crearemos en el punto de montaje del cliente y comprobaremos que se ha creado en el punto de montaje del servidor:
echo "Esto es un texto escrito desde el cliente" > /cliente/prueba/prueba-cliente.txt
ls /nfs/prueba
cat /nfs/prueba/prueba-cliente.txt