Linux服务器如何查看硬件信息?CPU、主板、内存与磁盘检测命令

接手一台服务器,第一件事应该是摸清它的硬件底细:CPU 是什么型号、几核几线程,内存插了几条、每条多大、还能不能加,磁盘是什么接口、跑了多久、健康状态如何。这些信息在扩容、排障、采购备件、判断保修时都要用到。很多人只知道 cat /proc/cpuinfo 和 df -h,其实有一套更专业的工具能给出更完整、更准确的信息。

这篇文章按"CPU → 主板 → 内存 → 磁盘 → PCI 设备 → 整机"的顺序,把常用硬件检测命令过一遍:lscpu、dmidecode、lshw、lsblk、lspci、free、smartctl、ipmitool。会讲清每个命令能看什么、需要什么权限,以及怎么用它们回答真实问题——比如"内存槽还剩几个空的""这块盘是不是快坏了""服务器温度和风扇转数正常吗"。看完你应该能独立给一台陌生服务器做一次完整的硬件体检。

CPU:lscpu 与 /proc/cpuinfo

lscpu

lscpu 是最快的 CPU 概览,输出简洁,关注这几个字段:

Architecture:            x86_64
CPU(s):                  32
Thread(s) per core:      2
Core(s) per socket:      8
Socket(s):               2
Model name:              Intel(R) Xeon(R) Gold 6230 CPU @ 2.10GHz
CPU MHz:                 2100.000
Virtualization:          VT-x
Hypervisor vendor:       VMware
L3 cache:                27.5 MiB
NUMA node(s):            2

解读要点:

  • CPU(s) 是逻辑处理器总数;Socket(s) × Core(s) per socket × Thread(s) per core = CPU(s)。上面是 2 × 8 × 2 = 32,即双路、每路 8 核、开了超线程。
  • Thread(s) per core 为 2 说明启用了超线程(HT),性能提升通常只有物理核心的百分之二十到三十。
  • Hypervisor vendor 有值(如 VMware、KVM、Microsoft)说明这是虚拟机,物理机该字段为空。
  • NUMA node(s) 对数据库、大内存应用很重要,跨 NUMA 节点访问内存会慢,要配合绑核和内存策略优化。

想看每个逻辑 CPU 的细节:

cat /proc/cpuinfo
# 只看型号和核心数
grep -m1 'model name' /proc/cpuinfo
grep -c '^processor' /proc/cpuinfo

/proc/cpuinfo 是内核导出的信息,lscpu 本质也是解析它加上其他来源。想按核心看当前频率:

lscpu | grep -E 'CPU MHz|CPU max MHz|CPU min MHz'
# 或
grep MHz /proc/cpuinfo

CPU MHz 在云环境或开启了节能时可能显示标称值或动态变化,不能完全当真。

主板与整机:dmidecode 与 lshw

dmidecode 是最强大的硬件信息工具,它直接读取 BIOS/UEFI 写入的 DMI(桌面管理接口)表,能看到主板型号、BIOS 版本、内存槽、序列号等连 lscpu 都看不到的信息。

重要前提:dmidecode 必须以 root 运行,因为它要读 /dev/mem。

# 概览:系统型号、主板、BIOS
sudo dmidecode -t system
sudo dmidecode -t baseboard
sudo dmidecode -t bios

查内存是它的高光时刻。想知道总分了几条内存、每条多大、什么频率、还剩几个空槽:

# 内存设备信息
sudo dmidecode -t memory

# 只看关键几行,快速看插槽占用情况
sudo dmidecode -t memory | grep -E 'Size|Locator|Speed|Manufacturer|Part Number|Serial Number'

输出里每条内存会有 Size(容量,No Module Installed 表示空槽)、Locator(槽位编号)、Speed(频率)、Manufacturer(厂商)、Part Number(备件号)。这对判断"能不能加内存、加什么型号"至关重要。

查序列号做保修:

sudo dmidecode -t system | grep -E 'Manufacturer|Product Name|Serial Number|UUID'

厂商的序列号和 UUID 是报修、采购备件时的必填信息。

lshw 是另一个把所有硬件汇总成树状结构的工具,信息更全但输出很长:

# RHEL / CentOS / Rocky
sudo dnf install -y lshw

# Debian / Ubuntu
sudo apt update
sudo apt install -y lshw

sudo lshw            # 完整树状输出
sudo lshw -short     # 简洁列表
sudo lshw -class memory
sudo lshw -class disk -class storage
sudo lshw -json > hardware.json   # 导出为 JSON 便于处理
工具 主要用途 需要 root 特点
lscpu CPU 概览 否 快、简洁
/proc/cpuinfo CPU 详情 否 内核导出,原始
dmidecode 主板/内存槽/序列号 是 读 DMI 表,信息权威
lshw 整机硬件树 建议是 信息全,可导出 JSON
inxi 友好汇总 部分 适合快速分享配置

内存:free 与 dmidecode 配合

系统层面的内存用 free:

free -h
free -m
cat /proc/meminfo | head -n 20

free -h 看到的是内核视角的可用内存,但它不告诉你插了几条内存、槽位情况——那是 dmidecode -t memory 的活。两者配合用:free 看软件视角的总量和使用,dmidecode 看硬件视角的物理配置。

如果发现 free 的总内存比预期少(比如插了 32G 只认到 16G),常见原因有:内存条没插紧、故障、主板不兼容、BIOS 里做了限制,或者被集成显卡/内核预留占用。这时用 dmidecode -t memory 确认槽位识别情况,再检查 BIOS。

磁盘:lsblk 与文件系统

lsblk                    # 树状显示块设备
lsblk -f                 # 附带文件系统类型、UUID、挂载点
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,ROTA,MODEL

lsblk -f 是查看磁盘和分区的第一选择:

NAME            FSTYPE      LABEL UUID                                   MOUNTPOINT
sda
├─sda1          xfs         e3f0...                                 /boot
└─sda2          LVM2_member abc1...
  ├─vg0-root    xfs         d4a2...                                 /
  └─vg0-swap    swap        9b1c...                                 [SWAP]
  • ROTA 为 1 是机械盘(旋转),为 0 是 SSD。
  • lsblk -f 里的 UUID 是写 fstab 时要用的,比设备名稳定。
  • LVM 结构在 lsblk 里一目了然(LVM2_member 加下面的卷)。
# 磁盘容量与使用率
df -hT
df -hi       # inode 使用率

# 分区表详情
sudo fdisk -l            # MBR/GPT 都能看
sudo parted -l

# 磁盘模型和序列号
sudo hdparm -I /dev/sda | grep -E 'Model|Serial|Firmware'

磁盘健康:smartctl

smartctl 读取磁盘的 SMART 自检数据,是判断磁盘是否将坏的关键工具:

# RHEL / CentOS / Rocky
sudo dnf install -y smartmontools

# Debian / Ubuntu
sudo apt update
sudo apt install -y smartmontools

# 查看整体健康
sudo smartctl -H /dev/sda

# 查看详细信息(型号、序列号、温度、通电时间、各项 SMART 属性)
sudo smartctl -a /dev/sda

# 查看 NVMe 盘
sudo smartctl -a /dev/nvme0
sudo nvme smart-log /dev/nvme0    # 需 nvme-cli

smartctl -a 里重点看:

指标 含义 关注点
SMART overall-health 整体健康评估 PASSED 正常,FAILED 需立即更换
Reallocated_Sector_Ct 重映射扇区数 大于 0 且增长说明盘体退化
Current_Pending_Sector 待处理扇区 大于 0 是危险信号
Offline_Uncorrectable 离线不可纠正错误 大于 0 需警惕
Power_On_Hours 通电小时数 估算服役时长
Temperature_Celsius 温度 持续偏高影响寿命
Media_Wearout_Indicator(SSD) 磨损度 数值下降说明寿命消耗

别忘了做一次自检并配好监控:smartctl -t short /dev/sda 启动短自检,smartctl -l selftest /dev/sda 看结果。生产环境建议启用 smartd 服务,让它自动定期自检并在异常时告警:

sudo systemctl enable --now smartd
systemctl status smartd

PCI 设备与总线:lspci

lspci 列出所有 PCI 设备,网卡、RAID 卡、GPU、HBA 卡都在这里:

lspci
lspci -v          # 详细,含驱动和内存地址
lspci -k          # 显示设备使用的内核驱动
lspci -nn         # 显示厂商和设备 ID(查驱动时有用)
lspci | grep -i -E 'ethernet|raid|nvme|vga'

看网卡型号和驱动:

lspci -nnk | grep -A3 -i ethernet
# 或
ip -br link
ethtool -i eth0     # 看驱动、固件版本
ethtool eth0        # 看速率、双工、链路状态

判断网卡是不是万兆、驱动有没有正确加载,这些都靠 lspci -k 和 ethtool。

服务器带外管理:ipmitool

物理服务器都有一个独立的管理控制器(BMC,各家叫 IPMI/iDRAC/iLO),它能独立于操作系统监控硬件:温度、电压、风扇转速、电源状态。ipmitool 是访问它的标准工具:

# RHEL / CentOS / Rocky
sudo dnf install -y ipmitool

# Debian / Ubuntu
sudo apt update
sudo apt install -y ipmitool

# 需要先加载模块
sudo modprobe ipmi_devintf
sudo modprobe ipmi_si

常用查询:

# 温度、电压、风扇、电源等传感器读数
sudo ipmitool sensor list
sudo ipmitool sdr

# 整机电源状态
sudo ipmitool chassis status

# 查看系统事件日志(硬件故障记录在这里)
sudo ipmitool sel list
sudo ipmitool sel elist

# 查看 FRU(现场可更换单元)信息:序列号、型号
sudo ipmitool fru print

这是硬件排障最有价值的信息源。当机器莫名其妙重启、温度告警、内存报 ECC 错误时,操作系统的日志未必有记录,但 BMC 的事件日志(SEL)会记下来。比如内存条故障、电源模块故障、风扇停转,都能在 ipmitool sel list 里找到。

如果本机没有 ipmitool 或系统已经挂了,可以用带外方式远程查(需要 BMC 的 IP 和账号):

ipmitool -I lanplus -H  -U <用户名> -P <密码> sensor list

一套硬件体检流程

给陌生服务器做体检,按下面的顺序走:

# 1. 整机身份
sudo dmidecode -t system | grep -E 'Manufacturer|Product|Serial|UUID'

# 2. CPU
lscpu | grep -E 'Model name|CPU\(s\)|Thread|Core|Socket|NUMA'

# 3. 内存硬件与使用
sudo dmidecode -t memory | grep -E 'Size|Locator|Speed|Part Number'
free -h

# 4. 磁盘结构与文件系统
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,MODEL
df -hT

# 5. 磁盘健康
sudo smartctl -H /dev/sda
sudo smartctl -a /dev/sda | grep -E 'Reallocated|Pending|Temperature|Power_On'

# 6. 网卡与 PCI
lspci -nnk | grep -A3 -i ethernet

# 7. 服务器硬件传感器与事件日志
sudo ipmitool sensor list | grep -iE 'temp|fan|volt'
sudo ipmitool sel list | tail -n 20

这套流程下来,一台机器的硬件情况基本就摸清了,也留下了可用于保修或备件采购的序列号。

温度、电源与 ECC 错误

除了容量和型号,硬件"健康状态"也是体检的重点,尤其对长期运行的物理机。

板载温度与电压,除了 ipmitool,还可以用 lm-sensors 读取主板上传感器芯片的数据:

# RHEL / CentOS / Rocky
sudo dnf install -y lm_sensors

# Debian / Ubuntu
sudo apt update
sudo apt install -y lm_sensors

# 探测并生成传感器配置
sudo sensors-detect --auto
sensors

sensors 输出的温度要结合具体传感器名看,Package id 0 是 CPU 封装温度,Core 0 到 Core N 是各核心温度。持续超过八十五度通常要检查散热和风道。物理服务器更权威的温度源是 ipmitool sensor list 里的 Inlet Temp(进风口)和 CPU Temp,前者反映机房环境是否过热。

电源与风扇:ipmitool sensor list | grep -iE 'fan|power' 能看到每个风扇的转速和电源模块状态。风扇停转或电源冗余丢失,都属于要立即处理的事故。

内存 ECC 错误:服务器内存大多支持 ECC,能自动纠正单比特错误、检出双比特错误。错误过多是内存条即将故障的信号,可以从两处看:

# 内核日志里的内存错误
sudo dmesg -T | grep -i -E 'edac|ecc|corrected|uncorrected'
sudo journalctl -k | grep -i edac

# 带外事件日志里的内存告警
sudo ipmitool sel list | grep -i -E 'memory|ecc|correctable'

发现 Uncorrected(不可纠正)错误,说明数据可能已出错,应尽快更换对应内存条;只有少量 Corrected(可纠正)错误可以观察,但持续增长也要换。

把体检结果留档

硬件信息不是查一次就完事。建议新机器上线时把一份完整信息导出存档,日后报修、扩容、对比异常时都有依据:

mkdir -p /root/hardware-report
{
  echo "===== 时间 ====="; date
  echo "===== 系统 ====="; sudo dmidecode -t system
  echo "===== CPU ====="; lscpu
  echo "===== 内存 ====="; sudo dmidecode -t memory
  echo "===== 磁盘 ====="; lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,MODEL
  echo "===== PCI ====="; lspci -nnk
  echo "===== 传感器 ====="; sudo ipmitool sensor list 2>/dev/null
} > /root/hardware-report/$(hostname)-$(date +%F).txt 2>&1

留档的意义在于:几个月后某块盘告警,你可以翻出上线时的 SMART 数据对比,判断它是慢慢退化还是突发故障;报修时也不必再去机房现场抄序列号。

常见问题

dmidecode 报 "No SMBIOS or DMI entry point found"?

要么没加 sudo(权限不足),要么是虚拟机且未提供 DMI 透传,要么是某些特殊环境(早期容器)。物理机上基本都能用,云主机上可能看不到完整信息,只能依赖云厂商控制台。

系统只识别到部分内存,是什么原因?

先用 sudo dmidecode -t memory 看是否所有插槽都被识别、每条内存的 Size 是否正常。常见原因:内存条没插紧、混插不同规格导致降频或无法识别、某条内存故障、BIOS 设置限制、被集成显卡或内核保留占用。对比物理插法和识别结果可定位。

SSD 用 smartctl 看不到磨损度?

不同厂商、不同接口(SATA/NVMe)的属性命名不一样。NVMe 盘用 sudo nvme smart-log /dev/nvme0 看 percentage_used(已用寿命百分比)和 available_spare。SATA SSD 的磨损相关属性常见于 Media_Wearout_Indicator 或 Wear_Leveling_Count。

ipmitool 报 "Could not open device at /dev/ipmi0"?

内核模块没加载或设备不存在。先 sudo modprobe ipmi_devintf ipmi_si,再确认 /dev/ipmi0 存在。有些云主机或虚拟机没有暴露 BMC,这种情况下用不了 ipmitool,要看云厂商的监控面板。

硬件信息命令要不要都装?

不必要。日常最常用的组合是 lscpu(内置)、dmidecode(多数发行版默认带)、lsblk(内置)、free(内置)、smartctl(需装 smartmontools)、lspci(需装 pciutils)。建议新机器上线就装好 smartmontools、ipmitool、pciutils,并启用 smartd 监控。

总结

  • 摸底硬件按"CPU → 主板 → 内存 → 磁盘 → PCI → 带外"的顺序,lscpu 看 CPU 拓扑,dmidecode 看主板和内存槽(需 root),lshw 看整机树。
  • 内存分两个视角:free -h 是内核使用视角,dmidecode -t memory 是物理插槽视角,判断"能不能加内存"必须看后者。
  • 磁盘用 lsblk -f 看结构与文件系统,用 smartctl -a 看健康与磨损,务必启用 smartd 做定期自检告警。
  • lspci -nnk 确认网卡和 RAID 卡型号及驱动,ethtool 看链路速率;物理机的硬件故障记录优先看 ipmitool sel list。
  • dmidecode 和 ipmitool 是物理机专属的权威信息来源,序列号、FRU、事件日志在报修和备件采购时必不可少,新机上线就把 smartmontools、ipmitool 装好。