Comment trouver quelles images appartiennent à quelle boucle / dev /?


9

Je travaille beaucoup avec des lecteurs imagés, ce qui signifie que je fais une copie DD du lecteur en question, puis je travaille sur l'image au lieu du lecteur lui-même.

Pour la plupart des travaux, j'utilise kpartx pour mapper les partitions du lecteur sur un périphérique sous / dev / mapper /. Ce que je me demande ici, c'est s'il existe un moyen de trouver laquelle de la cartographie appartient à quelle image.

Considère ceci:

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

Maintenant, disons que j'oublie quelle image est allée à quel mappage. Existe-t-il un moyen de laisser kpartx - ou le noyau, ou autre chose - me dire quelle image va où?

EDIT Aussi, si je rm accidentellement le fichier image alors que kpartx a ajouté les mappages, comment supprimez-vous les mappages? kpartx souhaite que l'image réelle soit présente.

Réponses:


13

losetup (la commande normalement utilisée pour les configurer) vous dira:

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

Notez qu'avec les versions plus anciennes, vous pouvez vouloir utiliser use -aau lieu de --list, et cela sort dans un format différent et maintenant obsolète.

Les informations proviennent de /sys:

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

Une autre option, peut-être plus portable, consiste à l'obtenir à partir des 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
⋮

losetupsera également heureux de les supprimer pour vous, en utilisant l' -doption. Cela nécessite simplement le périphérique de boucle comme paramètre; il ne se soucie pas du fichier / périphérique de sauvegarde.


losetup -d / dev / loop0: "boucle: impossible de supprimer le périphérique / dev / loop0: périphérique ou ressource occupé". Pourtant, il n'est monté ni utilisé d'aucune façon. Pourquoi est-ce?
bos

@bos l'avez-vous mappé sous / dev / mapper? Cela compte probablement comme utilisé. Effacez les mappages de mappeur de périphériques. (si kpartx n'a pas de moyen de le faire, vous pouvez utiliser dmsetup)
derobert

0

J'ajouterais également ce qui suit. Vous pouvez rechercher où les périphériques sont mappés avec kpartx. Par exemple:

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

Cela est utile lorsque vous oubliez où les fichiers sont mappés. Bien sûr, loop0p1 et loop0p2 sont mappés sous le répertoire / dev / mapper.


Ce serait bien si kpartx listait explicitement le répertoire sous lequel les périphériques de boucle sont mappés.
Xofo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.