服务器硬件检测平时很少主动开展,但是机器无故重启、性能大幅下滑、磁盘阵列告警,或是新采购设备上架验收的时候,硬件检测就必不可少。硬件故障不像软件问题会生成清晰报错日志,内存偶尔出现单比特错误、硬盘产生少量重分配扇区、电源模块输出电压轻微偏移,这类早期异常不会直接造成宕机,但是会持续降低系统稳定性。硬件检测的作用,就是在小故障演变成重大事故前,提前识别隐患。
检测从哪里开始:带外管理和整机巡检
拆机之前,有一项操作要放在所有检测步骤的最前面。服务器宕机或者状态异常,不要直接重启或者查看系统日志,优先通过带外管理接口查看设备实时状态。戴尔iDRAC、惠普iLO、华为iBMC、联想XCC这类管理控制器独立于操作系统运行,服务器通电即可工作。iDRAC界面能够查看电源模块运行状态、风扇转速区间、硬件告警灯状态、最近硬件事件记录。这类信息往往不会写入系统日志,硬件层面异常可能发生在操作系统加载之前,严重时操作系统来不及记录日志。

戴尔PowerEdge系列内置硬件诊断工具,可以在操作系统内运行,或者通过Lifecycle Controller引导启动,完成CPU、内存、硬盘、电源等组件基础检测。厂商自带诊断工具覆盖深度有限,适合第一轮快速筛查。
大批量新服务器上架验收时,逐台登录带外管理操作效率偏低。HwScope开源工具专门适配这类场景,按组件粒度采集主板、CPU、内存、GPU、NVSwitch、PCIe、网络、存储、RAID、HBA、电源、风扇、BMC、固件合规、能耗、操作系统信息,一共17类模块,自动识别设备平台,采集完成输出JSON、Markdown、TXT、HTML四种格式报告,附带18项验收清单,包含固件版本合规、操作系统与BMC信息一致性、风扇冗余状态、PCIe链路宽度判定项。支持运维主机远程下发任务至目标服务器采集数据并回传结果,Linux、Windows平台都兼容,采集过程只读,不会写入硬件。大批量GPU服务器验收场景,相比人工逐台检测效率提升明显。
内存:别等到蓝屏才想起来测
内存故障表现形式没有固定规律。一台稳定运行半年的服务器突然蓝屏,重启之后恢复正常,隔一段时间再次复发;或是进程莫名崩溃,系统日志找不到软件层面原因。ECC内存可以纠正单比特错误,一旦错误累积形成多比特错误,ECC无法继续纠错。MemTest86+是服务器内存检测主流工具,从独立引导环境启动,直接读写校验物理内存,不依赖驱动与操作系统组件。测试建议至少跑完一轮完整Pass,时间充裕跑两到三轮,很多间歇性内存故障单轮测试无法触发。MemTest86+ 5.00版本修复4.20版本已知假阳性问题,如果使用老旧Ubuntu LiveCD自带4.20版本,检测报错结果不能直接采信。
服务器一般支持IPMI远程挂载ISO镜像引导MemTest86+,不需要前往机房插拔U盘。将ISO文件上传到带外管理界面,设置虚拟光驱优先启动,重启服务器即可运行测试。测试界面按下F2开启多线程SMP模式,不开启默认单线程运行,检测速度会慢很多。
硬盘:五个指标比几十行SMART数据更有用
硬盘属于服务器内故障率最高的部件。SMART数据能够提前预警故障,smartctl -A输出的属性条目繁多,大部分和坏道预警无关,日常监控只需要重点关注五项指标。
Reallocated_Sector_Ct为重分配扇区数,代表磁盘将损坏扇区数据迁移至备用扇区的次数。数值大于零,代表盘面已经出现物理坏道,数值持续上涨属于高危信号。Current_Pending_Sector是待定扇区数,等待重映射的不稳定扇区,非零且持续增长代表坏道正在持续生成。Offline_Uncorrectable为离线不可修复扇区数,大于零基本代表盘片物理损伤程度较重。Power_On_Hours记录累计通电时长,机械盘设计寿命约五万小时,通电超过三万小时就要提高巡检频次。Temperature_Celsius长期高于45摄氏度,会加速磁头、盘片老化,间接催生坏道。
判断硬盘是否需要更换,不能仅凭单次采集的数据。首次巡检记录每块硬盘这几项指标作为基线,后续对比才有参考意义。一块硬盘重分配扇区从零缓慢增长至五十,和数值长期保持零,风险等级完全不同。NVMe固态硬盘属性结构和机械硬盘存在差异,重点查看percentage_used和media_errors字段,前者代表寿命消耗比例,后者为介质错误计数。
服务器搭载RAID卡的情况下,操作系统识别到的是虚拟磁盘,smartctl默认无法读取物理成员盘SMART信息,需要增加-d megaraid,N参数穿透RAID卡,N代表阵列内磁盘编号。该参数写法随RAID卡型号变化,具体参考硬件手册。
CPU和内存压测:验收和排障都用得上
压力测试分为两种场景,新服务器上架验证稳定性,或是怀疑硬件故障开展定向排查。stress-ng使用广泛,可以指定CPU核心数量、运行时长、负载占比。stress-ng --cpu $(nproc) --timeout 300s命令让全部核心满载运行五分钟,观察高负载下是否出现核心报错、异常降频。sysbench的CPU测试模块属于计算密集型基准测试,用来对比不同硬件配置性能。UnixBench偏向综合性能评估,单核、多核分别输出跑分,判断服务器在同类设备中的性能水平。
内存压力测试选用stress-ng的vm模式,stress-ng --vm 2 --vm-bytes 1G --timeout 300s启动两个进程,各分配1GB内存持续读写。压力测试和内存故障检测不是一回事,压力测试用来暴露高负载下稳定性缺陷,MemTest86+完成逐位校验,两类工具互为补充,不能互相替代。
戴尔Support Live Image文档推荐stressapptest,同时对CPU、内存施加压力,模拟贴近真实业务的混合负载场景。仅做上架快速验收,半小时stressapptest搭配一轮MemTest86+快速检测,基本覆盖大部分硬件隐患。
整机信息采集和自动化巡检
不拆机、不开机箱,执行dmidecode命令读取服务器硬件基础信息。该命令读取BIOS启动写入内存的SMBIOS数据,不依赖操作系统驱动,x86架构服务器,无论品牌、Linux发行版基本都支持。dmidecode -t system查看厂商、型号、序列号,dmidecode -t memory读取每个内存插槽容量、速率、厂商,dmidecode -t processor查看CPU型号、核心数量。联系厂商报修,客服第一时间索要序列号,使用这条命令就不用到机柜背面查找标签。
单台服务器依靠命令行完成检测,几十上百台设备人工操作效率很低。ipmitool借助IPMI协议远程读取传感器数据,ipmitool sensor list一次性获取全部传感器读数,包含温度、电压、风扇转速、电源状态。基于该命令编写巡检脚本,批量读取所有服务器传感器数据,标记超出阈值项目,相比人工登录主机速度更快。
Redfish API是比IPMI更新的管理接口,戴尔、惠普、联想、超微新款服务器均支持。借助redfish-python-sdk这类开发库,单行代码查询CPU、内存、硬盘、GPU、网卡、电源、风扇硬件信息。输出结构相比IPMI命令行更加规整,便于接入监控系统持续采集。已经部署Prometheus、Grafana监控体系的团队,可以通过Redfish采集硬件传感器指标,和系统层面指标放在同一看板,故障排查不用切换多个平台。
检测之外,基线比单次结果更重要
硬件检测很容易踩坑,只看单次检测结果,不建立基线。一块硬盘重分配扇区为零,一个月前同样是零,和数值从零上涨到三,含义完全不一样。内存压测无报错,但是没有记录测试阶段温度、频率,后续故障发生时无法判断是不是环境因素造成。巡检的价值不在于单次快照,而是观察指标随时间变化趋势。首次检测保存关键指标基线,温度、电压、风扇转速、SMART五项核心属性原始数值,后续每次巡检和基线对比,指标轻微偏移阶段就能发现异常苗头。