Loop-device的源路径

Loop-device的源路径

出于好奇,我想知道有没有办法找到挂载分区的来源?

例如,输出为df -h

/dev/loop1 3M 3M 0 100% /媒体/循环

从这个输出中,我知道 3M 的循环设备安装在 处/media/loop,但我不知道确定该/dev/loop1设备的确切位置。

root@SHW:~# mount -o loop /home/SHW/Downloads/TinyCore-current.iso
/mnt/loop mount: block device /home/SHW/Downloads/TinyCore-current.iso is write-protected, mounting read-only
root@SHW:~# tail -n1 /proc/mounts
/dev/loop1 /mnt/loop iso9660 ro,relatime 0 0

我如何找出/dev/loop1f 的绝对路径,我不知道谁安装了这些分区? (在本例中路径是/home/SHW/Downloads/TinyCore-current.iso。)

答案1

使用losetup--list选项:

$ losetup --list /dev/loop0
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         0  0 /tmp/backing-file

如果你仅有的想要该文件,请使用-O选项来选择列:

$ losetup --list --noheadings -O BACK-FILE /dev/loop0
/tmp/backing-file

此选项是最新版本的一部分util-linux。早期版本仅支持-a选项,以难以处​​理的格式列出所有活动设备:

$ losetup -a
/dev/loop0: []: (/tmp/backing-file)

不管怎样,按照你想要的方式处理都不会太麻烦。

答案2

要获取支持文件路径,请使用:

cat /sys/block/loop1/loop/backing_file

答案3

我不知道确定 /dev/loop1 设备的确切位置。

设备的确切位置是什么意思/dev/loop1/dev/loop*其中 * 是一个数字,是环回(虚拟)设备,用于挂载不在其他块设备(例如硬盘)上的文件系统。您可以使用该命令枚举它们并查看它们的安装位置,mount并且可以使用该命令设置一个新的losetup

如果您想知道/dev/节点连接到哪个物理设备,那么有多种方法可以做到这一点。您可以使用udevadmudev 来查询。在我的系统上,以下命令提供有关sda磁盘的更多信息:

$ udevadm info --query=path --name=sda
/devices/pci0000:00/0000:00:1f.2/ata4/host3/target3:0:0/3:0:0:0/block/sda
$ udevadm info --query=symlink --name=sda
disk/by-id/ata-ST3500418AS_6VMD78AY disk/by-id/wwn-0x5000c500224ac74f

除此之外,您还可以用来lspci获取有关设备物理连接位置的更多信息。在我的系统上,/dev/sda连接到SATA控制器:

$ lspci
[snip]
00:1f.2 SATA controller: Intel Corporation 7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04)
[snip]

相关内容