Comment vérifier si un CD est actuellement utilisé sous Linux?

2

Comment vérifier si un CD est utilisé avant de le retirer de la machine virtuelle? Il est actuellement monté sur / dev / sr0 sur une machine Ubuntu 14.04 et je dois le démonter pour la migration du magasin de données.

Je sais que ce n’est pas écrit, mais j’ai besoin de savoir s’il est lu.

hiver
la source
1
Quel hyperviseur utilisez-vous?
Xyon
vSphere, mais je ne pense pas que cela compte beaucoup. Tout ce que je sais, c'est que VMWare me dit qu'il souhaite démonter le disque lorsque j'essaie de le retirer, mais avant de retirer les CD de mes machines de production, je veux savoir si les CD sont utilisés activement.
Coupe d'Hiver
La méthode des Simples consisterait à dire à la machine virtuelle Ubuntu de la démonter. Si cela réussit, il n'est actuellement pas utilisé.
dirkt

Réponses:

1

La seule façon de procéder correctement consiste à essayer de démonter le CD dans la VM.

La procédure générale que j'utilise généralement est la suivante:

  1. Vérifiez si elle est montée, exécutez de préférence en tant que root:

    grep /dev/sr0 /proc/self/mounts
    

    Si cela crée du texte, le CD est monté et peut être utilisé (mais il n'est pas sûr de le retirer même s'il n'est pas utilisé), sinon vous pouvez supposer qu'il est inutilisé à moins que le logiciel de gravure de CD ne soit ouvert. .

  2. Essayez de le démonter (cela doit être fait en tant que root):

    umount /dev/sr0
    

    Si cela réussit sans erreur, vous pouvez être certain à ce stade que le CD n'est pas utilisé et vous pouvez le retirer en toute sécurité du côté de l'hyperviseur. S'il se plaint de /dev/sr0ne pas être monté, revérifiez la première étape, sinon passez à l'étape suivante.

  3. Déterminez ce qui l'utilisait (vous devez également le faire en tant que root et vous devrez peut-être installer la fusercommande):

    fuser -m $(grep /dev/sr0 /proc/self/mounts | cut -f 2)
    

    Cela déterminera où il est monté, puis crachera une ligne pour chaque fichier utilisé, en commençant par le nom du fichier, suivi d'une liste de PID séparés par des espaces et utilisant le fichier. Vous pouvez ensuite rechercher les processus auxquels ces PID appartiennent dans la plupart des logiciels de surveillance du système top. Si vous ne vous souciez pas de ce qu'ils sont, vous pouvez ajouter -k -TERMavant la -mcommande ci-dessus, et cela enverra un SIGTERM à tous les processus pour vous (équivalent à appeler killsur chaque PID). Une fois que tous ceux-ci ont été traités, vous pouvez répéter l'étape 2 et la umountcommande devrait fonctionner.

Notez que cette approche suppose qu'aucun espace de nom de montage n'est impliqué, ce qui est généralement le cas, sauf si vous utilisez des conteneurs (dans ce cas, vous devrez peut-être exécuter toutes ces étapes dans chaque conteneur en cours d'exécution).

Austin Hemmelgarn
la source