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.