Comment démonter un système de fichiers sous Linux sans chercher pourquoi il est occupé?
Je veux le faire en une seule commande. Il doit gérer les applications utilisant ce système de fichiers, les sous-montages, les conteneurs ( lxc-execute -n qqq <command>
) et toutes autres choses.
Juste "démonter. Aucune objection!". Les correctifs ou configurations spéciaux du noyau sont autorisés.
Le système de fichiers devrait être vraiment démonté, ce umount -l
n'est donc certainement pas une option. Par exemple, pour cryptsetup remove
(BTW comment forcer cryptsetup remove
? Mettre à jour:, cryptsetup luksSuspend
mais vous ne pourrez pas cryptsetup luksResume
si ce n'est pas LUKS).
Comment rendre invalides tous les descripteurs de fichiers sur ce système de fichiers?
Le seul moyen fiable que je connaisse est de monter le système de fichiers via le FUSE (il n'y a généralement pas de problème pour démonter le FUSE car je peux simplement tuer son processus).
PS Déjà montage savoir fuser
, lsof | grep
, cat /proc/*/mounts | grep
et non-travail "patch badfs" obsolète.
umount --force
ouumount -f
(équivalent)Si cela échoue, utilisez:
umount --lazy
ouumount --l
(équivalent)L' option " paresseux " va "détacher le système de fichiers de la hiérarchie du système de fichiers maintenant et nettoyer toutes les références au système de fichiers dès qu'il n'est plus occupé. (Nécessite le noyau 2.4.11 ou une version ultérieure.)" Cela peut provoquer une instabilité, mais il obtiendra la chose démontée. Tous les programmes utilisant le lecteur peuvent se bloquer.
la source
--force
cela ne fonctionne pas. Et ce--lazy
n'est pas un vrai démontage - il ne libère pas de choses LVM, de bouclage ou de cryptage.peut être utilisé pour forcer un démontage lorsque le système de fichiers est occupé.
la source
umount2: Device or resource busy
le seul succès partiel a été lorsque j'ai expérimenté avec le patch badfs.Je crains qu'il n'y ait aucun moyen de le faire sur une seule commande.
umount -f
ne fonctionne vraiment pas aussi bien qu'on pourrait l'espérer. S'il y a des sous-montages sous une autre monture, vous ne pouvez pas simplement démonter ces montures dans un ordre aléatoire et espérer qu'elles disparaissent.Mais pas de soucis, il y a un moyen de faire de tout cela une seule commande: créer un script shell / Perl qui tue les processus souhaités, démonte les conteneurs, les sous-montages et finalement démonte un autre montage. Ensuite, vous pouvez simplement appeler votre script à la demande. Au départ, c'est plus de travail pour vous, mais une fois que le script fonctionne, tout est un jeu d'enfant. :)
la source