Cómo configurar un servidor NFS y montar recursos compartidos NFS en Ubuntu 18.04

Cómo configurar un servidor NFS y montar recursos compartidos NFS en Ubuntu 18.04

Network File System (NFS) es un popular protocolo de sistema de archivos distribuido que permite a los usuarios montar directorios remotos en su servidor. El sistema le permite aprovechar el espacio de almacenamiento en una ubicación diferente y escribir en el mismo espacio desde varios servidores sin esfuerzo. Por lo tanto, funciona bastante bien para directorios a los que los usuarios necesitan acceder con frecuencia. Este tutorial explica el proceso de montaje de recurso compartido NFS en un servidor Ubuntu 18.04 en pasos simples y fáciles de seguir.

Información preliminar

A los efectos de este tutorial, habr√≠a una configuraci√≥n de uso compartido de directorios entre dos servidores Ubuntu 18.04, que podr√≠a ser de cualquier tama√Īo. Sin embargo, para cada uno de estos servidores, necesitar√° una cuenta que se haya configurado con sudo privilegios El servidor que compartir√° sus directorios se denominar√≠a el anfitri√≥n, mientras que el servidor que montar√° estos directorios se denominar√≠a cliente. 3. A efectos de uniformidad y simplicidad, se utilizar√°n las siguientes direcciones IP para hacer referencia a los valores de host y servidor a lo largo del tutorial:

  • Anfitri√≥n: 192.168.0.100
  • Cliente: 192.168.0.101

Los usuarios deben sustituir los valores antes mencionados con sus distintos valores de host y cliente. Ahora estamos listos para aprender los pasos para montar un recurso compartido NFS en Ubuntu 18.04 LTS.

Descarga e instalación de los componentes

Al principio, es esencial instalar los componentes necesarios tanto en el servidor host como en el cliente. Expresamente en el servidor host, se le pedirá que instale el NFS-kernel-servidor paquete, que le permitirá compartir sus directorios. Como este es el primer paso que realizará con apt en esta sesión, debe comenzar actualizando el índice del paquete local antes de la instalación (como se indica a continuación):

sudo apt-get update
sudo apt-get install nfs-kernel-server

Tras la instalaci√≥n de estos paquetes, puede realizar el cambio a la computadora cliente. En la computadora cliente, se le pedir√° que instale un paquete llamado nfs-com√ļn, que ofrece funcionalidad NFS sin necesidad de incluir los componentes del servidor. Aqu√≠ nuevamente, debe actualizar el √≠ndice del paquete local antes de la instalaci√≥n para asegurarse de tener informaci√≥n actualizada (como se muestra a continuaci√≥n):

sudo apt-get update
sudo apt-get install nfs-common

Esto lo lleva al final de este paso y ahora puede pasar al siguiente.

Creación del directorio compartido en el servidor host

A los efectos de este tutorial, habría un experimento que implicaría compartir dos directorios distintos. El primer directorio para compartir resulta ser el /directorio de inicio que contienen datos de usuario. El segundo sería un directorio de propósito general que se crearía especialmente para NFS a fin de demostrar la configuración y los procesos adecuados. El mismo estaría ubicado en /var/nfs como el /directorio de inicio ya existe, simplemente sigamos adelante y comencemos creando el /var/nfsdirectoriousando el siguiente comando:

sudo mkdir /var/nfs

Ahora tenemos un nuevo directorio designado expresamente para compartir con hosts remotos. Sin embargo, la propiedad de este directorio a√ļn no es ideal. Debemos asignar la propiedad del usuario a un usuario en nuestro sistema llamado nadie. Tambi√©n debemos asignar la propiedad del grupo a un grupo en el sistema llamado ning√ļn grupo. Esto se puede hacer tecleando el siguiente comando:

sudo chown nobody:nogroup /var/nfs

Es importante tener en cuenta aquí que debemos cambiar cuidadosamente la propiedad solo en aquellos directorios que se usan particularmente para compartir. Por ejemplo, la propiedad del directorio de inicio (directorio /home) no debe cambiarse, ya que causaría numerosos problemas a los usuarios presentes en el servidor host.

Configuración de las exportaciones de NFS en el servidor host

Con los directorios creados y asignados, ahora podemos sumergirnos en el archivo de configuración de NFS para configurar el uso compartido de estos recursos. Para eso, debes abrir el /etc/exportaciones archivo en el editor de texto con privilegios de root usando el siguiente comando:

sudo nano /etc/exports

Los archivos que aparecerán contendrán algunos comentarios para informarle sobre la estructura general de cada línea de configuración. Esencialmente, la sintaxis sería similar a la siguiente:

directory_to_share client (share_option2,...,share_optionM)

El objetivo aquí es poder crear una línea para cada uno de los directorios que se deben compartir. Dado que, en nuestro ejemplo elegido, la dirección IP es 192.168.0.100, las líneas deberían ser similares a las siguientes:

/home 192.168.0.101(rw,sync,no_root_squash,no_subtree_check)
/var/nfs 192.168.0.101(rw,sync,no_subtree_check)

Ahora tomemos un tiempo para comprender las opciones dadas en las líneas anteriores.

  • rw: esta opci√≥n permite que el equipo cliente tenga acceso de lectura y escritura al volumen.
  • sincronizar: Obliga a NFS a escribir cambios en el disco antes de responder, lo que da como resultado un entorno m√°s estable y consistente. Esto se debe principalmente a que la respuesta replica el estado real del volumen remoto.
  • nosubtreecheck: esta opci√≥n evita la verificaci√≥n de sub√°rboles, que es un proceso que obliga al host a verificar si el archivo a√ļn est√° disponible en el √°rbol exportado para cada solicitud. Puede crear problemas cuando se cambia el nombre de un archivo mientras el cliente lo tiene abierto. Por la misma raz√≥n, en casi todos los casos, es recomendable deshabilitar la verificaci√≥n de sub√°rboles.
  • norootsquash: De forma predeterminada, el NFS traduce las solicitudes de un usuario ra√≠z de forma remota a uno sin privilegios en el servidor. Esto pretende ser una caracter√≠stica de seguridad que no permite que una cuenta ra√≠z en el cliente use el sistema de archivos del host como ra√≠z. Este tipo de directiva deshabilita esto para un cierto lote de acciones.

Una vez que haya realizado todos los cambios necesarios, como era de esperar, debe realizar los cambios y guardar estos cambios antes de cerrar el archivo. Posteriormente, debe crear la tabla NFS que contiene las exportaciones de sus acciones mediante el siguiente comando:

sudo exportfs -a

Sin embargo, el servicio NFS a√ļn no se est√° ejecutando. Puede comenzar lo mismo escribiendo el siguiente comando:

sudo service nfs-kernel-server start

El comando anterior hará que sus acciones estén disponibles para los clientes que haya configurado. Ahora está listo para pasar al siguiente paso.

Creación de puntos de montaje y montaje de recursos compartidos remotos en el servidor del cliente

Con el servidor host configurado y haciendo que sus directorios compartidos estén disponibles, ahora deberá preparar su cliente. Aquí, se le pedirá que monte los recursos compartidos remotos, por lo tanto, debe crear algunos puntos de montaje. Estarías usando el convencional. /mnt para empezar, y posteriormente, crear un directorio llamado NFS bajo él para consolidar las acciones. Aquí, los directorios reales se corresponderán con su ubicación en el servidor host. Los usuarios pueden crear cada directorio y los directorios principales necesarios mediante el siguiente comando:

sudo mkdir -p /mnt/nfs/home
sudo mkdir -p /mnt/nfs/var/nfs

Habiendo creado un lugar decente para albergar los recursos compartidos remotos, ahora está en condiciones de montarlos dirigiéndose al servidor host, que, a los fines de este tutorial, es 5.6.7.8, como se muestra a continuación:

sudo mount 192.168.0.100:/home /mnt/nfs/home
sudo mount 192.168.0.100:/var/nfs /mnt/nfs/var/nfs

Estos deberían permitirle montar los recursos compartidos desde la computadora host en la máquina cliente. Puede volver a verificar esto observando el espacio disponible en el disco en el servidor del cliente (como se indica a continuación):

df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/vda               59G  1.3G   55G   3% /
none                  4.0K     0  4.0K   0% /sys/fs/cgroup
udev                  2.0G   12K  2.0G   1% /dev
tmpfs                 396M  324K  396M   1% /run
none                  5.0M     0  5.0M   0% /run/lock
none                  2.0G     0  2.0G   0% /run/shm
none                  100M     0  100M   0% /run/user
192.168.0.100:/home          59G  1.3G   55G   3% /mnt/nfs/home

Como es evidente en la parte inferior, solo uno de los recursos compartidos deseados es visible porque ambos recursos compartidos exportados existen en el mismo sistema de archivos en el servidor remoto, lo que significa que comparten el mismo grupo de almacenamiento. Para el Aprovechar y Usar% columnas para ser exactos, solo se puede agregar una de las acciones a los c√°lculos. No obstante, si desea ver todos los recursos compartidos de NFS que ha montado, puede escribir el siguiente comando:

mount -t nfs

El comando anterior arrojar√° la totalidad de los montajes NFS a los que se puede acceder actualmente en la m√°quina cliente, lo que lo lleva al final de este paso, y ahora es el momento de pasar al siguiente.

Prueba de acceso NFS

Puede probar el acceso a los recursos compartidos escribiendo algo en sus recursos compartidos, por ejemplo, un archivo de prueba en uno de sus recursos compartidos (como se muestra a continuación):

sudo touch /mnt/nfs/home/test_home

Aquí, también escribiremos un archivo de prueba en el otro recurso compartido para demostrar una diferencia importante:

sudo touch /mnt/nfs/var/nfs/test_var_nfs

Mire detenidamente la propiedad del archivo en el directorio de inicio montado (como se muestra a continuación) para comprender la diferencia:

ls -l /mnt/nfs/home/test_home
-rw-r--r-- 1 root   root      0 Apr 10 09:15 test_home

Como es evidente, el archivo es propiedad de root, la razón es que usted desactivó el root_squash opción en este montaje, que habría escrito el archivo como un usuario no root desconocido. En el otro archivo de prueba, que se montó con root_squash habilitado, notará algo completamente diferente (como se explica a continuación):

ls -l /mnt/nfs/var/nfs/test_var_nfs
-rw-r--r-- 1 nobody nogroup 0 Apr 10 09:15 test_var_nfs

Claramente, este archivo fue asignado a la nadie usuario y el ning√ļn grupo grupo. Por lo tanto, esto se ajusta a la configuraci√≥n preestablecida. Pasemos ahora al siguiente paso.

Hacer que el montaje del directorio NFS remoto sea autom√°tico

Usted disfruta de la opción de hacer que los recursos compartidos de NFS remotos se monten automáticamente agregándolos a la fstab archivo en el cliente. Debe abrir este archivo con privilegios de root en su editor de texto usando el siguiente comando:

sudo nano /etc/fstab

Justo en la parte inferior del archivo, debe agregar una línea para cada uno de los recursos compartidos, que se parecería a lo que se muestra a continuación:

192.168.0.100:/home      /mnt/nfs/home   nfs auto,noatime,nolock,bg,nfsvers=4,intr,tcp,actimeo=1800 0 0
192.168.0.100:/var/nfs   /mnt/nfs/var/nfs   nfs  auto,noatime,nolock,bg,nfsvers=4,sec=krb5p,intr,tcp,actimeo=1800 0 0

Las opciones especificadas aquí se pueden encontrar en la página del manual que describe el montaje de NFS en el fstab archivo, usando el siguiente comando:

man nfs

Esto le permitirá montar automáticamente las particiones remotas en el arranque. Puede tomar un tiempo para que se realice la conexión y las acciones estén disponibles (¡¡la paciencia será una virtud aquí!!)

Desmontar un recurso compartido remoto NFS

Si ya no necesita que el directorio remoto esté montado en su sistema, puede desmontarlo fácilmente saliendo de la estructura de directorios del recurso compartido y desmontándolo con el siguiente comando:

cd ~
sudo umount /mnt/nfs/home
sudo umount /mnt/nfs/var/nfs

Esto le permitir√° eliminar los recursos compartidos remotos y solo podr√° acceder a su almacenamiento local:

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         59G  1.3G   55G   3% /	
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            2.0G   12K  2.0G   1% /dev
tmpfs           396M  320K  396M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            2.0G     0  2.0G   0% /run/shm
none            100M     0  100M   0% /run/user

Como est√° claro, los recursos compartidos de NFS ahora no est√°n disponibles como espacio de almacenamiento. Esto lo lleva al final del tutorial.

Conclusión

NFS ofrece un mecanismo simple y rápido para acceder a sistemas remotos a través de una red. Sin embargo, el protocolo permanece sin cifrar. Si tiene la intención de usar esto en un entorno de producción, es recomendable considerar enrutar NFS sobre SSH o una conexión VPN para crear una experiencia mucho más segura.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *