sábado, 2 de diciembre de 2017

Servidor NFS en un contenedor


He leído en varios sitios que para compartir ficheros entre equipos Linux es más eficiente usar NFS en lugar de SAMBA. Además consume menos recursos, lo que lo hace interesante para la Raspberry Pi 3 que tengo en casa, de esa forma el Kodi que tengo en la Raspberry accedería a los contenidos multimedia del HP Proliant G8 utilizando este protocolo.

1ºInstalar los paquetes necesarios

Lo voy a montar en un contenedor con Debian 9 que funciona sobre Proxmox 5.1, Necesito instalar un par de paquetes con el comando:
sudo apt install nfs-common nfs-kernel-server 

2ºConfiguro el contenedor

Es necesario hacer un ajuste en la configuración del contenedor para que todo funcione. Para ello paro el contenedor y edito el fichero /etc/pve/lxc/110.conf (bueno, 110 es el número de mi contenedor, para ti será otro). Al final del fichero añado la siguiente línea:

lxc.apparmor.profile: unconfined

3ºCompartir carpetas en NFS

Ya puedo compartir carpetas desde el contenedor. Lo vuelvo a arrancar, entro por SSH y edito el fichero /etc/exports y añado una línea por cada carpeta que quiero compartir con la siguiente sintaxis:
/home/usuario/fotos 192.168.1.6/24(rw)
Esto sería para que pudiera entrar el equipo con la IP 192.168.1.6 en modo lectura y escritura.
/home/usuario/fotos 192.168.1.0/24(ro)
Y esto último sería para que pudieran entrar todos equipos de la LAN en modo solo lectura.
OJO: No hay que dejar ningún espacio entre la IP y los permisos, sino no funciona bien, véase "192.168.1.0/24(ro)"

Si quiero que accedan todos los equipos de la red sin contraseña, puedo poner esta línea:

/home/usuario/fotos 192.168.1.0/24(rw,no_subtree_check,async,insecure)

Para que el servicio NFS vuelva a cargar el fichero modificado puedo ejecutar:
sudo exportfs

Hay muchas más opciones para compartir, pero se trata de hacer esto lo más fácil posible.

4ºConfiguración del cliente NFS

Bueno, pues ya solo queda configurar el cliente para que pueda acceder a las carpetas compartidas. En el cliente es necesario instalar solo el paquete nfs-common con el comando:
sudo apt install nfs-common
Una vez instalados este paquete, ya puedo montar la carpeta que había compartido en el contenedor con el comando:
sudo mount -t nfs ip-del-contenedor:/home/usuario/fotos /fotos-contenedor
Para desmontar la carpeta lo haría igual que para montar cualquier sistema de ficheros:
sudo umount /fotos-contenedor
Si quiero que se monte esta carpeta cada vez que se arranque el equipo cliente, tendría que editar el fichero /etc/fstab y añadir la siguiente línea:
ip-del-contenedor:/home/usuario/fotos /fotos-contenedor nfs

5ºExtra: Hacer que se monten las carpetas automáticamente

En el caso de que arranque el cliente y no esté arrancado el contenedor/servidor la carpeta no se montaría. Para hacer que sea automático el "montaje" de las carpetas puedo instalar/configurar el paquete autofs. Para instalar el paquete ejecuto:
sudo apt-get install autofs
Después se edita el fichero /etc/auto.master y se añade la línea:
/media /etc/auto.nfs --timeout=180
Ahora creamos el fichero /etc/auto.nfs con el siguiente contenido:
proliant -fstype=nfs,rw,soft,intr ip-del-contenedor:/home/usuario/fotos
Si reiniciamos el servicio autofs con el comando:
sudo service autofs restart
Y accedemos a algún fichero/carpeta del recurso en cuestión, se montará automáticamente.

ACTUALIZACIÓN:
He probado sin instalar autofs, simplemente añadiendo esta línea en el fichero /etc/fstab:

192.168.1.110:/ /mnt/nfs_client nfs4 noauto,x-systemd.automount,_netdev 0  0


PD.: Si te interesa también se puede usar NFS desde Windows 10, aquí puedes ver como se hace.

3 comentarios:

  1. Holaa, seguí los pasos en un contenedor almalinux 9 al querer montar la carpeta me dice mount.nfs: Operation not permitted, me he dado cuenta que en proxmox 8.1.10, en maquina del contenedor, opciones y en funcionalidades aparece NFS deshabilitados

    ResponderEliminar
  2. Holaa, seguí los pasos en un contenedor almalinux 9 al querer montar la carpeta me dice mount.nfs: Operation not permitted, me he dado cuenta que en proxmox 8.1.10, en maquina del contenedor, opciones y en funcionalidades aparece NFS deshabilitado

    ResponderEliminar