找出哪个循环设备位于 dev mapper 块设备后面

找出哪个循环设备位于 dev mapper 块设备后面

我正在使用带有环回设备的 cryptsetup。我正在寻找一种方法,给定一个设备映射,来识别该设备使用哪个环回设备。

即对 /dev/mapper/some_mapping 进行操作后得到 /dev/loop1

如何才能做到这一点?

答案1

我知道这是一个古老的话题,但希望这个答案对未来的脚本程序员有用。

所有设备均可显示

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

现在,设备名称/dev/loop1位于第一个字段/列中(如果我们用空格分隔行)。要提取设备名称,awk可以使用。只需记住用替换删除“:”

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

/dev/loop1

答案2

cryptsetup status some_mapping打印出一个device条目,所以我认为这对你的情况有用(不确定/dev/mapper不使用时更普遍的问题cryptsetup)。

答案3

当您以 root 身份使用或处于组磁盘中时(循环设备上需要 ioctl),losetup 会显示设备编号。

您在另一个答案中看到的数字(即 2065)可以通过除以 256 并取模来分解,即 2065 / 256 = 8,这是一个 scsi 设备,2065 % 256 = 17,即 /dev/sdb1。

相关内容