Aller au contenu
Administration Linux medium

Monter des systèmes de fichiers à la demande avec autofs

10 min de lecture

autofs monte un système de fichiers uniquement quand on accède à son point de montage, puis le démonte tout seul après une période d'inactivité. Ce guide montre comment installer l'automounter, écrire des maps pour un disque local, un partage NFS et des répertoires personnels avec un joker, puis vérifier que le montage se déclenche à l'accès et disparaît après le timeout. Pour administrateurs intermédiaires, sur Debian, Ubuntu ou RHEL. C'est un objectif à la fois RHCSA et LFCS. Sorties issues d'un test AlmaLinux 10.

  • Ce qu'est le montage à la demande et pourquoi il vaut mieux que fstab dans certains cas.
  • Installer et activer le service autofs.
  • Écrire une map indirecte, une map directe et une map à joker.
  • Monter un disque local, un partage NFS et des home directories automatiquement.
  • Vérifier le déclenchement et diagnostiquer un montage qui ne part pas.

Un montage classique dans /etc/fstab est permanent : le système de fichiers est monté au démarrage et le reste. C'est parfait pour la partition racine ou un disque de données toujours utilisé. Mais pour un partage NFS consulté une fois par semaine, ou les répertoires personnels de cent utilisateurs dont trois sont connectés, garder tous les montages actifs en continu gaspille des ressources et fragilise le démarrage : un serveur NFS injoignable au boot peut bloquer la machine.

autofs répond à ce besoin. Il surveille un point de montage et déclenche le montage seulement au premier accès (un ls, un cd, l'ouverture d'un fichier). Après un délai sans activité, le timeout, il démonte automatiquement. Le partage n'existe, du point de vue du système, que pendant qu'on s'en sert.

Le paquet s'appelle autofs sur toutes les distributions. Pour monter du NFS, ajoutez le paquet client NFS (nfs-common sur Debian/Ubuntu, nfs-utils sur RHEL).

Fenêtre de terminal
sudo apt update
sudo apt install autofs nfs-common

Activez ensuite le service et vérifiez qu'il tourne :

Fenêtre de terminal
sudo systemctl enable --now autofs
systemctl is-active autofs

La sortie doit afficher active. Le service est là, mais il ne fait rien tant qu'aucune map ne lui dit quoi monter et où.

autofs lit une map maîtresse, /etc/auto.master, qui associe chaque point de montage parent à un fichier de map décrivant ce qu'il faut monter dessous. Sur les distributions récentes, on n'édite pas directement /etc/auto.master : on dépose un fichier .autofs dans /etc/auto.master.d/, automatiquement inclus.

Une ligne de map maîtresse suit ce format :

/point-de-montage-parent /etc/fichier-de-map [options]

Le fichier de map, lui, décrit chaque montage. Il existe deux formes principales :

  • Map indirecte : autofs gère un dossier parent et crée les sous-dossiers à la demande. C'est la forme la plus courante. Chaque ligne associe une clé (le nom du sous-dossier) à une source :

    clé -options source
  • Map directe : chaque montage a un chemin absolu indépendant. Dans /etc/auto.master, le point parent est le symbole /-, et la clé de la map est le chemin complet du montage.

Le champ source désigne quoi monter : un partage réseau (serveur:/export), un périphérique local (:/dev/sdb1), ou une image de fichier. Voyons les trois cas concrets.

Premier cas, le plus net : monter un système de fichiers local seulement quand on y accède. Ici, une image XFS sert de disque de démonstration.

  1. Préparer le système de fichiers à monter.

    Fenêtre de terminal
    sudo mkdir -p /srv/backing
    sudo truncate -s 512M /srv/backing/data.img
    sudo mkfs.xfs -q /srv/backing/data.img

    mkfs.xfs refuse les images de moins de 300 Mo : gardez au moins 512 Mo.

  2. Déclarer le point parent dans /etc/auto.master.d/.

    Fenêtre de terminal
    echo '/mnt/local /etc/auto.local --timeout=30' \
    | sudo tee /etc/auto.master.d/local.autofs

    L'option --timeout=30 démonte après 30 secondes d'inactivité.

  3. Écrire la map indirecte. La clé data deviendra le sous-dossier /mnt/local/data ; l'option loop demande à mount d'attacher l'image à un périphérique loop.

    Fenêtre de terminal
    echo 'data -fstype=xfs,loop :/srv/backing/data.img' \
    | sudo tee /etc/auto.local
  4. Recharger autofs pour qu'il prenne la nouvelle map.

    Fenêtre de terminal
    sudo systemctl restart autofs

Vérifiez maintenant le comportement clé. Avant tout accès, rien n'est monté :

Fenêtre de terminal
findmnt /mnt/local/data
# (aucune sortie : le montage n'existe pas encore)

L'accès déclenche le montage. Un simple ls ou une écriture suffit :

Fenêtre de terminal
touch /mnt/local/data/preuve.txt
findmnt /mnt/local/data
TARGET SOURCE FSTYPE OPTIONS
/mnt/local/data /dev/loop0 xfs rw,relatime,seclabel,...

Le système de fichiers est monté sur un périphérique loop, exactement comme si vous l'aviez fait à la main, mais il n'est apparu qu'au moment où vous en aviez besoin. Laissez passer le timeout sans y toucher, et findmnt ne renvoie plus rien : autofs a démonté tout seul.

Le cas d'usage roi d'autofs, celui attendu en RHCSA et LFCS, est le montage NFS. La configuration est identique, seule la source change : un chemin serveur:/export.

Fenêtre de terminal
echo '/mnt/nfs /etc/auto.documents --timeout=60' \
| sudo tee /etc/auto.master.d/documents.autofs
echo 'documents -rw,soft serveur-nfs.exemple:/srv/nfs/documents' \
| sudo tee /etc/auto.documents
sudo systemctl restart autofs

Un ls /mnt/nfs/documents monte alors le partage à la demande. L'option soft évite qu'un processus reste bloqué indéfiniment si le serveur disparaît (à réserver aux données non critiques ; pour de l'écriture sensible, préférez le défaut hard).

Déclarer une ligne par utilisateur serait ingérable. La map à joker résout ce cas classique : le caractère * correspond à n'importe quelle clé demandée, et l'esperluette & en reprend la valeur dans la source.

Fenêtre de terminal
echo '/mnt/homes /etc/auto.homes --timeout=30' \
| sudo tee /etc/auto.master.d/homes.autofs
echo '* -fstype=nfs,rw serveur-nfs.exemple:/export/homes/&' \
| sudo tee /etc/auto.homes
sudo systemctl restart autofs

Avec cette seule ligne, accéder à /mnt/homes/alice monte serveur-nfs.exemple:/export/homes/alice, et /mnt/homes/bob monte le sien, sans qu'aucun des deux n'ait été déclaré explicitement. C'est ainsi que l'on sert des répertoires personnels à la demande sur un parc entier.

Après chaque changement de map, systemctl restart autofs recharge la configuration. Trois commandes suffisent au diagnostic courant :

  • findmnt <point> confirme qu'un montage est bien actif (et son type réel).
  • systemctl status autofs et journalctl -u autofs remontent les erreurs du service.
  • sudo automount -m liste les maps qu'autofs a chargées.

Quand un montage refuse de se déclencher, arrêtez le service et lancez le démon au premier plan en mode bavard : chaque tentative d'accès y affiche la cause exacte.

Fenêtre de terminal
sudo systemctl stop autofs
sudo automount -f -v
# dans un autre terminal : ls /mnt/local/data

Voici les symptômes les plus fréquents et leur correction.

SymptômeCause probableSolution
L'accès ne monte rien, dossier videErreur de syntaxe dans la mapRelancer avec automount -f -v et corriger la ligne fautive
Permission denied sur un home NFS sous SELinuxBooléen SELinux bloquantsudo setsebool -P use_nfs_home_dirs on
Montage NFS annoncé mais type xfsServeur sur la même machine (bind local)Utiliser un serveur NFS distant

systemd propose une alternative avec l'option x-systemd.automount dans fstab ou une unité .automount : elle aussi monte à la demande. La différence tient à la centralisation. autofs brille pour les maps à joker et les grands parcs (des centaines de home directories réseau depuis quelques lignes) ; le montage automatique systemd convient mieux à quelques points fixes déjà décrits dans fstab. Pour un montage NFS unique et permanent, fstab avec l'option _netdev reste le plus simple.

  • autofs monte à la demande et démonte après le timeout : le partage n'occupe des ressources que pendant l'usage.
  • La configuration se fait dans /etc/auto.master.d/*.autofs (le point parent) et un fichier de map (les montages).
  • Une map indirecte gère un dossier parent ; une map directe utilise /- et des chemins absolus ; une map à joker (* et &) sert un montage par clé.
  • La source peut être locale (:/dev/..., image loop) ou réseau (serveur:/export).
  • Un serveur NFS local donne un bind, pas du NFS : testez toujours avec un serveur distant.
  • Diagnostic : findmnt, journalctl -u autofs, et automount -f -v pour voir le déclenchement en direct.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn