6 votes

umount Périphérique ou ressource occupé ; déjà essayé : mount, lsof, fuser, exportfs, ps axf

Dans le cadre d'un système de création automatique de VM, un périphérique de bloc est monté dans un dossier temporaire ( /tmp/quelque chose ). Divers scripts installent et configurent la VM avant sa première exécution.

Récemment, quelque chose a changé, le montage temporaire est occupé et refuse de monter. En essayant de déterminer ce qui pourrait encore garder un fichier ouvert, j'ai vérifié :

Tests exécutés en tant que root

  • mont
  • lsof | grep /tmp/
  • fuser -m /tmp/...
  • exportfs -rv
  • Redémarrage du démon qui exécute la création scripts de toute façon....
  • ps axf
  • table dmsetup
  • losetup -a
  • fuser -vm /tmp/tmp.random-chars/ (donne deux lignes)
    • COMMANDE D'ACCÈS PID DE L'UTILISATEUR
    • /tmp/tmp.random-chars : root kernel mount /tmp/tmp.random-chars

Aucun des tests ci-dessus n'a de résultats indiquant une utilisation du système de fichiers, mais umount -f se plaint toujours de "Device or resource busy" / "device is busy".

Quels sont les autres tests que je devrais essayer pour trouver la véritable cause et ainsi espérer résoudre le problème de montage bloqué sans redémarrage sur un système que je ne peux actuellement pas redémarrer pendant un certain temps, ainsi que pour éviter que cela ne se reproduise ?

Il est également /douteux/ (mais je ne sais pas comment vérifier) que les modules du noyau du montage temporaire soient chargés, car le montage temporaire a une version de Linux installée différente de celle de l'hôte.

éditions

  • D'après les différents résultats de recherche, il semble que les /modules/ soient simplement lus en mémoire. Je ne sais pas si le noyau peut avoir des fichiers ouverts et comment accéder à une telle liste.
  • Ajouté le dmsetup / losetup à la liste des "tests qui ne montrent pas de problèmes".
  • fuser -vm comme suggéré dans freenode ##linux

0 votes

Pas assez d'informations pour essayer de vous aider

0 votes

Le type de dispositif d'appui ne devrait pas avoir d'importance. Le système hôte n'a pas été redémarré depuis la dernière fois qu'il a fonctionné avec succès. C'est probablement une chasse à l'oie sauvage que de se concentrer sur cela au lieu de localiser ce qui pourrait bloquer un système de fichiers apparemment propre.

0 votes

Voir si losetup montre tous les périphériques attachés aux fichiers dans ce répertoire.

6voto

ewwhite Points 193555

Si cela fait partie d'un processus de construction, je suppose que vous devrez redémarrer à un moment donné de toute façon. Essayez d'insérer un démontage "paresseux" dans le processus. Utilisez umount -l /tmp et voir si cela vous aide à passer cette barrière dans le processus.

0 votes

Umount -fl a été essayé la dernière fois que cela s'est produit, il ne résout pas le problème, il ne fait que le masquer.

1 votes

Pouvez-vous montrer ce que vous faites dans votre processus de construction de vm ?

0 votes

Plusieurs personnalisations du processus de déploiement par défaut de ganeti, y compris l'installation de nouveaux paquets debian dans le chroot. J'ai fait quelque chose qui (au moins précédemment) empêche les événements de démarrage/arrêt du démon de se produire dans cet état. Cependant, cela devrait être abordé d'une manière plus générale : "quelque chose bloque l'ouverture de la ressource, localisez cette chose" et cette approche serait également plus utile pour toute autre personne qui tomberait sur cette page à l'avenir.

0voto

Yitz Points 121

Nous avons eu le même problème mais il semble que cela ne se produise que si le système de fichiers racine de la machine virtuelle est ext4. ext3 fonctionne correctement. Je sais que cela semble étrange mais il pourrait s'agir d'un bug du noyau décrit dans http://www.phoronix.com/scan.php?page=news_item&px=MTIxNDQ

Si c'est le cas, nous devons simplement attendre le correctif du noyau OU éviter d'installer un nouveau vm dans la machine principale. L'installation à partir d'un run linux temporaire en tant que machine virtuelle fonctionne correctement car la machine est redémarrée sans redémarrer la machine principale.

Avez-vous essayé ext3 ? Si non, essayez d'installer en ext3, vous pouvez le convertir en ext4 plus tard si l'utilisation de ext4 est cruciale (et c'est décrit dans http://www.debian-administration.org/article/643/Migrating_a_live_system_from_ext3_to_ext4_filesystem )

0voto

Moshe Yudkowsky Points 21

Une raison umount peut échouer est si l'adresse IP sous-jacente du périphérique distant a changé.

J'ai vu cela se produire lorsque je monte à distance un ordinateur portable depuis mon serveur de bureau. Le premier montage a lieu avec l'adresse IP A. Bien que le redémarrage de l'ordinateur portable lui donne l'adresse B, mon ordinateur de bureau continue à enregistrer l'adresse A comme l'adresse de l'ordinateur portable. Je peux le constater en examinant l'adresse IP renvoyée par la commande mount et en la comparant avec l'adresse actuelle de l'ordinateur portable.

  • J'ai pu démonter en utilisant umount -l
  • La solution à ce problème a été -- pour moi -- d'utiliser une adresse IP fixe pour le portable.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X