在Linux中,有没有办法找出哪个PCI卡插入了哪个PCI插槽?/sys/bus/pci/devices/包含许多不是卡的设备(网桥、CPU通道等),我无法在设备目录中找到有关插槽卡Map的任何信息。
uqxowvwt1#
您可以使用
dmidecode –t slot
查找所有可用的pci插槽比你可以运行
lspci -s <slot number>
命令来列出连接到指定插槽设备。您必须从第一个命令中获取总线地址,并将此地址用作第二个命令中的参数。
xbp102n02#
Nebojsa的回答是好的,但这里有更多的信息和对magmabyte评论的回答。dmidecode为您提供了插槽数,但是,这些插槽并不是使用PCI桥的唯一设备,这就是您看到的设备比插槽多得多的原因。其次,您可能会在每个插槽中看到多个“设备”,但它们很可能只是同一个卡上的多个端口。以下是使用网络接口卡(NIC)的示例:
dmidecode
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 NIC(您可以看到它有2个端口),插槽2有一个光纤通道卡(它也恰好有2个端口),最后插槽3是空的。服务器中有三个物理插槽,一个是空的,两个插有多端口卡(一个HBA和一个NIC)。为了回答你在评论中的问题,你有3个插槽是由dmidecode指示的,它们很可能填充了多端口接口卡。
xwbd5t1u3#
在我的kickstart中,我使用以下内容来确定操作系统要使用的NIC。例如,我们的一些服务器使用HPE 562SFP+2端口10Gb NIC。
NICPROD=562 USENIC='' for NIC in /sys/class/net/e*; do NIC=$(basename ${NIC}) FOUNDNIC=$(lspci -s $(ethtool -i ${NIC} | awk '/bus-info/ { print $2 }' | cut -d: -f2-) -vv | grep -E 'Product Name:') if [[ "${FOUNDNIC}" == *${NICPROD}* && "${FOUNDNIC}" != *"FLR"* ]]; then USENIC=${NIC} break fi done
希望这个有用?
3条答案
按热度按时间uqxowvwt1#
您可以使用
查找所有可用的pci插槽比你可以运行
命令来列出连接到指定插槽设备。您必须从第一个命令中获取总线地址,并将此地址用作第二个命令中的参数。
xbp102n02#
Nebojsa的回答是好的,但这里有更多的信息和对magmabyte评论的回答。
dmidecode
为您提供了插槽数,但是,这些插槽并不是使用PCI桥的唯一设备,这就是您看到的设备比插槽多得多的原因。其次,您可能会在每个插槽中看到多个“设备”,但它们很可能只是同一个卡上的多个端口。以下是使用网络接口卡(NIC)的示例:
dmidecode
表示此服务器有三个插槽(它确实有),插槽1有上面的10Gb NIC(您可以看到它有2个端口),插槽2有一个光纤通道卡(它也恰好有2个端口),最后插槽3是空的。服务器中有三个物理插槽,一个是空的,两个插有多端口卡(一个HBA和一个NIC)。
为了回答你在评论中的问题,你有3个插槽是由
dmidecode
指示的,它们很可能填充了多端口接口卡。xwbd5t1u3#
在我的kickstart中,我使用以下内容来确定操作系统要使用的NIC。例如,我们的一些服务器使用HPE 562SFP+2端口10Gb NIC。
希望这个有用?