在服务器和高性能计算环境中,硬件配置的准确识别是性能测试、稳定性验证以及问题定位的基础工作。
PCI / PCIe 作为现代服务器中最核心的硬件互连总线,其上挂载的设备种类繁多,结构也较为复杂。
lspci 作为 Linux 系统中用于查看 PCI 设备信息的标准工具,在实际运维和自动化测试中被广泛使用,但其输出内容和参数含义往往被低估。
本文将围绕 lspci 命令的使用方法和输出信息,系统介绍其工作原理与典型应用场景。
一、什么是 lspci
lspci 是 Linux 系统中用于查看 PCI / PCIe 总线设备信息 的核心命令,属于 pciutils 工具集的一部分。
简单来说,只要是通过 PCIe 总线连接到系统的硬件,都可以通过
lspci看到。

典型设备包括:
- RAID / HBA 控制器
- NVMe 存储控制器
- 网卡
- GPU / 加速卡
- USB / SATA / SAS 控制器
- BMC / 管理控制器
在服务器性能测试、可靠性测试、自动化运维脚本中,lspci 是硬件识别和环境校验的基础工具。
二、lspci 的基本工作原理
- PCI / PCIe 设备在系统启动时会被枚举
- 内核会维护一份 PCI 设备信息
lspci通过读取系统中的 PCI 配置信息(如/sys/bus/pci)进行展示- 显示内容来自 PCI 配置空间 + 内核设备数据库
lspci不会修改系统状态,只做查询,可安全用于生产环境。
三、最基本用法
1. 查看所有 PCI 设备
bash
lspci
示例输出:
bash
00:00.0 Host bridge: Generic Vendor Device
03:00.0 RAID bus controller: Generic RAID Controller
05:00.0 Non-Volatile memory controller: NVMe Controller
07:00.0 Ethernet controller: Network Adapter
2. 输出字段解释
以一行为例:
bash
03:00.0 RAID bus controller: Generic RAID Controller
| 字段 | 含义 |
|---|---|
03 |
PCI Bus 编号 |
00 |
Device 编号 |
0 |
Function 编号 |
RAID bus controller |
设备类型 |
Generic RAID Controller |
设备描述 |
👉
03:00.0通常被称为 PCI 地址,在脚本和调试中非常重要。
四、常用参数详解
1. -v / -vv / -vvv:详细程度
bash
lspci -v
lspci -vv
lspci -vvv
| 参数 | 说明 |
|---|---|
-v |
基本详细信息 |
-vv |
更详细(推荐) |
-vvv |
最完整(调试级) |
2. -s:查看指定 PCI 设备
bash
lspci -s 03:00.0
常用于:
- 单个 NVMe / RAID 设备分析
- PCIe 带宽与速率校验
3. -n / -nn:显示 PCI ID(非常重要)
bash
lspci -nn
示例:
bash
03:00.0 RAID bus controller [0104]: Vendor Device [1234:5678]
| 字段 | 含义 |
|---|---|
1234 |
Vendor ID(厂商 ID) |
5678 |
Device ID(设备 ID) |
📌 在自动化脚本中,通过 PCI ID 识别硬件比字符串匹配更可靠。
4. -k:查看驱动绑定情况
bash
lspci -k
示例:
bash
03:00.0 RAID bus controller: Generic RAID Controller
Kernel driver in use: raid_driver
Kernel modules: raid_driver
用途:
- 判断设备是否加载了正确驱动
- 排查"设备存在但不可用"的问题
5. -t:查看 PCI 拓扑结构
bash
lspci -t
示例(简化):
bash
-[0000:00]-+-00.0
+-01.0-[03]----00.0
常用于:
- NUMA / PCIe 拓扑分析
- 多卡服务器带宽问题排查
五、lspci 与 grep 的组合用法
1. 查找存储控制器
bash
lspci | grep -i raid
2. 查找 NVMe 控制器
bash
lspci | grep -i nvme
3. 按 PCI ID 精确匹配(推荐)
bash
lspci -nn | grep -i "1234:5678"
📌 比匹配字符串更稳定,不受语言和描述影响
六、PCIe 链路信息解析
1. 查看最大能力(LnkCap)
bash
lspci -s 03:00.0 -vvv | grep LnkCap
示例输出:
bash
LnkCap: Port #0, Speed 16GT/s, Width x16
含义:该设备理论支持的最大速率和通道数
2. 查看当前实际状态(LnkSta)
bash
lspci -s 03:00.0 -vvv | grep LnkSta
示例:
bash
LnkSta: Speed 8GT/s, Width x8
常用于判断:
- 是否降速
- 是否插槽 / BIOS 配置异常
七、lspci 在自动化测试中的典型用途
| 场景 | 用途 |
|---|---|
| 环境检查 | 确认硬件是否齐全 |
| 性能测试 | 校验 PCIe 带宽 |
| 稳定性测试 | 记录测试前硬件状态 |
| 自动化脚本 | 按 PCI ID 分支逻辑 |
| 测试报告 | 输出硬件配置 |
八、为什么 lspci 是服务器脚本"标配"
- 不依赖厂商工具
- 输出稳定、可解析
- 权限要求低
- 几乎所有 Linux 发行版默认支持
在服务器性能与可靠性测试体系中,
lspci是最基础、也是最可靠的硬件识别工具之一。
九、常用命令速查表
bash
lspci # 查看所有 PCI 设备
lspci -nn # 查看 PCI ID
lspci -k # 查看驱动
lspci -s <addr> -vv # 查看单设备详细信息
lspci -t # 查看 PCI 拓扑
lspci 表面上只是一个"列设备"的工具,但在服务器测试、性能分析和自动化运维中,它承担着**硬件事实来源(Single Source of Truth)**的角色。
理解 lspci,是理解服务器硬件与 Linux 交互的第一步。