La forma más sencilla de montar unidades en NFS ha sido tradicionalmente el empleo de /etc/fstab
para definir las unidades de red y los puntos de montaje. Sin embargo este método puede provocar retrasos en el arranque del sistema, dado que hasta que no están los dispositivos de red y el cliente NFS funcionando no es posible montar dichas entradas, provocando interrupciones en el arranque del sistema.
Recientemente he tenido este problema con la instalación de un equipo portátil que utilizaba puntos de montaje NFS para las carpetas de documentos, música, etc. Una demora de este tipo (con una pantalla con mensajes de texto si utilizas SysV.rc o en negro si utilizas systemd) desde luego no es una situación deseable y un usuario no experimentado puede pensar que se ha producido un error y reiniciar el equipo sin finalizar el arranque.
El servicio autofs
Para evitar esta situación una posible solución es utilizar el servicio autofs cuya función es montar y desmontar automáticamente sistemas de archivos locales y remotos, evitando el engorro de montarlos manualmente o especificándolos en /etc/fstab
. Esta solución tiene como ventaja que es aplicable tanto a equipos con SysV.rc o con systemd.
Para ello deberemos asegurarnos que dicho servicio se encuentra instalado en nuestro sistema y en funcionamiento. En los equipos con SysV.rc podemos comprobarlo con service autofs status
y en systemd con systemctl status autofs.service
. Si no lo tenemos instalado o funcionando deberemos de instalarlos y activarlos en el arranque. Es un servicio básico así que no tendrás problema en localizarlo e instalarlo en tu distribución.
Configurar el servicio para NFS
Una vez nos hemos asegurado que el servicio está corriendo podemos pasar a configurarlo en unos pocos sencillos pasos.
- Determinar el punto de montaje. Naturalmente podemos especificar el punto de montaje que queramos, pero creo que lo más adecuado es mantener la Filesystem Hierarchy Standard y realizar los montajes en
/mnt
. Creamos un directorio nfs conmkdir /mnt/nfs
. Así pues todos los montajes de NFS los realizaremos en/mnt/nfs
. - Configuración del montaje. Nos ubicaremos en el directorio
/etc/autofs
, en donde sino existe un fichero específico podemos crear el fichero auto.nfs. En dicho fichero especificaremos los puntos de montaje, las opciones y el export de origen. Y ya está. Podemos incluso montar todos los exports de nfs de un servidor o utilizar widlcards y variables para mantener un único fichero auto.nfs para todos los equipos de nuestra red.Por ejemplo, si queremos montar todos los exports de un servidor:
* -fstype=nfs4,rw server:/export/home/&
El * equivale a todo, y el & es equivalente al punto de montaje. En mi caso sólo me interesaba montar algunos exports, no todos, por lo que quedó así:
docs -fstype=nfs4,rw server:/${USER} # Utilizamos # el nombre de usuario como variable en la exportación mp3 -fstype=nfs4,rw server:/& video -fstype=nfs4,rw server:/&
- Configurar /etc/autofs/auto.master. Así pues ya hemos configurado los exports a montar. Ahora falta incluirlo en el fichero
/etc/autofs/master.auto
, que es donde se especifican los directorios donde se montarán los distintos *.auto. En este caso incluimos la siguiente linea./mnt/nfs /etc/autofs/auto.nfs
Con esto estamos informando que todos los puntos de montaje especificados en auto.nfs deben de montarse en el directorio
/mnt/nfs
. ¿Simple no? Reiniciemos el servicio. En SysV.rc conservice restart autofs
y en systemd consystemctl restart autofs.service
.
Ahora si entramos en el directorio /mnt/nfs
veremos cómo aparecen montados los exports especificados en auto.nfs. Ahora la próxima vez que arranquemos el equipo comprobaremos cómo tarda mucho menos tiempo al no utilizar /etc/fstab
para el montaje, estando ya disponibles los puntos de montaje probablemente después de la carga del entorno gráfico.
Como último detalle en este caso lo que hice fue realizar enlaces simbólicos desde los distintos exports en /mnt/nfs
al directorio home del usuario, sustituyendo las carpetas Documentos, Música y Vídeo para que pudiera acceder a ellos desde su carpeta personal.
Otras aproximaciones
Por supuesto siempre existen otras alternativas:
- Empleo de NetworkManager o Wicd para ejecutar scripts de montaje. Es otra opción basarse en estos servicios, sobre todo en ordenadores con entorno gráfico, para ejecutar el montaje sólo cuando una red o un interface está conectado.
En un principio era la opción que exploré, sin embargo en el caso de NetworkManager tuve que descartarlo por un problema de timeout en la ejecucion de scripts de las últimas versiones. Al parecer si un script lanzado con el servicio NM.dispatcher tarda más tres segundos en ejecutarse el proceso es interrumpido. Por desgracia el montaje de un NFS a veces tarda más de tres segundos, sobre todo por wifi. En Wicd no observé este problema y es otra opción a considerar.
- Utilizar el sistema de montaje de sistemas de archivos de Systemd. Systemd permite manejar y configurar los puntos de montaje y automounts, por lo que podríamos prescindir de autofs. Pero claro, esta opción no está disponible en aquellos equipos con SysV.rc. Pero puedes encontrar más información aquí.
Fuentes
http://linux.die.net/man/5/autofs
http://linux.die.net/man/5/auto.master
http://docstore.mik.ua/orelly/networking_2ndEd/nfs/ch09_04.htm
Autor:
Última actualización:
Buenísimo, me viene genial para experimentar con la Raspberry con Raspbian y PiBang (SysV y Systemd)
Pues muchas gracias. Celebro te sea de utilidad. 🙂