Wie finde ich heraus, welche Bilder zu welcher / dev / loop gehören?

9

Ich arbeite viel mit abgebildeten Laufwerken, dh ich mache eine dd-Kopie des betreffenden Laufwerks und arbeite dann am Image anstelle des Laufwerks selbst.

Für die meisten Arbeiten verwende ich kpartx, um die Partitionen des Laufwerks einem Gerät unter / dev / mapper / zuzuordnen. Ich frage mich hier, ob es eine Möglichkeit gibt, herauszufinden, welche der Zuordnungen zu welchem ​​Bild gehören.

Bedenken Sie:

root@vyvyan:/tmp# kpartx -a -v Image1 
add map loop1p1 (254:4): 0 10240 linear /dev/loop1 2048
add map loop1p2 (254:5): 0 10240 linear /dev/loop1 12288
add map loop1p3 (254:6): 0 52848 linear /dev/loop1 22528
root@vyvyan:/tmp# kpartx -a -v Image2
add map loop2p1 (254:7): 0 33508 linear /dev/loop2 2048
add map loop2p2 (254:8): 0 39820 linear /dev/loop2 35556

Nehmen wir an, ich habe vergessen, welches Bild zu welchem ​​Mapping gegangen ist. Gibt es eine Möglichkeit, kpartx - oder den Kernel oder irgendetwas anderes - mir sagen zu lassen, welches Bild wohin geht?

EDIT Auch, wenn ich aus Versehen die Bild-Datei rm während kpartx die Zuordnungen hinzugefügt, wie entfernen Sie die Zuordnungen? kpartx möchte, dass das tatsächliche Bild vorhanden ist.

bos
quelle

Antworten:

13

losetup (der Befehl, der normalerweise zum Einrichten verwendet wird) sagt Ihnen:

$ /sbin/losetup --list
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         0  0 /var/tmp/jigdo/debian-7.6.0-amd64-CD-1.iso

Beachten Sie, dass Sie bei älteren Versionen möglicherweise die Verwendung -aanstelle von verwenden --listmüssen und dies in einem anderen und jetzt veralteten Format ausgegeben wird.

Die Informationen stammen von /sys:

$ cat /sys/class/block/loop0/loop/backing_file 
/var/tmp/jigdo/debian-7.6.0-amd64-CD-1.iso

Eine andere, möglicherweise tragbarere Option besteht darin, sie von udisks zu beziehen:

$ udisksctl info -b /dev/loop0
/org/freedesktop/UDisks2/block_devices/loop0:
⋮
  org.freedesktop.UDisks2.Loop:
    Autoclear:          false
    BackingFile:        /var/tmp/jigdo/debian-7.6.0-amd64-CD-1.iso
    SetupByUID:         1000
⋮

losetupwird sie auch gerne für Sie entfernen, indem Sie die -dOption verwenden. Das erfordert nur das Schleifengerät als Parameter; Die Sicherungsdatei / das Sicherungsgerät ist ihm egal.

derobert
quelle
losetup -d / dev / loop0: "Schleife: Gerät / dev / loop0 kann nicht gelöscht werden: Gerät oder Ressource belegt". Es ist jedoch nicht montiert oder in irgendeiner Weise verwendet. Warum ist das?
Bos
@bos hast du es unter / dev / mapper zugeordnet? Das zählt wahrscheinlich als in Gebrauch. Löschen Sie die Gerätezuordnungszuordnungen. (Wenn kpartx keine Möglichkeit dazu hat, können Sie dmsetup verwenden)
derobert
0

Ich würde auch folgendes hinzufügen. Sie können mit kpartx prüfen, wo die Geräte zugeordnet sind. Zum Beispiel:

%> sudo kpartx -lv /dev/loop0
loop0p1 : 0 122880 /dev/loop0 8192
loop0p2 : 0 8257536 /dev/loop0 131072

Dies ist hilfreich, wenn Sie vergessen, wo die Dateien zugeordnet sind. Natürlich werden loop0p1 und loop0p2 im Verzeichnis / dev / mapper zugeordnet.

Xofo
quelle
Es wäre schön, wenn kpartx das Verzeichnis, unter dem die Schleifengeräte zugeordnet sind, explizit auflistet.
Xofo