接手一台服务器,第一件事应该是摸清它的硬件底细: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装好。
企业QQ咨询




