出于好奇,我想知道有没有办法找到挂载分区的来源?
例如,输出为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/loop1
f 的绝对路径,我不知道谁安装了这些分区? (在本例中路径是/home/SHW/Downloads/TinyCore-current.iso
。)
答案1
$ 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/
节点连接到哪个物理设备,那么有多种方法可以做到这一点。您可以使用udevadm
udev 来查询。在我的系统上,以下命令提供有关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]