在 Linux 中,有没有办法找出哪个 PCI 卡插入了哪个 PCI 插槽?
/sys/bus/pci/devices/ 包含许多不是卡的设备(网桥、CPU 通道等),我无法在设备目录中找到有关插槽卡映射的任何信息。
您可以使用
dmidecode –t slot
查找所有可用的 pci 插槽,而不是可以运行
lspci -s <slot number>
命令列出连接到指定插槽的设备。您必须从第一个命令中获取总线地址,并在第二个命令中将此地址用作参数。
Nebojsa 的回答很好,但这里有更多信息和对 magmabyte 评论的回答。
dmidecode
给你插槽的数量,然而,这些插槽并不是使用 PCI 桥的唯一东西,这就是为什么你看到的设备比插槽多的原因。
其次,您可能会在每个插槽中看到多个“设备”,但它们可能只是同一张卡上的多个端口。举一个使用网络接口卡 (NIC) 的示例:
megaman@someserver $ lspci | grep 10Gb
07:00.0 Ethernet controller: Emulex Corporation OneConnect 10Gb NIC (rev 02)
07:00.1 Ethernet controller: Emulex Corporation OneConnect 10Gb NIC (rev 02)
dmidecode
表示此服务器具有三个插槽(确实如此)。插槽 1 有上面的 10Gb 网卡(可以看到它有 2 个端口),插槽 2 有一个光纤通道卡(恰好也有 2 个端口),最后插槽 3 是空的。
服务器中有三个物理插槽,一个是空的,两个是多端口卡(一个 HBA 和一个 NIC)。
要在评论中回答您的问题,您拥有的 3 个插槽是由 指示的dmidecode
,它们可能装有多端口接口卡。