GNU/Linux >> LINUX-Kenntnisse >  >> Linux

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

Hier geht es im Wesentlichen darum, eine ganze Tüte Corner Cases zu überprüfen.

  • Ein Laufwerk kann in /proc/mounts erscheinen
  • Ein Laufwerk kann als Auslagerung verwendet werden (verwenden Sie /proc/swaps)
  • Ein Laufwerk kann Teil eines aktiven LVM pv (use pvdisplay) sein
  • Ein Laufwerk kann Teil einer dm-mapper RAID-Gruppe (verwenden Sie /proc/mdstat) sein
  • Auf ein Laufwerk kann direkt von einer Anwendung zugegriffen werden (z. B. unterstützt Oracle das direkte Schreiben auf ein Laufwerk oder eine Partition statt in ein Dateisystem) (use fuser)
  • Auf ein Laufwerk kann direkt von einer virtuellen Maschine zugegriffen werden (Fuser verwenden)
  • Ein Laufwerk kann von einem Loopback-Gerät referenziert werden (z. B.:mount /dev/sda -o offset=1M /foo ) (verwenden Sie loosetup -a)

Dies sind nur die Beispiele, die mir eineinhalb Minuten zum Nachdenken eingefallen sind. Ich bin sicher, es gibt noch ein Dutzend andere.

Dieses letzte Beispiel ist meiner Meinung nach das interessanteste und nur wenige Leute wissen davon. Es erlaubt Ihnen, ein Dateisystem zu mounten, ohne Partitionen zu verwenden. Geben Sie einfach den Start-Offset 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? Typischerweise handelt es sich um Situationen, in denen die Dinge zuvor schrecklich schief gelaufen sind.

Denken Sie auch daran, dass mit der Namespace-Funktion, die jetzt in der Hauptlinie ist (siehe Unshare), verschiedene Prozesse unterschiedliche Ansichten darüber haben können, was gemountet ist und was nicht. Hier fangen die Dinge an, ein bisschen rot zu werden.


Linux
  1. Wie finde ich das Kernel-Modul für ein bestimmtes Gerät?

  2. Linux – Wie testet man, ob ein Blockgerät von /sys oder /proc aus schreibgeschützt ist?

  3. Wie finde ich heraus, welcher serielle Port verwendet wird?

  4. Wie kann ich herausfinden, wo sich eine Datei physisch auf der Festplatte befindet (Blocknummern)?

  5. Wie finde ich heraus, ob meine WLAN-Karte 5 GHz unterstützt?

Linux blkid-Befehl zum Suchen von Blockgerätedetails

So finden Sie heraus, welche Version des Linux-Kernels auf Ihrem PC läuft

So ermitteln Sie die Bandbreitennutzung von USB-Geräten unter Linux

So finden Sie den gemounteten Dateisystemtyp in Linux

So finden Sie Festplattendetails in Linux

So finden Sie heraus, zu welchen Gruppen ein Benutzer in Linux gehört