Objetivo
Aprenda a aprovechar el daemon autofs para montar automáticamente dispositivos y recursos compartidos remotos.
Requisitos
- Privilegios de raíz para instalar el paquete autofs y editar archivos de configuración
Dificultad
FÁCIL
Introducción
Montaje y desmontaje manual de dispositivos, como unidades USB externas o NFS
remotos o Samba
los recursos compartidos pueden ser tareas tediosas de realizar cuando se administra una máquina. Los autofs
daemon puede ayudarnos a montar automáticamente un sistema de archivos cuando sea necesario y desmontarlo después de un período de tiempo específico. En este tutorial veremos el concepto básico relacionado con el montador automático y cómo configurarlo.
Instalación de Autofs
Lo primero que debe hacer es instalar el autofs
paquete. Está disponible en los repositorios oficiales de CentOS7 y Rhel7, por lo que solo debemos usar el yum
administrador de paquetes para obtenerlo:
$ sudo yum install autofs
El siguiente paso es iniciar autofs
daemon, y habilitarlo en el arranque:
$ sudo systemctl enable --now autofs
La configuración del demonio autofs
El demonio autofs se configura mediante la manipulación de algunos archivos, cada uno con su propio propósito específico. Básicamente, lo que tenemos que hacer es proporcionar algunas instrucciones al daemon, para que sepa cómo debe administrar los puntos de montaje y los dispositivos (esto es lo que llamamos un map
) y, opcionalmente, un conjunto de opciones que se pueden usar para modificar su comportamiento. Veamos qué son esos archivos de configuración y cuál es su función.
El archivo /etc/sysconfig/autofs
El /etc/sysconfig/autofs
es el archivo de configuración principal para autofs
daemon y contiene su configuración global. Este es el contenido del archivo en una instalación predeterminada de CentOS 7.5:
# # Init syatem options # # If the kernel supports using the autofs miscellanous device # and you wish to use it you must set this configuration option # to "yes" otherwise it will not be used. # USE_MISC_DEVICE="yes" # # Use OPTIONS to add automount(8) command line options that # will be used when the daemon is started. # #OPTIONS="" #
Podemos modificar el comportamiento del demonio eliminando el comentario en la línea 13 y pasando los argumentos de la línea de comando en forma de cadena, como el valor de OPTIONS
variables.
Hagamos un ejemplo:supongamos que queremos cambiar el intervalo de tiempo predeterminado después del cual el demonio debería desmontar automáticamente un sistema de archivos:el valor predeterminado es 300
segundos o 5 minutos. Leyendo el manual de autofs (automount(8)
), podemos ver que para cambiar este parámetro debemos usar el --timeout
opción, que toma como parámetro, el intervalo de tiempo expresado en seconds
:
-t , --timeout Set the global minimum timeout, in seconds, until directories are unmounted. The default is 10 minutes. Setting the timeout to zero disables umounts completely. The internal program default is 10 minutes, but the default installed configuration overrides this and sets the timeout to 5 minutes to be consistent with earlier autofs releases.
Digamos, por ejemplo, que queremos cambiar el tiempo de espera de desmontaje predeterminado a 10 minutos, así es como deberíamos cambiar /etc/sysconfig/autofs
archivo:
OPTIONS="--timeout=600"
Luego de guardar los cambios debemos reiniciar el daemon para que la nueva configuración surta efecto. Podemos ver cómo se ha adoptado la nueva opción de tiempo de espera comprobando el estado del daemon con systemctl
:
$ systemctl status autofs autofs.service - Automounts filesystems on demand [...] CGroup: /system.slice/autofs.service └─6452 /usr/sbin/automount --timeout=600 --foreground --dont-check-daemon [...]
El archivo /etc/auto.master
El auto.master
El archivo es muy importante, ya que contiene el automontador master map
. Cada mapa asocia un punto de montaje con un archivo de configuración donde se describen los sistemas de archivos a montar, por lo que básicamente describe otro mapa. Un mapa se crea usando la siguiente sintaxis:
<mountpoint> <configuration file> <options>
La configuración le dice al daemon que el mountpoint
dado es administrado por mapas establecidos en el configuration file
dado , aplicando las opciones proporcionadas, que pueden anular las globales (esto puede ser útil, por ejemplo, para proporcionar un tiempo de espera de desmontaje específico para cada punto de montaje). Veamos un ejemplo concreto:si echamos un vistazo a la Línea 7 del archivo, podemos ver el siguiente mapa:
/misc /etc/auto.misc
Esta configuración especifica que /misc
mountpoint está interesado en las asignaciones descritas en /etc/auto.misc
expediente. Veamos cómo se configuran esos mapas echándole un vistazo.
El archivo /etc/auto.misc
Como vimos en el /etc/auto.master
archivo, el /misc
el punto de montaje está asociado con /etc/auto.misc
archivo de configuración. Ahora vamos a examinarlo para entender cómo se define un mapa para un dispositivo. Este es el contenido predeterminado del archivo:
# # This is an automounter map and it has the following format # key [ -mount-options-separated-by-comma ] location # Details may be found in the autofs(5) manpage cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom [...]
La sintaxis utilizada para la configuración es la siguiente:
<key> <mount options> <filesystem>
Lo primero que tenemos que especificar es la key
. El valor de este parámetro, se utilizará, en el caso de indirect maps
(haremos diferentes tipos de mapas en un minuto) como el nombre del subdirectorio que se creará si no existe, bajo el punto de montaje principal, que en este caso es /misc
. El /dev/cdrom
dispositivo, por lo tanto, se montará automáticamente en el /misc/cd
directorio.
El segundo elemento a proporcionar es la lista de opciones de montaje que deben aplicarse:en este ejemplo, el -fstype
se ha utilizado para especificar el tipo de sistema de archivos, junto con el ro
, nosuid
y nodev
.
Finalmente debemos especificar la ubicación del sistema de archivos. En este caso, dado que es una ruta local, debe tener un prefijo :
(dos puntos).
En el caso de un NFS
remoto share, tendríamos que escribir 192.168.1.39:/srv/nfs_share
en su lugar, donde 192.168.1.39
es la dirección de la máquina remota (también se puede usar el nombre de host) y /srv/nfs_share
es la ruta del directorio compartido en él.
Cuando nos referimos a un recurso compartido de samba, deberíamos haber proporcionado -fstype=cifs
como opción, especificando la ip de la máquina remota y la ruta del directorio compartido en el siguiente formato:
://192.168.1.39/srv/samba_share
Mapas indirectos, directos y hosts
Mencionamos un indirect map
antes, veamos ahora en detalle, los diferentes tipos de mapas. Hay tres tipos de mapas que podemos usar:direct
, indirect
y hosts maps:un ejemplo de indirect map
es lo que acabamos de ver en el archivo /etc/auto.master, para el /misc
punto de montaje.
Un mapa se llama indirecto, porque la key
parámetro especificado en el archivo de configuración (/etc/auto.misc
en este caso) asociado con el punto de montaje (/etc/misc
), se usará como el nombre del directorio relativo a ese punto de montaje donde se encuentra el sistema de archivos (:/dev/cdrom
en nuestro ejemplo) se montará.
Un direct map
, siempre se especifica con la siguiente sintaxis en el archivo auto.master:
/- /etc/auto.misc
Cuando /-
se usa como un punto de montaje en un mapa, eso significa que estamos usando un mapa directo. En este caso, la key
elemento de la sintaxis utilizada en el archivo de configuración asociado con el punto de montaje, debe ser una ruta absoluta. Por lo tanto, en el ejemplo anterior, tendríamos que escribir:
/cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
Finalmente podemos encontrar un host map
ejemplo en el archivo /etc/auto.master, en la línea 13:
/net -hosts
Tal mapa está definido por defecto; ¿como funciona? Cuando se especifica un mapa de hosts, el montador automático crea un subdirectorio bajo el punto de montaje especificado (/net
en este caso) para cada máquina listada en /etc/hosts
que exporta un NFS
Cuota. Esto es posible gracias al /etc/auto.net
script, que ahora examinaremos. Cada uno de los directorios compartidos se montará por defecto con el nosuid
y nodev
opciones.
Las secuencias de comandos /etc/auto.net y /etc/auto.smb
Hay dos scripts muy útiles incluidos en autofs
instalación:/etc/auto.net
y /etc/auto.smb
. Esos scripts son básicamente envoltorios, respectivamente, del showmount
y smbclient
programas, utilizados para descubrir recursos compartidos NFS y samba disponibles. Producirán resultados en un formato que puede ser utilizado por el montador automático.
El /etc/auto.net
script se puede utilizar para tener una visión general y para leer los recursos compartidos de NFS. Podemos invocar el script especificando el nombre de host o la dirección IP del servidor que queremos buscar como argumento:
$ sudo /etc/auto.net 192.168.1.39
Ahora, imagine que se encuentra una acción. El comando devolverá una salida similar a esta:
/shared 192.168.1.39:/shared
Esto significaría que en la máquina con ip 192.168.1.39, /shared
El directorio se comparte a través de NFS. Basado en hosts map
que encontramos en el archivo /etc/auto.master podremos acceder al recurso compartido en /net/192.168.1.39/shared
. Esto se debe a que, como dijimos antes, al usar un mapa de hosts, para cada máquina en el archivo /etc/hosts que exporta un recurso compartido NFS, se crea un subdirectorio en /net.
El /etc/auto.smb
funciona de manera similar. Si queremos que los recursos compartidos de samba en nuestra red sean montados automáticamente por el montador automático, al igual que sucede con los recursos compartidos de NFS, lo primero que tenemos que hacer es agregar este mapa en el /etc/auto.master
archivo:
/cifs /etc/auto.smb
Después de agregar el mapa, debemos reiniciar el demonio:
sudo systemctl restart autofs
En este punto, gracias al /etc/auto.smb
secuencia de comandos, para cada máquina que exporte uno o más recursos compartidos smb en nuestra red, se creará un directorio en /cifs
. Por ejemplo, imagina que en una máquina con ip 192.168.122.32 tenemos un /srv/samba
directorio compartido a través de samba. Si queremos verificarlo, podemos ejecutar el /etc/auto.smb
script contra la ip de esa máquina. Aquí está la salida:
$ /etc/auto.smb 192.168.122.32 -fstype=cifs,guest \ "/sambadir" "://192.168.122.32/sambadir"
Como se dijo antes, el script es un contenedor alrededor de smbclient
y produce una salida que puede ser utilizada por el montador automático. El directorio compartido estará disponible, en nuestro sistema de archivos local, dentro del /cifs/192.168.122.32/
creado automáticamente directorio:
$ ls /cifs/192.168.122.32 sambadir
Lazy montar y desmontar
Para optimizar el número de puntos de montaje creados, el montador automático utiliza una técnica que se llama lazy mounting
. En lugar de montar un dispositivo tan pronto como esté disponible o descubierto, esperará hasta que un usuario intente acceder al sistema de archivos:solo entonces se realiza la operación de montaje. Lo mismo ocurre con el proceso de desmontaje:un dispositivo se desmonta automáticamente después de un tiempo de espera especificado.