Wie überprüfe ich, ob eine CD derzeit unter Linux verwendet wird?

440
wintermuted

Wie überprüfe ich, ob eine CD verwendet wird, bevor ich sie von der VM entferne? Es ist derzeit auf / dev / sr0 auf einem Ubuntu 14.04-Computer angemeldet und muss für die Datastore-Migration aufgehoben werden.

Ich weiß, dass nicht geschrieben wird, aber ich muss wissen, ob aus ihm gelesen wird.

2
Welchen Hypervisor verwenden Sie? Xyon vor 5 Jahren 1
vSphere, aber ich glaube nicht, dass es wichtig ist. Alles, was ich weiß, ist, dass VMWare mir sagt, dass es den Datenträger entfernen möchte, wenn ich versuche, es zu entfernen. Bevor ich jedoch die CDs von meinen Produktionsmaschinen entferne, möchte ich wissen, ob auf diese CDs aktiv zugegriffen wird. wintermuted vor 5 Jahren 0
Eine einfache Möglichkeit wäre, die Ubuntu-VM anzuweisen, die Bereitstellung aufzuheben. Wenn das gelingt, wird es * derzeit * nicht verwendet. dirkt vor 5 Jahren 0

1 Antwort auf die Frage

1
Austin Hemmelgarn

Die einzige Möglichkeit, dies ordnungsgemäß auszuführen, besteht darin, zu versuchen, die Bereitstellung der CD in der VM aufzuheben.

Das allgemeine Verfahren, das ich normalerweise verwende, ist:

  1. Überprüfen Sie, ob es überhaupt gemountet ist, vorzugsweise als root ausgeführt:

    grep /dev/sr0 /proc/self/mounts 

    Wenn dadurch jeglicher Text ausgespuckt wird, ist die CD gemountet und möglicherweise in Gebrauch (ist jedoch noch nicht sicher zu entfernen, auch wenn sie nicht verwendet wird). Andernfalls können Sie davon ausgehen, dass sie nicht verwendet wird, es sei denn, Sie haben eine CD-Brenner-Software geöffnet .

  2. Versuchen Sie, die Bereitstellung aufzuheben (muss als root erfolgen):

    umount /dev/sr0 

    Wenn dies ohne Fehler gelingt, können Sie an diesem Punkt sicher sein, dass die CD nicht verwendet wird, und sie auf der Hypervisor-Seite sicher entfernen können. Wenn es klagt, /dev/sr0nicht montiert zu sein, überprüfen Sie den ersten Schritt erneut. Fahren Sie andernfalls mit dem nächsten Schritt fort.

  3. Finden Sie heraus, was verwendet wurde (muss auch als root ausgeführt werden, und Sie müssen möglicherweise den fuserBefehl installieren ):

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

    Dadurch wird herausgefunden, wo es eingehängt ist, und dann wird für jede verwendete Datei eine Zeile ausgegeben, beginnend mit dem Namen der Datei, gefolgt von einer durch Leerzeichen getrennten Liste der PIDs, die die Datei verwenden. Sie können dann nachschlagen, zu welchen Prozessen diese PIDs in den meisten Systemüberwachungsprogrammen gehören top. Wenn Sie sich nicht darum kümmern, was sie sind, können Sie -k -TERMvor dem -moben genannten Befehl hinzufügen, und es wird ein SIGTERM an alle Prozesse für Sie gesendet (dies entspricht dem Aufruf der killeinzelnen PIDs). Wenn Sie alle erledigt haben, können Sie Schritt 2 wiederholen, und der umountBefehl sollte funktionieren.

Beachten Sie, dass bei diesem Ansatz davon ausgegangen wird, dass keine Mount-Namespaces beteiligt sind. Dies ist normalerweise der Fall, wenn Sie keine Container verwenden (in diesem Fall müssen Sie möglicherweise alle diese Schritte in jedem laufenden Container ausführen).