Ind*_*oad 7 linux pci sata scsi
我有一个连接到 PCI 的 SATA 控制器,该控制器连接到具有 Linux 2.6.39 内核的机器上的(可变)数量的磁盘。我试图找到磁盘的物理位置,知道控制器的 PCI 地址。
在这种情况下,控制器在地址 0000:01:00.0 处,有两个磁盘,SCSI 地址为 6:0.0.0.0 和 8:0.0.0(虽然最后两个不一定是固定的,但这只是它们是现在)。
lshw -c storage 显示控制器和 SCSI 设备(系统磁盘和控制器已修剪):
*-storage
description: SATA controller
product: Marvell Technology Group Ltd.
vendor: Marvell Technology Group Ltd.
physical id: 0
bus info: pci@0000:01:00.0
version: 10
width: 32 bits
clock: 33MHz
capabilities: storage pm msi pciexpress ahci_1.0 bus_master cap_list rom
configuration: driver=ahci latency=0
resources: irq:51 ioport:e050(size=8) ioport:e040(size=4) ioport:e030(size=8) ioport:e020(size=4) ioport:e000(size=32) memory:f7b10000-f7b107ff memory:f7b00000-f7b0ffff
*-scsi:1
physical id: 2
logical name: scsi6
capabilities: emulated
*-scsi:2
physical id: 3
logical name: scsi8
capabilities: emulated
Run Code Online (Sandbox Code Playgroud)
lshw -c disk 显示磁盘:
*-disk
description: ATA Disk
product: TOSHIBA THNSNF25
vendor: Toshiba
physical id: 0.0.0
bus info: scsi@6:0.0.0
logical name: /dev/sdb
version: FSXA
serial: 824S105DT15Y
size: 238GiB (256GB)
capabilities: gpt-1.00 partitioned partitioned:gpt
configuration: ansiversion=5 guid=79a679b1-3c04-4306-a498-9a959e2df371 sectorsize=4096
*-disk
description: ATA Disk
product: TOSHIBA THNSNF25
vendor: Toshiba
physical id: 0.0.0
bus info: scsi@8:0.0.0
logical name: /dev/sdc
version: FSXA
serial: 824S1055T15Y
size: 238GiB (256GB)
capabilities: gpt-1.00 partitioned partitioned:gpt
configuration: ansiversion=5 guid=79a679b1-3c04-4306-a498-9a959e2df371 sectorsize=4096
Run Code Online (Sandbox Code Playgroud)
但是,似乎没有办法从 PCI 地址转到 SCSI 地址。我还查看了 PCI 和 SCSI 设备的 sysfs 条目,但没有找到建立连接的条目。当磁盘插入控制器上的不同物理端口时,SCSI 地址不一定会更改,因此无法使用偏移量来正确确定磁盘的位置。
按 ID 列出磁盘也不起作用 -ls -lah /dev/disks/by-path表明条目pci-0000:01:00.0-scsi-0:0:0:0指向/dev/sdc(或一般来说,最后一个连接的磁盘),并且没有其他路径从其中开始pci-0000:01:00.0,而不仅仅是指向该驱动器分区的链接。
有没有其他方法可以将控制器地址映射到可用于定位磁盘的内容中?
我认为您可以通过交叉引用来自lshw -c disk和此命令的输出来获得您想要的,udevadm info -q all -n <device>.
我的/dev/sda设备显示以下输出lshw:
$ sudo lshw -c disk
*-disk
description: ATA Disk
product: ST9500420AS
vendor: Seagate
physical id: 0
bus info: scsi@0:0.0.0
logical name: /dev/sda
version: 0003
serial: 5XA1A2CZ
size: 465GiB (500GB)
capabilities: partitioned partitioned:dos
configuration: ansiversion=5 signature=ebc57757
Run Code Online (Sandbox Code Playgroud)
如果我使用相同的设备询问devadm我可以找出它DEVPATH是什么:
$ sudo udevadm info -q all -n /dev/sda | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda
Run Code Online (Sandbox Code Playgroud)
此字符串包含您要查找的有关此设备的所有信息。PCI 地址,"0000:00:1f.2"以及 SCSI 地址,"0:0:0:0"。如果用正斜杠 ("/") 将这些数据分开,则 SCSI 地址是位于第 6 位的数据。
| 归档时间: |
|
| 查看次数: |
11633 次 |
| 最近记录: |