Objectif
Découvrez comment tirer parti du démon autofs pour monter automatiquement des appareils et des partages distants.
Exigences
- Privilèges root pour installer le package autofs et modifier les fichiers de configuration
Difficulté
FACILE
Présentation
Monter et démonter manuellement des périphériques tels que des lecteurs USB externes ou un NFS
distant ou Samba
Les partages peuvent être des tâches fastidieuses à effectuer lors de l'administration d'une machine. Les autofs
démon peut nous aider à monter automatiquement un système de fichiers en cas de besoin et à le démonter après une période de temps spécifiée. Dans ce didacticiel, nous verrons le concept de base lié à l'automonteur et comment le configurer.
Installation automatique
La première chose à faire, c'est d'installer le autofs
emballer. Il est disponible dans les dépôts officiels CentOS7 et Rhel7, il suffit donc d'utiliser le yum
gestionnaire de paquets pour l'obtenir :
$ sudo yum install autofs
L'étape suivante consiste à démarrer le autofs
démon et activez-le au démarrage :
$ sudo systemctl enable --now autofs
La configuration du démon autofs
Le démon autofs est configuré en manipulant certains fichiers, chacun ayant son propre objectif spécifique. Ce que nous devons essentiellement faire est de fournir quelques instructions au démon, pour lui faire savoir comment il doit gérer les points de montage et les périphériques (c'est ce que nous appelons une map
), et éventuellement un ensemble d'options qui peuvent être utilisées pour modifier son comportement. Voyons quels sont ces fichiers de configuration et quel est leur rôle.
Le fichier /etc/sysconfig/autofs
Le /etc/sysconfig/autofs
file est le fichier de configuration principal pour autofs
démon et contient ses paramètres globaux. Voici le contenu du fichier dans une installation par défaut 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="" #
Nous pouvons modifier le comportement du démon en supprimant le commentaire à la ligne 13 et en passant des arguments de ligne de commande sous la forme d'une chaîne, comme valeur de OPTIONS
variables.
Prenons un exemple :disons que nous voulons changer l'intervalle de temps par défaut après lequel le démon doit automatiquement démonter un système de fichiers :la valeur par défaut est 300
secondes ou 5 minutes. En lisant le manuel autofs (automount(8)
), nous pouvons voir que pour changer ce paramètre, nous devons utiliser le --timeout
option, qui prend en paramètre, l'intervalle de temps exprimé 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.
Disons par exemple que nous voulons changer le délai de démontage par défaut à 10 minutes, c'est ainsi que nous devrions changer le /etc/sysconfig/autofs
fichier :
OPTIONS="--timeout=600"
Après avoir enregistré les modifications, nous devons redémarrer le démon pour que la nouvelle configuration prenne effet. Nous pouvons voir comment la nouvelle option de délai d'attente a été adoptée en vérifiant l'état du démon avec 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 [...]
Le fichier /etc/auto.master
Le auto.master
est très important, car il contient l'automounter master map
. Chaque mappe associe un point de montage à un fichier de configuration où les systèmes de fichiers à monter sont décrits, donc décrit en gros une autre mappe. Une carte est créée en utilisant la syntaxe suivante :
<mountpoint> <configuration file> <options>
La configuration indique au démon que le mountpoint
donné est géré par des cartes définies dans le configuration file
donné , en appliquant les options fournies, qui peuvent remplacer les options globales (cela peut être utile, par exemple, pour fournir un délai de démontage spécifique pour chaque point de montage). Voyons un exemple concret :si nous jetons un œil à la ligne 7 du fichier, nous pouvons voir la carte suivante :
/misc /etc/auto.misc
Cette configuration spécifie que le /misc
mountpoint est intéressé par les mappages décrits dans le /etc/auto.misc
dossier. Voyons comment ces cartes sont configurées en y jetant un coup d'œil.
Le fichier /etc/auto.misc
Comme nous l'avons vu dans le /etc/auto.master
fichier, le /misc
le point de montage est associé au /etc/auto.misc
fichier de configuration. Nous allons maintenant l'examiner, afin de comprendre comment est définie une carte pour un appareil. Voici le contenu par défaut du fichier :
# # 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 syntaxe utilisée pour la configuration est la suivante :
<key> <mount options> <filesystem>
La première chose que nous devons spécifier est la key
. La valeur de ce paramètre, sera utilisée, dans le cas de indirect maps
(nous verrons différents types de cartes dans une minute) comme le nom du sous-répertoire qui sera créé s'il n'existe pas, sous le point de montage principal, qui dans ce cas est /misc
. Le /dev/cdrom
périphérique, sera donc automatiquement monté sur le /misc/cd
répertoire.
Le second élément à fournir est la liste des options de montage à appliquer :dans cet exemple le -fstype
l'option a été utilisée pour spécifier le type de système de fichiers, avec le ro
, nosuid
et nodev
.
Enfin, nous devons spécifier l'emplacement du système de fichiers. Dans ce cas, comme il s'agit d'un chemin local, il doit être préfixé par un :
(deux-points).
Dans le cas d'un NFS
distant share, on aurait écrit 192.168.1.39:/srv/nfs_share
à la place, où 192.168.1.39
est l'adresse de la machine distante (le nom d'hôte peut également être utilisé), et /srv/nfs_share
est le chemin du répertoire partagé dessus.
En faisant référence à un partage Samba, nous aurions dû fournir à la place -fstype=cifs
en option, en précisant l'ip de la machine distante et le chemin du répertoire partagé au format suivant :
://192.168.1.39/srv/samba_share
Cartes indirectes, directes et hôtes
Nous avons mentionné une indirect map
Avant, voyons maintenant en détail, les différents types de cartes. Il existe trois types de carte que nous pouvons utiliser :direct
, indirect
et cartes d'hôtes :un exemple de indirect map
est ce que nous venons de voir dans le fichier /etc/auto.master, pour le /misc
point de montage.
Une carte est dite indirecte, car la key
paramètre spécifié dans le fichier de configuration (/etc/auto.misc
dans ce cas) associé au point de montage (/etc/misc
), sera utilisé comme nom du répertoire relatif à ce point de montage où se trouve le système de fichiers (:/dev/cdrom
dans notre exemple) sera monté.
Une direct map
, est toujours spécifié avec la syntaxe suivante dans le fichier auto.master :
/- /etc/auto.misc
Quand /-
est utilisé comme point de montage dans une carte, cela signifie que nous utilisons une carte directe. Dans ce cas, la key
élément de la syntaxe utilisé dans le fichier de configuration associé au point de montage, doit être un chemin absolu. Ainsi, dans l'exemple ci-dessus, nous aurions écrit :
/cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
Enfin, nous pouvons trouver une host map
exemple dans le fichier /etc/auto.master, à la ligne 13 :
/net -hosts
Une telle carte est définie par défaut; Comment ça marche? Lorsqu'un mappage d'hôtes est spécifié, l'automonteur crée un sous-répertoire sous le point de montage spécifié (/net
dans ce cas) pour chaque machine listée dans le /etc/hosts
qui exporte un NFS
partager. C'est possible grâce au /etc/auto.net
script, que nous allons maintenant examiner. Chacun des répertoires partagés sera monté par défaut avec le nosuid
et nodev
options.
Les scripts /etc/auto.net et /etc/auto.smb
Il y a deux scripts très utiles inclus dans le autofs
installation :/etc/auto.net
et /etc/auto.smb
. Ces scripts sont essentiellement des enveloppes autour, respectivement, du showmount
et smbclient
programmes, utilisés pour découvrir les partages NFS et samba disponibles. Ils produiront des résultats dans un format pouvant être utilisé par l'automonteur.
Le /etc/auto.net
Le script peut être utilisé pour avoir une vue d'ensemble et pour lire les partages NFS. Nous pouvons invoquer le script en spécifiant le nom d'hôte ou l'adresse IP du serveur que nous voulons rechercher comme argument :
$ sudo /etc/auto.net 192.168.1.39
Maintenant, imaginez qu'une part est trouvée. La commande renverra une sortie similaire à ceci :
/shared 192.168.1.39:/shared
Cela signifierait que sur la machine avec l'ip 192.168.1.39, le /shared
répertoire est partagé via NFS. Basé sur la hosts map
nous avons trouvé dans le fichier /etc/auto.master nous pourrons accéder au partage sur /net/192.168.1.39/shared
. En effet, comme nous l'avons déjà dit, lors de l'utilisation d'une carte d'hôtes, pour chaque machine du fichier /etc/hosts exportant un partage NFS, un sous-répertoire est créé sous /net.
Le /etc/auto.smb
fonctionne de manière similaire. Si nous voulons que les partages Samba de notre réseau soient automatiquement montés par l'automonteur, comme cela se produit pour les partages NFS, la première chose que nous devons faire est d'ajouter cette carte dans le /etc/auto.master
fichier :
/cifs /etc/auto.smb
Une fois la carte ajoutée, nous devons redémarrer le démon :
sudo systemctl restart autofs
À ce stade, grâce au /etc/auto.smb
script, pour chaque machine exportant un ou plusieurs partages smb dans notre réseau, un répertoire sera créé sous /cifs
. Par exemple, imaginons que sur une machine avec l'ip 192.168.122.32 nous ayons un /srv/samba
répertoire partagé via samba. Si nous voulons le vérifier, nous pouvons exécuter le /etc/auto.smb
script contre l'ip de cette machine. Voici le résultat :
$ /etc/auto.smb 192.168.122.32 -fstype=cifs,guest \ "/sambadir" "://192.168.122.32/sambadir"
Comme dit précédemment, le script est un wrapper autour de smbclient
, et produit une sortie qui peut être utilisée par l'automonteur. Le répertoire partagé sera disponible, dans notre système de fichiers local, à l'intérieur du /cifs/192.168.122.32/
créé automatiquement répertoire :
$ ls /cifs/192.168.122.32 sambadir
Montage et démontage paresseux
Pour optimiser le nombre de points de montage créés, l'automounter utilise une technique appelée lazy mounting
. Au lieu de monter un périphérique dès qu'il est disponible ou découvert, il attendra qu'un utilisateur essaie d'accéder au système de fichiers :alors seulement l'opération de montage est effectuée. Il en va de même pour le processus de démontage :un appareil est automatiquement démonté après un délai spécifié.