Je rencontre souvent un problème pour démonter un répertoire:
umount / mnt / dir umount: / mnt / dir: le périphérique est occupé
Il y a plusieurs raisons pour lesquelles l'appareil est occupé. Parfois, des processus en cours d'exécution ont des verrous ouverts, parfois d'autres répertoires sont montés dessus /mnt/dir
.
Ma question:
Quelles sont les étapes à suivre pour vérifier pourquoi un répertoire ne peut pas être démonté.
Je sais qu'il y a beaucoup de raisons, mais ça va si vous expliquez une solution spécifique.
[MODIFIER]
[X] exécution de processus sur des volumes montés.
[X] un autre volume est monté sur un volume que vous souhaitez démonter
[_] NFS verrouille le volume que vous souhaitez démonter.
Réponses:
Le moyen de vérifier est
fuser -vm /mnt/dir
, qui doit être exécuté en tant que root. Il vous indiquera quels processus accèdent au point de montage.Une alternative est
lsof /mnt/dir
, qui montrera chaque fichier ouvert sur le montage. Encore une fois mieux courir en tant que root.Vous pouvez exécuter l'un ou l'autre en tant qu'utilisateur non root, mais le résultat sera alors limité à vos processus. Les processus d'autres utilisateurs seront simplement masqués, même s'ils empêcheront le démontage du système de fichiers.
Exemple:
Le champ "accès" vous indique comment on y accède. Dans ce cas, le noyau l’utilise comme montage (duh, mais démonter sera OK avec seulement cela).
bash
l'a comme répertoire de travail actuel (il devra être danscd
un répertoire différent avant de démonter) et gvim a le répertoire actuel et a un fichier ouvert (devra fermer ce gvim).Dans cette sortie, vous pouvez voir les répertoires actuels de bash et de gvim (en tant que type
DIR
). Vous pouvez également voir quel fichier gvim a ouvert en écriture.Comment forcer le problème:
fuser
a une-k
option qui enverra un signal (valeur par défaut:)SIGKILL
à chaque processus utilisant le montage. C'est un moyen assez puissant pour empêcher la monture d'être occupée. (Et bien sûr, faites attention à ce que vous faitesSIGKILL
!)umount
a une-l
option pour effectuer un démontage paresseux. Le montage sera supprimé de l'espace de noms du système de fichiers (afin que vous ne le voyiez/mnt/Zia/src
plus sous , dans l'exemple), mais il reste monté, afin que les programmes qui y ont accès puissent continuer à le faire. Lorsque le dernier programme accédant à ce programme sera fermé, le démontage aura lieu.Il y a une dernière cause réparable d'échec de démontage, et c'est un serveur NFS en panne. Ici, vous pouvez utiliser
umount -f
, mais vous risqueriez de perdre des données si vous le faites. (Le client a peut-être mis en cache des écritures qui n'ont pas encore été confirmées par le serveur, et ces écritures sont ignorées. Cependant, les applications ont déjà été prévenues que l'écriture réussissait.)la source
fuser -k
c'est extrêmement risqué, car vous le ferez en tant que root et si vous n'êtes pas très sûr des processus qui seront tués, vous pouvez faire des dégâts vraiment spectaculaires avec une commande négligente ...-k
option, vous saurez ainsi quels processus vous allez tuer. Mais je vais ajouter un avertissement.fuser -vm
a montré "le montage du noyau". dû fairesystemctl stop opt.mount
au lieu de manuelumount
.umount -f
et NFS. Mon problème était lié à NFS où mes machines de développement changeaient les adresses IP et je ne pouvais pas obtenir le partage supprimé.Tu devrais utiliser:
la source
-l
est exactement l'option à utiliser quand même-f
ne fonctionne pas.Un autre volume est monté au-dessus d'un volume que vous souhaitez démonter:
La
mount
commande vous permet de connaître tous les volumes montés s’ils sont invoqués sans arguments ni options (sauf-v
). Vous pouvez avoir une liste de points de montage actifs en ajoutant un peu de perl:Ensuite, placez simplement le point de repère à partir duquel vous souhaitez démonter le système et vous saurez s’il existe des systèmes de fichiers montés sur celui-ci.
Ensuite, vous avez deux solutions . Démontez les systèmes de fichiers ou déplacez-les avec
mount --move olddir newdir
(noyau> 2.5.1)la source
Ouvrir des fichiers
Les processus avec des fichiers ouverts sont les coupables habituels. Les afficher:
Il y a un avantage à utiliser
/dev/<device>
plutôt que/mountpoint
: un point de montage disparaît après unumount -l
ou peut être caché par un montage superposé.fuser
peut également être utilisé, mais à mon avislsof
a une sortie plus utile. Cependant, ilfuser
est utile de tuer les processus qui causent vos drames afin que vous puissiez continuer votre vie.Liste des fichiers sur
<mountpoint>
(voir l'avertissement ci-dessus):Ne supprimez de manière interactive que les processus dont les fichiers sont ouverts à l'écriture:
Après avoir remonté read-only (
mount -o remount,ro <mountpoint>
), il est prudent de tuer tous les processus restants:Points de montage
Le coupable peut être le noyau lui-même. Un autre système de fichiers monté sur le système de fichiers que vous essayez d'essayer
umount
causera des problèmes. Vérifier avec:Pour les montages en boucle, vérifiez également la sortie de:
Inodes anonymes (Linux)
Les inodes anonymes peuvent être créés par:
open
avecO_TMPFILE
)Ce type de pokemon est le plus insaisissable et apparaît dans
lsof
laTYPE
colonne 's sous la formea_inode
(non documenté dans lalsof
page de manuel ).Ils n'apparaîtront pas dans
lsof +f -- /dev/<device>
, vous devrez donc:Pour plus d'informations sur les processus contenant des inodes anonymes, voir: Liste des surveillances inotify actuelles (nom du chemin, PID) .
la source
La question de savoir comment vérifier si NFS accède à un répertoire qui va être démonté reste toujours sans réponse.
Ce que j'ai est seulement ceci:
Vérifiez si nfsd est en cours d'exécution:
Afficher les répertoires montés par les clients:
et
showmount
sans arguments ne montre que les hôtes clients, même s’ils sont hors ligne. Je suppose que ceci est un comportement spécial de NFS.la source
Pour moi, le problème était que je me suis connecté plus d'une fois (via ssh) et que, à l'une des connexions, j'étais à l'invite de commande où le mot de passe se trouvait dans un dossier subordonné au point de montage.
la source