Configurar un directorio virtual con NFS4

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

Con la llegada de NFS4, existe un nuevo concepto a la hora de compartir filesystems por red, que consiste en la creación de un filesystem o directorio virtual que se utiliza para enjaular todos los subdirectorios que se van a exportar vía NFSv4.

Es decir, tenemos un directorio raíz, por ejemplo /NFS y todos los subdirectorios que hay por debajo son los que se exportan a los servidores remotos. Por ejemplo: /NFS/directorio1 /NFS/directorio2 /NFS/directorio3… /NFS/directorioN

El problema de esta estructura es que no puedes exportar por NFS4 un filesystems que no esté por debajo del directorio raíz.

Lo he probado en un RedHat 6.9 y el funcionamiento es el siguiente.

Configuración del servidor NFS

En el fichero /etc/exports incluímos el parámetro «fsid=0» en el filesystem ráiz que va a contener todos los subdirectorios que vamos a exportar:

/Nombre_FS_NFS_ROOT servidor1(sync,rw,fsid=0)
/Nombre_FS_NFS_ROOT/subdirectorio1_a_exportar servidor1(sync,rw) servidor2(sync,rw) servidor3(sync,rw)

Configuración del cliente NFS

En el cliente de NFS, por ejemplo, servidor1, montaremos el filesystem por NFS4 de la siguiente manera:

mount -t nfs -o vers=4 servidor_nfs:/ /mnt –> Este comando monta el FS raíz y cuando montamos “/” estamos haciendo referencia al FS enjaulado en el servidor de NFS, es decir, /Nombre_FS_NFS_ROOT.
mount -t nfs -o vers=4 servidor_nfs:/subdirectorio1 /mnt/subdirectorio1 –> Este comando estaría montando el FS /Nombre_FS_NFS_ROOT/subdirectorio1, pero estamos apuntando al path relativo debido al enjaulamiento comentado anteriormente.

Error mounting XXX failed, reason given by server: No such file or directory

Con este error me volví loco hasta que me di cuenta de una tontería… Como suele pasar.

El parámetro fsid=0 debe ser único y no se puede duplicar pero resulta que en el fichero /etc/exports estaba configurado sólo en algunos filesystems y en otros no. Eso está mal porque fsid=0 sólo debe aparece una sola vez en todo el fichero /etc/exports.

Cuando está configurada esta directiva y se intenta montar el FS con NFS4, el protocolo entiende que tiene que ir a buscar el filesystem que intentamos montar en el cliente, dentro de path de enjaulamiento del servidor (de NFS4, se entiende). Si el directorio no está en ese path relativo, pues el comando «mount» no lo va a encontrar y devolverá el error.

Ejemplo del error:

[[email protected] ~]# mount -vvv -t nfs -o vers=4 lensnax0:/serveis/dades/PRO/NAS02/TME_FS /serveis/dadesnfs/PRO/TME_FS
mount: fstab path: «/etc/fstab»
mount: mtab path: «/etc/mtab»
mount: lock path: «/etc/mtab~»
mount: temp path: «/etc/mtab.tmp»
mount: UID: 0
mount: eUID: 0
mount: spec: «lensnax0:/serveis/dades/PRO/NAS02/TME_FS»
mount: node: «/serveis/dadesnfs/PRO/TME_FS»
mount: types: «nfs»
mount: opts: «vers=4»
final mount options: ‘vers=4’
mount: external mount: argv[0] = «/sbin/mount.nfs»
mount: external mount: argv[1] = «lensnax0:/serveis/dades/PRO/NAS02/TME_FS»
mount: external mount: argv[2] = «/serveis/dadesnfs/PRO/TME_FS»
mount: external mount: argv[3] = «-v»
mount: external mount: argv[4] = «-o»
mount: external mount: argv[5] = «rw,vers=4»
mount.nfs: timeout set for Tue Feb 26 13:00:47 2019
mount.nfs: trying text-based options ‘vers=4,addr=172.24.12.17,clientaddr=10.48.25.20’
mount.nfs: mount(2): No such file or directory
mount.nfs: mounting lensnax0:/serveis/dades/PRO/NAS02/TME_FS failed, reason given by server: No such file or directory
[[email protected] ~]#

Lo que hice para solucionarlo fue eliminar todas las directivas fsid=0 del fichero /etc/exports porque en este servidor de NFS no tengo un único directorio raíz. Este servidor NFS exporta filesystems a muchos servidores y aplicaciones distintas, cada una con su arquitectura heredada de hace años, por lo que enjaular todos los filesystems a exportar en otra ruta, representa un cambio de arquitectura y una parada de servicio que afecta a los usuarios finales.

Dicho esto, la incidencia se produjo porque, a nivel de comunicaciones hubo un problema que impedía montar los filesystems por NFS3, que no tiene en cuenta la directiva fsid=0 y, al intentar montar con NFS4, me encontré con el error.

¿Te ha gustado? ¡Compártelo!

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

SUSCRÍBETE A PUERTO53

Recibe un email periódico con los artículos más interesantes de Puerto53.com

Antes de suscribirte lee los términos y condiciones. Gracias.

Contenido Relacionado

Artículos Recientes

Deja un comentario

About Author