Linux系统下查看硬件错误需要结合不同硬件组件对应的工具,从内核日志、专用检测工具等维度获取错误信息,快速定位故障源头。

通过dmesg查看内核记录的硬件错误
dmesg命令用于查看内核环形缓冲区的消息,系统启动过程中以及运行时硬件产生的错误会被内核记录到该缓冲区中,是最常用的硬件错误初步排查工具。
查看所有内核消息中的硬件相关错误,可以执行以下命令过滤关键词:
# 查看包含error、fail、hardware关键词的内核消息 dmesg | grep -iE "error|fail|hardware" # 实时查看新增的内核消息 dmesg -w
常见的输出内容比如内存错误会显示Memory failure相关记录,硬盘错误会显示ata相关的链路错误或者读写失败信息。
查看内存硬件错误
Linux系统提供了EDAC(Error Detection And Correction)子系统,专门用于检测和报告内存、CPU缓存的硬件错误,需要内核开启对应模块支持。
首先确认edac模块是否加载:
# 查看edac相关模块是否加载 lsmod | grep edac # 若未加载则手动加载核心模块 modprobe edac_core
加载完成后可以查看内存错误统计信息:
# 查看edac检测到的内存错误总数 cat /sys/devices/system/edac/mc/mc*/ce_count cat /sys/devices/system/edac/mc/mc*/ue_count
其中ce_count表示可纠正错误数量,ue_count表示不可纠正错误数量,如果不可纠正错误数量持续增长,说明内存硬件存在严重故障,需要及时更换。
查看硬盘硬件错误
硬盘的硬件错误可以通过S.M.A.R.T信息查看,smartctl是smartmontools工具包中的命令,用于读取硬盘的自检和健康状态信息。
首先安装smartmontools工具:
# Ubuntu/Debian系统安装 apt install smartmontools # CentOS/RHEL系统安装 yum install smartmontools
查看硬盘整体健康状态:
# 查看/dev/sda硬盘的SMART健康状态 smartctl -H /dev/sda
如果输出显示PASSED说明硬盘当前健康状态正常,若显示FAILED或者FAILING_NOW则说明硬盘已经存在硬件故障,需要备份数据并更换硬盘。
查看详细的错误日志:
# 查看硬盘的错误日志 smartctl -l error /dev/sda
查看CPU硬件错误
CPU的硬件错误同样可以通过mcelog工具查看,该工具用于记录和处理CPU产生的机器检查异常(MCE),需要提前安装运行。
安装并启动mcelog服务:
# Ubuntu/Debian安装 apt install mcelog # CentOS/RHEL安装 yum install mcelog # 启动服务并设置开机自启 systemctl start mcelog systemctl enable mcelog
查看CPU错误日志:
# 查看mcelog记录的CPU错误 cat /var/log/mcelog # 实时查看新增的CPU错误 mcelog --client
常见的CPU错误包括缓存错误、总线错误等,若错误频率较高,可能是CPU散热不良或者CPU本身存在硬件缺陷。
常见硬件错误排查流程
- 首先通过
dmesg命令快速过滤是否有明显的硬件错误提示,定位大致的故障硬件类型 - 针对内存错误,查看EDAC子系统的错误计数,确认错误是否持续增加
- 针对硬盘错误,使用
smartctl查看S.M.A.R.T状态,确认硬盘健康等级 - 针对CPU错误,查看
mcelog日志,判断错误是否和散热、负载相关 - 若以上工具无法定位,可以借助主板IPMI日志(如果有带外管理功能)查看更底层的硬件故障记录
需要注意的是,部分硬件错误可能是偶发性的,单次出现不一定代表硬件损坏,需要持续观察错误出现的频率,再决定是否更换硬件。