Ein fauler Aushängen schafft eine Schrödingers Katze Halterung
- Sie können nicht wissen, ob das Gerät tatsächlich nicht gemountet ist oder nicht
- Das "nicht gemountete" Dateisystem bleibt unter bestimmten Umständen zugänglich
- Auf das "nicht gemountete" Dateisystem kann unter bestimmten Umständen nicht zugegriffen werden
Es gibt ein falsches Sicherheitsgefühl : Es scheint, dass das Dateisystem nicht gemountet wurde, aber in Wirklichkeit wurde es nur vor dem Dateinamensraum / der Hierarchie verborgen.
- Prozesse können weiterhin über offene Dateideskriptoren schreiben
- Neue oder vorhandene Dateien können von Prozessen mit einem Arbeitsverzeichnis innerhalb des Mountpoints über relative Pfadnamen zum Schreiben geöffnet werden
Dies bedeutet, dass Sie, wenn Sie umount -l /media/hdd
keinen Zugriff mehr haben /media/hdd/dir/file
(absoluter Pfadname), aber einen Prozess mit Arbeitsverzeichnis /media/hdd
haben, immer noch neue Prozesse erstellen können, die lesen / schreiben können ./dir/file
(relativer Pfadname).
Wenn Sie versuchen, das Gerät abzuhängen, wird eine verwirrende Meldung angezeigt:
# umount --force --all-targets /dev/sdb2
umount: /dev/sdb2: not mounted
Dies macht es aussehen wie das Gerät hat unounted, aber es noch können Prozesse auf die Festplatte geschrieben werden.
Da es verschiedene nicht offensichtliche Situationen gibt, die dazu führen können, dass umount blockiert wird , wird das Dateisystem möglicherweise immer noch nicht ausgehängt, obwohl lsof +f -- /dev/device
nichts angezeigt wird .
Sie werden nie erfahren, ob das Dateisystem tatsächlich nicht bereitgestellt wird. Es gibt keine Möglichkeit, es herauszufinden.
Wechselmedien
Wenn Sie umount -l
einen Wechseldatenträger verwenden, befinden Sie sich in der Schwebe: Sie können nicht sicher sein, ob alle ausstehenden Daten auf den Datenträger geschrieben wurden.
Das Beste, was Sie nach a tun können, umount -l
ist sicherzustellen , dass alle Schreibvorgänge abgeschlossen sind und zukünftiges Schreiben verhindert wird. Sie können jedoch immer noch nicht garantieren, dass es nicht gemountet wurde.
Wenn das Gerät bei Wechselmedien nicht ordnungsgemäß ausgehängt ist, kann es beim nächsten Anschließen zu merkwürdigem Verhalten kommen:
Das Gerät erhält einen inkrementierten Gerätenamen, dh /dev/sdb
wird /dev/sdc
. Auf die Kernel-Protokollnachrichten wird möglicherweise weiterhin verwiesen, /dev/sdb
obwohl dieses Gerät nicht mehr als Datei unter vorhanden ist /dev
. (Die einzige Möglichkeit, dies zu beheben, ist ein Neustart.)
btrfs-Beschädigung kann die Folge sein. btrfs erwartet, dass jeweils nur ein Dateisystem mit einer bestimmten UUID vorhanden ist. Der Kernel sieht immer noch dieselbe UUID auf dem Phantomgerät und dem neuen Gerät. (Ich musste meine btrfs Backup-Festplatte neu erstellen).
systemd
Fallstricke
umount(2)
letzter Zeit mehrmals gelesen . Es heißt nur "Führen Sie ein verzögertes Aufheben der Bereitstellung durch: Machen Sie den Bereitstellungspunkt für neue Zugriffe nicht verfügbar, trennen Sie das Dateisystem und alle darunter bereitgestellten Dateisysteme sofort voneinander und von der Bereitstellungs-Tabelle und führen Sie das Aufheben der Bereitstellung tatsächlich aus, wenn der Bereitstellungspunkt nicht mehr ausgelastet ist . " Leider ist dies weniger detailliert als das, was Sie angegeben haben.umount(8)
sagt, dass ein Dateisystem ausgelastet ist, "zum Beispiel wenn offene Dateien darauf sind oder wenn ein Prozess sein Arbeitsverzeichnis dort hat oder wenn eine Auslagerungsdatei darauf verwendet wird." Das klingt nicht nach einer endgültigen Liste, ist aber wahrscheinlich so gut, wie ich finden kann.