Come trovare quali immagini appartengono a quale / dev / loop?


9

Lavoro molto con le unità di imaging, il che significa fare una copia dd dell'unità in questione e quindi lavorare sull'immagine anziché sull'unità stessa.

Per la maggior parte del lavoro, utilizzo kpartx per mappare le partizioni dell'unità su un dispositivo in / dev / mapper /. Quello che mi chiedo qui è se c'è un modo per trovare quale della mappatura appartiene a quale immagine.

Considera questo:

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

Ora, diciamo che ho dimenticato quale immagine è andata a quale mappatura. C'è un modo per lasciare che kpartx - o il kernel, o qualsiasi altra cosa - mi dica quale immagine va dove?

EDIT Inoltre, se accidentalmente rm il file di immagine mentre kpartx ha aggiunto i mapping, come si rimuovono i mapping? kpartx vuole che sia presente l'immagine reale.

Risposte:


13

losetup (il comando normalmente usato per configurarli) ti dirà:

$ /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

Nota che con le versioni precedenti potresti odiare usare al -aposto di --list, e questo produce in un formato diverso e ora deprecato.

Le informazioni provengono da /sys:

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

Un'altra opzione, forse più portatile, è quella di ottenerlo da udisks:

$ 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
⋮

losetupli rimuoverò anche felicemente per te, usando l' -dopzione. Ciò richiede solo il dispositivo loop come parametro; non importa del file / dispositivo di backup.


losetup -d / dev / loop0: "loop: impossibile eliminare il dispositivo / dev / loop0: dispositivo o risorsa occupata". Tuttavia non è montato o utilizzato in alcun modo. Perchè è questo?
Bos,

@bos lo hai mappato sotto / dev / mapper? Quello probabilmente conta come in uso. Cancella le mappature del dispositivo-mappatore. (se kpartx non ha modo di farlo, puoi usare dmsetup)
derobert

0

Vorrei anche aggiungere quanto segue. Puoi sondare dove sono mappati i dispositivi con kpartx. Per esempio:

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

Questo è utile quando si dimentica dove sono mappati i file. Naturalmente loop0p1 e loop0p2 sono mappati nella directory / dev / mapper.


Sarebbe bello se kpartx elencasse esplicitamente la directory in cui sono mappati i dispositivi loop.
Xofo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.