Umount
| Fiche express | |
|---|---|
| Domaine | Gestion des systèmes de fichiers (démontage) |
| Commande | umount
|
| Contexte | Complément de mount/fstab — tous systèmes Linux |
| Voir aussi | Mount, Fstab, Lsof |
umount démonte un système de fichiers précédemment monté avec mount, en retirant son point de montage de l'arborescence. La commande échoue si le système de fichiers est occupé (« device is busy ») — un processus a un fichier ouvert dessus, un répertoire courant s'y trouve, ou un autre montage est empilé par-dessus.
Commandes de base
umount /mnt/data # par point de montage
umount /dev/sdb1 # par device (fonctionne aussi)
umount -a # démonter tout ce qui figure dans /etc/mtab (hors pseudo-fs)
umount -t nfs -a # ne démonter que les systèmes de fichiers d'un type donné
umount -v /mnt/data # verbeux, utile en script pour tracer ce qui a réellement été démonté
Lazy umount (-l)
umount -l (lazy) détache immédiatement le système de fichiers de l'arborescence — plus aucun nouvel accès n'est possible via le point de montage — mais le nettoyage réel (libération du device, fermeture effective) n'a lieu que lorsque le système de fichiers n'est plus utilisé par aucun processus.
C'est le cas d'usage typique quand un démontage classique échoue avec « target is busy » mais qu'on a besoin de libérer le point de montage tout de suite (un service garde un descripteur de fichier ouvert dessus par erreur, un montage réseau ne répond plus, un disque externe doit être retiré sans attendre qu'un processus referme son handle). Le montage disparaît du point de vue de l'utilisateur, mais tant qu'un processus garde un descripteur ouvert dessus les données restent accessibles à ce processus — ce n'est pas un vrai démontage immédiat, juste un démontage différé et invisible.
Démontage forcé (-f)
umount -f force le démontage. Il sert surtout pour un montage NFS dont le serveur est injoignable (« stale NFS file handle », montage qui ne répond plus du tout aux appels système) : sans -f, umount lui-même peut rester bloqué en attendant une réponse du serveur.
Sur un système de fichiers local (ext4, xfs...), forcer un démontage alors que des écritures sont en cours est risqué : ça peut laisser des données non synchronisées ou un système de fichiers incohérent. À réserver aux cas NFS/réseau, ou en dernier recours après avoir vérifié qu'aucune écriture n'est en attente.
Les deux options se combinent souvent sur du NFS mort : umount -lf /mnt/nfs-partage.
Identifier ce qui bloque un démontage
Avant de forcer quoi que ce soit, il vaut mieux savoir qui retient le point de montage :
lsof +D /mnt/data # tous les fichiers ouverts sous ce point de montage (récursif)
fuser -m /mnt/data # PIDs qui utilisent le système de fichiers, avec le type d'accès (c/e/f/r)
fuser -mv /mnt/data # idem, verbeux (affiche user + commande)
fuser -km /mnt/data # tue tous les processus qui bloquent le montage (brutal, à réserver aux cas désespérés)
Voir Lsof pour le détail des options et des cas où lsof ne voit pas tout (fichier supprimé mais encore ouvert, mmap, working directory d'un processus).
Une fois la cause identifiée (processus arrêté, service redémarré, cd hors du point de montage...), un umount classique suffit généralement — pas besoin de -l/-f si le blocage était juste un descripteur oublié.
/etc/mtab vs /proc/mounts
/etc/mtab est historiquement un fichier tenu à jour par les commandes mount/umount elles-mêmes à chaque montage/démontage — une vue « déclarative » de ce qui a été monté par ces commandes. /proc/mounts (et /proc/self/mounts) est généré par le noyau en temps réel et reflète l'état réel des montages du système, y compris ceux faits par d'autres moyens (namespaces, bind mounts internes au noyau, montages faits par un autre processus).
Sur les distributions modernes, /etc/mtab est un lien symbolique vers /proc/self/mounts — les deux sont donc identiques et la question ne se pose plus. Mais sur d'anciens systèmes (ou après une manipulation manuelle malheureuse du fichier), les deux peuvent diverger : un montage réseau ou un montage fait dans un contexte particulier (chroot, conteneur) peut apparaître dans l'un et pas dans l'autre. En cas de doute sur ce qui est réellement monté, /proc/mounts fait référence — c'est le noyau qui répond, pas un fichier qui peut être désynchronisé.
cat /proc/mounts # état réel, toujours à jour, source de vérité
cat /etc/mtab # historique tenu par mount/umount (symlink vers /proc/self/mounts sur la plupart des distros actuelles)
findmnt # présentation lisible des deux, à privilégier au quotidien