Как узнать, какие изображения принадлежат к какой / dev / loop?

9

Я много работаю с образными дисками, то есть делаю dd-копию соответствующего диска, а затем работаю с образом вместо самого диска.

Для большей части работы я использую kpartx для сопоставления разделов диска с устройством в / dev / mapper /. Что мне здесь интересно, так это то, есть ли способ найти, какое из отображений относится к какому изображению.

Учти это:

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

Теперь, допустим, я забыл, какое изображение было добавлено в какое отображение. Есть ли способ, позволяющий kpartx - или ядру, или чему-то еще - сказать мне, какой образ куда идет?

РЕДАКТИРОВАТЬ Кроме того, если я случайно rm файл изображения, в то время как kpartx добавил сопоставления, как вы удалите сопоставления? kpartx хочет, чтобы фактическое изображение присутствовало.

BOS
источник

Ответы:

13

losetup (команда, обычно используемая для их настройки) скажет вам:

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

Обратите внимание, что с более старыми версиями вы можете использовать -aвместо вместо использования --list, и это выводит в другом и теперь устаревшем формате.

Информация поступает от /sys:

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

Другой, возможно, более переносимый вариант - получить его от 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
⋮

losetupтакже с удовольствием удалим их для вас, используя -dопцию. Это просто требует устройства цикла в качестве параметра; это не заботится о файле поддержки / устройстве.

derobert
источник
losttup -d / dev / loop0: «loop: невозможно удалить устройство / dev / loop0: устройство или ресурс занят». Тем не менее, он не установлен или не используется каким-либо образом. Почему это?
Бос
@bos, есть ли у вас карта в / dev / mapper? Это, вероятно, считается как в использовании. Очистите сопоставления устройства-сопоставления. (если у kpartx нет способа сделать это, вы можете использовать dmsetup)
derobert
0

Я бы также добавил следующее. Вы можете проверить, где устройства отображаются с помощью kpartx. Например:

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

Это полезно, когда вы забыли, где отображаются файлы. Конечно, loop0p1 и loop0p2 отображаются в каталоге / dev / mapper.

Xofo
источник
Было бы хорошо, если бы kpartx явно перечислил каталог, в который отображаются устройства цикла.
Xofo