Назад | Перейти на главную страницу

Узнайте, какое устройство цикла находится за блочным устройством dev mapper

Я использую cryptsetup с устройствами обратной связи. Я ищу способ, учитывая сопоставление устройств, определить, какое устройство обратной связи используется этим устройством.

т.е. получить / dev / loop1 в результате операции с / dev / mapper / some_mapping

Как это может быть сделано?

это древняя тема, я знаю, но ответ может быть полезен для будущего поколения программистов сценариев

Я нашел хоть какой-то ответ на упомянутый вопрос в путешествии:

все устройства могут отображаться с

$ losetup -a

/dev/loop0: [2065]:25 (/mnt/live/memory/data/slax/01-core.sb)
/dev/loop1: [2065]:26 (/mnt/live/memory/data/slax/02-xorg.sb)
/dev/loop2: [2065]:27 (/mnt/live/memory/data/slax/03-kdeps.sb)
(...)

один с (допустим, интересуется `02-xorg.sb '

$ losetup -j /mnt/live/memory/data/slax/02-xorg.sb

/dev/loop1: [2065]:26 (/mnt/live/memory/data/slax/02-xorg.sb)

теперь, как можно видеть, устройство находится в первом поле / столбце (при разделении строки пробелами), поэтому для его извлечения можно использовать awk, только не забудьте удалить ':' с заменой

$ losetup -j /mnt/live/memory/data/slax/02-xorg.sb | awk '{sub(/:/,"",$1); print $1}'

/dev/loop1

~~ cieply

losetup показывает номер устройства, когда он используется как root или когда вы находитесь на групповом диске (на устройстве цикла требуется ioctl).

Числа, которые вы видите в одном из других ответов (например, 2065), можно разложить путем деления и модификации на 256, т.е. 2065/256 = 8, что является устройством scsi, и 2065% 256 = 17, то есть / dev / sdb1.

cryptsetup status some_mapping распечатывает device запись, поэтому я думаю, что это сработает для вашего случая (не уверен в более общем /dev/mapper вопрос, когда не использую cryptsetup).