So finden Sie leicht heraus, ob ein Blockgerät (oder ein Teil davon) irgendwie montiert ist

10

Ich möchte wissen, wie am einfachsten festgestellt werden kann (ohne Root-Berechtigung), ob ein Blockgerät (z. B. sdb) oder ein Teil davon gemountet ist (und welcher Teil davon).

Das Überprüfen /proc/mountsauf SDB reicht nicht aus, da sdbLVM oder eine seiner Partitionen verwendet werden kann. Sie können überprüfen, /sys/block/sdb/sdb*/holders/aber Sie erhalten dm-xEinträge, die /dev/mapperzur Überprüfung in Namen aufgelöst werden müssen /proc/mounts. Möglich, aber wenn es eine einfachere Lösung gibt ... (für die kein Root-Privileg erforderlich sein sollte)

Hauke ​​Laging
quelle
2
Ich bin neugierig, haben Sie nicht nur versucht herauszufinden, ob das Gerät montiert ist? * / Inhaber und * / * / Inhaber sind gut genug, um Ihnen mitzuteilen, dass das Gerät gemountet ist, wenn das Gerät nicht in der Tabelle / proc / mounts vorhanden ist. Warum müssen Sie es weiter lösen? Das heißt, cryptsetup fügt es den Haltern hinzu, um anzuzeigen, dass Sie nicht mit dem Laufwerk herumspielen sollten. Auch wenn der / dev / mapper nicht gemountet ist oder eine Verschlüsselungsbeschädigung verursacht. Es ist nur so, dass es intern über einen Treiber montiert wird. Vergessen Sie auch nicht, / sys / block / sdb / Holder zu überprüfen, da das Laufwerk ohne Partitionen "gehalten" werden könnte.
Rahly

Antworten:

12

Dies ist im Wesentlichen eine Frage der Überprüfung einer ganzen Tüte Eckkoffer.

  • Ein Laufwerk kann in / proc / mounts angezeigt werden
  • Ein Laufwerk kann als Swap verwendet werden (use / proc / swaps)
  • Ein Laufwerk kann Teil eines aktiven LVM- PV sein (verwenden Sie pvdisplay).
  • Ein Laufwerk kann Teil einer dm-mapper-RAID-Gruppe sein (use / proc / mdstat).
  • Auf ein Laufwerk kann eine Anwendung direkt zugreifen (z. B. unterstützt Oracle das direkte Schreiben auf ein Laufwerk oder eine Partition anstelle eines Dateisystems) (Fixiereinheit verwenden).
  • Auf ein Laufwerk kann eine virtuelle Maschine direkt zugreifen (Fixiereinheit verwenden).
  • Ein Antrieb kann durch eine Loopback - Einheit referenziert werden (zB: mount /dev/sda -o offset=1M /foo) (Verwendung losetup -a)

Dies sind nur die Beispiele, die ich mir anderthalb Minuten ausgedacht habe, um darüber nachzudenken. Ich bin sicher, es gibt ein Dutzend andere.

Dieses letzte Beispiel ist meines Erachtens das interessanteste und nur wenige wissen davon. Sie können ein Dateisystem ohne Verwendung von Partitionen bereitstellen. Geben Sie einfach den Startoffset an und Linux erstellt transparent ein Loopback-Gerät. Das obige Beispiel ergibt Folgendes:

# cat /proc/mounts
...
/dev/loop0 /foo ext4 relatime,data=ordered 0 0

# losetup -a
/dev/loop0 [0005]:2048 (/dev/sda), offset 1048576

Warum würdest du das tun? In der Regel handelt es sich dabei um Situationen, in denen zuvor schreckliche Probleme aufgetreten sind.

Beachten Sie auch , dass mit der jetzt in der Hauptzeile enthaltenen Namespace-Funktion (siehe Freigabe ) unterschiedliche Prozesse unterschiedliche Ansichten darüber haben können, was gemountet ist und was nicht. Hier fängt es an, ein bisschen rote Pille zu bekommen.

tylerl
quelle
1

Es gibt viel mehr Möglichkeiten, Geräte zu mounten. Alle können kombiniert werden. Es liegt also wie oft an Ihnen, dies herauszufinden.

dh was wird von lvm verwendet: pvdisplay

Sie müssen also auch NFS, CIFS, RAID, Loop, Krypta usw. einschließen. Ein guter Ausgangspunkt ist immer /proc/mounts, wie Sie bereits erwähnt haben.


quelle