Wie lösche ich ein Partitionsgerät aus einem Loop-Gerät?

Wie lösche ich ein Partitionsgerät aus einem Loop-Gerät?

Ich mounte das Disk-Image über ein Loop-Gerät (losetup -f image.img). Es enthält eine Partitionstabelle und ich zwinge den Kernel, sie zu lesen: partprobe /dev/loop1.

Ich mounte /dev/loop1p1, repariere Sachen, die ich reparieren will, und mounte das Dateisystem wieder. Ich entferne die Datei vom Loopback-Gerät (losetup -d /dev/loop1). Aber /dev/loop1p1 verschwindet nicht.

Ich habe sogar versucht, lodevice neu zu erstellen und Partitionstabellen über fdisk hinzuzufügen und zu entfernen. Aber alle meine Versuche schlugen fehl:

Die Partitionstabelle wurde geändert!

Aufruf von ioctl() zum erneuten Lesen der Partitionstabelle.

WARNUNG: Das erneute Lesen der Partitionstabelle schlug mit Fehler 22 fehl: Ungültiges Argument. Der Kernel verwendet noch immer die alte Tabelle. Die neue Tabelle wird beim nächsten Neustart oder nach dem Ausführen von partprobe(8) oder kpartx(8) verwendet. Laufwerke synchronisieren.

Die Partition wird in keiner Weise verwendet, aber ich kann sie nicht freigeben. Gibt es eine Möglichkeit, sie ohne Neustart zu entfernen?

Ich sehe in dmesg einige Datensätze:

[4649002.505727] loop1: rw=0, want=211812300, limit=62914560 [4649002.505753] Puffer-E/A-Fehler auf Gerät loop1p1, logischer Block 52952562 [4649002.505870] Versuch, über das Ende des Geräts hinaus zuzugreifen

Und sie nerven mein Nagios.

Antwort1

Ein Neustart sollte Ihren Kernel reparieren. Und beim nächsten Mal verwenden Sie statt losetupes partprobemanuell auszuführen kpartx:

kpartx -v -a image.img

und um es niederzureißen:

kpartx -d image.img

verwandte Informationen