nfs
Con nfs se puede tener acceso a ficheros fuera del entorno de docker, facilitando el intercambio de información entre los contenedores y el exterior.
Instalación en el servidor de los datos
Para instalar nfs en el servidor correspondiente, deberemos ejecutar los siguientes comandos:
sudo apt update
sudo apt install nfs-kernel-server
Comprueba el estado del servidor de NFS.
sudo systemctl is-enabled nfs-server
sudo systemctl status nfs-server
Después de instalar el paquete del servidor NFS, ahora vas a configurar los directorios compartidos. Los directorios compartidos NFS pueden definirse mediante el archivo «/etc/exports«. Además, puedes especificar la dirección IP del cliente para el directorio compartido o configurar la lectura/escritura en el directorio compartido.
Ejecuta el siguiente comando para crear nuevos directorios compartidos. En este ejemplo, habrá dos directorios compartidos disponibles para los clientes,«backups» y«shared« dentro de la unidad y carpeta indicada con cd.
df -h
lsblk
cd /media/xxxxxx
sudo mkdir -p backups shared
sudo chown -R nobody:nogroup backups shared
sudo chmod 777 backups shared
A continuación, modifica el archivo«/etc/exports» utilizando el siguiente comando.
sudo nano /etc/exports
Añade la siguiente configuración al archivo.
/media/xxxx/backups 192.168.5.100(rw,sync,no_subtree_check)
/media/xxxx/shared 192.168.10.0/24(rw,sync,no_subtree_check)
Guarda y cierra el archivo cuando hayas terminado.
El directorio «backups» sólo estará disponible para el cliente NFS con dirección IP«192.168.5.100«. El directorio » shared » estará disponible para todos los clientes de la red completa«192.168.10.0/24«. rw – permitir la lectura y escritura para el directorio compartido. sync – permitir que NFS escriba los cambios antes de responder a las máquinas cliente y asegurar que el servidor NFS se presenta siempre a los clientes. no_subtree_check – desactiva la comprobación de subárboles y asegura que no habrá conflictos cuando los usuarios cambien el nombre del archivo. A continuación, ejecuta el siguiente comando para aplicar y exportar todos los directorios. Si no recibes ningún mensaje, entonces tu configuración es correcta.
Ejecuta el siguiente comando para comprobar los directorios compartidos disponibles en el servidor NFS. Deberías ver dos directorios«/srv/backups» y«/mnt/shared» disponibles como directorios compartidos para los clientes y reestablecer el servicio
sudo exportfs -a
sudo systemctl restart nfs-server
sudo systemctl status nfs-server
sudo exportfs -v
Asegurar el servidor NFS con un cortafuegos Después de configurar el directorio compartido NFS, es el momento de asegurar el servidor NFS mediante el Firewall, en este caso, el firewall por defecto de Ubuntu es UFW.
Como puedes ver en la parte superior, cada directorio compartido es accesible a través de una dirección IP de cliente y una red específicas. Así que tendrás que especificar la dirección IP del cliente o la red en la regla del cortafuegos UFW que tendrá permiso para acceder al puerto del servicio NFS.
Ejecuta el siguiente comando ufw para permitir que la dirección IP del cliente«192.168.5.100» y la red«192.168.10.0/24» accedan al puerto del servicio NFS.
sudo ufw allow from 192.168.5.100 to any port nfs
sudo ufw allow from 192.168.10.0/24 to any port nfs
Ahora vuelve a cargar la regla del cortafuegos UFW y verifica la lista de reglas del cortafuegos con el comando siguiente. Deberías ver que el puerto de servicio NFS por defecto«2049» es accesible a través de direcciones IP y redes de clientes específicas.
sudo ufw reload
sudo ufw status
Instalación en los ordenadores cliente
Para instalar nginx en los ordenadores que vayan a acceder a los servidores NFS, instala el paquete«nfs-common» con el siguiente comando. Introduce Y para confirmar la instalación y pulsa ENTER. Ahora comenzará la instalación.
sudo apt install nfs-common
Configurar el directorio de montaje Antes de empezar a montar el directorio compartido NFS, crearás un nuevo directorio específico para el destino del montaje. En este ejemplo, el directorio de destino para montar los recursos compartidos NFS es el directorio «/mnt/data».
Ejecuta el siguiente comando para crear un nuevo directorio«/mnt/data«.
sudo mkdir -p /mnt/data
Para montar el directorio compartido NFS, ejecuta el siguiente comando de montaje. En esta demostración, montarás el directorio compartido «/srv/backups» en el directorio de destino«/mnt/data«.
sudo mount nfs_server_ip:/srv/backups /mnt/data
Ahora ejecuta el siguiente comando para comprobar y verificar la lista de discos montados en tu máquina Ubuntu. Deberías ver que el directorio compartido NFS «/srv/backups» está montado en tu máquina local en el directorio «/mnt/data«.
sudo df -h
montar servidor nfs
Verificar el acceso de escritura al servidor NFS Después de haber montado con éxito el directorio compartido NFS, es el momento de verificar el acceso de escritura al directorio compartido NFS.
Ahora ejecuta el siguiente comando para crear y escribir un nuevo archivo«write.txt» en el directorio montado del objetivo NFS«/mnt/data/«.
echo "This file from client" > /mnt/data/write.txt
cat /mnt/data/write.txt
prueba de escritura del servidor nfs
A continuación, vuelve al servidor NFS y ejecuta el siguiente comando para comprobar y verificar el archivo «write.txt«. Deberías ver exactamente el mismo archivo que acabas de crear desde la máquina cliente NFS.
cat /srv/backups/write.txt
ls /srv/backups/
prueba de escritura del servidor nfs
Montar automáticamente el Servidor NFS con /etc/fstab En este punto, has montado con éxito el directorio compartido NFS en la máquina cliente de Ubuntu y has comprobado el acceso de escritura en el directorio compartido. Ahora vas a configurar el directorio compartido NFS para que se monte automáticamente durante el arranque del sistema, y esto puede hacerse mediante el archivo /etc/fstab.
Antes de editar el archivo /etc/fstab, ejecuta el siguiente comando para desmontar el directorio compartido NFS del destino«/mnt/data«.
sudo umount /mnt/data
Edita el archivo«/etc/fstab» con el siguiente comando.
sudo nano /etc/fstab
Añade la siguiente configuración al archivo.
nfs_server_ip:/srv/backups /mnt/data nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
Guarda y cierra el archivo cuando hayas terminado.
A continuación, ejecuta el siguiente comando de montaje para comprobar y verificar el archivo » /etc/fstab«. Si tu configuración es correcta, todos los sistemas de archivos del archivo «/etc/fstab» se montarán en tu máquina.
sudo mount -a
Comprueba la lista de discos montados en tu máquina cliente utilizando el siguiente comando. Y deberías ver que el directorio compartido NFS«/srv/backups» está montado en el directorio de destino «/mnt/data«. Si reinicias/reinicias la máquina cliente, el directorio compartido NFS se montará automáticamente en el directorio «/mnt/data«.
sudo df -h