
裸金属服务器的硬件故障排查一直是个让人头疼的活儿。尤其是在机房现场面对一台点不亮、频繁重启或者报错的机器手头没有厂商专用的诊断工具也没有带外管理口可用的时候整个排查过程基本就靠肉眼和猜。我自己在工作中被这种场景反复折磨过所以干脆利用空闲时间写了一个跑在 UEFI 环境下的整机自检工具把 21 项常见的硬件健康检查集成到一个可视化的界面里一键跑完直接出报告。这篇文章就把这个工具的完整设计思路、核心实现逻辑和实际使用效果做个详细拆解希望对正在被裸金属硬件问题折磨的朋友有帮助。考虑到并不是所有人都熟悉 UEFI 环境下的程序开发我先解释一下为什么要把自检工具放在 UEFI 这个层面来做。常规的操作系统级诊断工具比如 Linux 下的 memtester、smartctl、lspci都依赖于操作系统能够正常启动。但裸金属服务器常见的故障场景恰恰就是系统起不来、内核崩溃、磁盘阵列丢失、内存报错导致启动过程中断。在这些场景下操作系统根本跑不起来常规工具也就无从谈起。而 UEFI 作为主板固件位于操作系统之前运行不依赖硬盘上的任何数据只要 CPU、内存、主板、电源这几样最基本的东西没全坏固件就能跑起来这为硬件诊断提供了最后一道防线。在这个层面写自检工具就好比给服务器做一次不进系统的“裸检”能拿到最底层、最真实的硬件状态。开头这 200 字应该已经帮大家建立了基本认知。接下来我从工具的整体设计、测试项解析、可视化实现、报告生成、实战排查经验这几个维度展开内容全部来自我的实际开发和一线使用过程比较长但都是干货。1. 工具整体设计与思路拆解1.1 为什么选择 UEFI 而非传统 BIOS 或操作系统测试在设计这个工具之前我对市面上现有的硬件故障排查方案做过一次梳理。传统的 BIOS 自检Power-On Self-Test是最基础的方案但它的问题是检测项太少、信息量有限而且多数服务器主板的 POST 过程只有蜂鸣码和简单的数字报错码普通运维人员根本看不懂。操作系统层级的检测工具虽然功能强大但存在我刚才说的启动依赖问题。UEFI 提供了一个标准的运行时环境它有点像一个小型的操作系统有内存管理、文件系统支持、网络协议栈甚至还有图形输出能力。这意味着我可以在这个环境中构建一个完整的图形化测试程序直接访问并测试硬件。UEFI 规范中定义了许多我们可以直接调用的底层服务比如获取 SMBIOS 系统信息、访问 PCI 配置空间、执行内存压力测试、读取磁盘扇区、操作 GPT 分区等。这些能力都是操作系统之上的应用程序很难直接使用的。另外还有一个很重要的现实因素现在的服务器主板不管是 Intel、AMD 还是鲲鹏、飞腾这些国产平台几乎全都默认使用 UEFI 引导。UEFI 已经成了事实上的标准放弃了 UEFI 层面做诊断就等于放弃了覆盖面最广的排查入口。基于 UEFI 开发自检工具一台机器一个 U 盘就能跑不需要服务器安装操作系统也不依赖任何厂商管理芯片兼容性和可移植性都很好。1.2 21 项测试的选型逻辑与优先级划分我在设计测试项的时候参考了服务器厂商硬件诊断工具比如 Dell 的 ePSA、HP 的 UEFI Diagnostics的思路同时也结合了自己在服务器运维中积累的故障排查经验。常见的硬件故障率从高到低大致是内存故障、硬盘故障、CPU 故障、主板故障、电源故障、网卡故障。因此 21 项测试也按照这个优先级做了侧重CPU 相关CPU 信息读取、核心线程识别、CPUID 指令验证、缓存完整性校验内存相关内存容量识别、SPD 信息读取、64 位内存读写压力测试、内存地址线检测存储相关SATA/NVMe 设备枚举、SMART 信息读取、磁盘扇区读写校验、GPT 分区表解析外设接口PCIe 设备扫描、USB 设备枚举、网络控制器识别板载资源SMBIOS 信息读取、CMOS/实时钟验证、ACPI 表完整性检查、串口控制器检测固件环境UEFI 变量读写测试、Boot Option 完整性检查、固件版本确认。每一项测试的筛选标准都遵循三个原则一是能够覆盖特定硬件的关键健康指标二是在 UEFI 环境下有成熟的协议接口可以调用不需要复杂的底层逆向三是测试耗时可控整个跑完一轮不超过 20 分钟。1.3 技术栈选择 EDK2 还是 GNU-EFIUEFI 应用程序的开发路径主要分成两条一条是基于 Intel 的 EDK2 框架一条是使用 GNU-EFI 配合交叉编译器。我最终选择了 EDK2原因是它更接近 UEFI 规范的原生实现可以直接使用完整的 Protocol 接口对于需要频繁访问硬件协议的测试工具来说开发效率更高。EDK2 的优点在于它自带的 Shell 环境UEFI Shell就是一个现成的交互框架我可以通过 Shell 加载自定义的测试程序也可以把它设置为启动项直接运行。而且 EDK2 提供了完整的图形输出协议Graphics Output Protocol可以很方便地在屏幕绘制界面。配套的HiiDatabase和FormBrowser2协议也能够实现复杂的交互界面。当然 EDK2 也有不小的学习曲线编译环境配置繁琐代码风格偏嵌入式底层。如果只是想做一个简单的命令行走测工具GNU-EFI 更轻便。但我的需求包含可视化和交互而且后续打算逐步扩展测试项所以从一开始就选定了 EDK2避免做到一半再换框架的返工成本。2. 核心测试项的实现与原理详解2.1 CPU 与内存测试项为什么这些测试能发现故障CPU 的测试项中最有实际价值的是缓存一致性校验和 CPUID 指令验证。缓存一致性测试通过对 L1、L2、L3 缓存进行特定图案的写入读取比对可以快速暴露处理器内部缓存单元的物理损伤。这类故障虽然不常见但是一旦出现机器会表现为随机死机、应用程序莫名崩溃排查起来非常困难。具体实现方法是往缓存中写入 0xAA、0x55、0xFF、0x00 等特征值然后读取比对循环多次最后统计错误次数。内存测试是整个工具的重头戏。内存故障占了服务器硬件故障的很大比例而且故障表现千奇百怪。我的内存压力测试采用的是“读写 64 位数据线全图案覆盖”的方法对每块内存区域分别写入递增数列、递减数列、全 0、全 1、AA/55 交替等 17 种测试图案每次写入后立即读出比对。同时加入了地址线测试Address Line Test通过向特定内存地址写入特征值来验证高位地址线是否存在短路或断开。这两个测试组合以后绝大多数内存条物理损坏、接触不良问题都能暴露出来。2.2 存储与磁盘测试项SMART 自检和扇区读写到底可靠吗存储设备的检测我采用了两层策略。第一层是通过 ATA 命令集读取硬盘的 SMART 信息重点关注Reallocated Sector Count、Current Pending Sector、Offline Uncorrectable这几个关键属性。如果这些属性值超过了阈值说明硬盘已经出现了物理坏道继续使用有随时离线风险。SMART 读取本身不会写入任何数据是安全的无损检测。第二层是扇区级的读写验证。这一层比较激进会在指定区域内写入测试数据并读取比对。我需要特别提醒的是扇区读写测试必须做好保护措施防止误伤用户数据。我的工具默认只对空余扇区或者数据全零的扇区进行测试并且在测试前再次检查目标区域的非零数据标记遇到有正常数据的扇区会自动跳过。购买二手服务器或者处理来历不明的硬盘时扇区级检测的价值非常大很多使用层面没问题但物理层有潜在缺陷的盘跑一遍长时间读写测试就能原形毕露。2.3 总线与板载外设检测如何发现 PCIe 和 USB 的隐性故障PCIe 设备枚举是整个工具中信息量最大的模块。通过 UEFI 的 PCI I/O Protocol我可以遍历总线上的所有设备读取每个设备的 Vendor ID、Device ID、Subsystem ID、Class Code、BAR 地址、中断号等信息。把这些信息跟厂商数据库做比对就能准确识别出每块 PCIe 插槽上插的是什么设备。实际使用中这个功能帮助很大因为不少人会遇到 PCIe 插槽氧化或者金手指接触不良导致的设备间歇性掉线通过多次枚举对比可以发现设备出现在总线上的稳定性。USB 设备的检测相对简单但同样有隐蔽故障。服务器前后面板的 USB 接口供电不良、静电击穿保护芯片后导致的设备无法识别是机房常见的故障。我的工具会枚举所有 USB 控制器和 Hub 上的设备并对每个接口的供电状态做一个读取检查。虽然 UEFI 环境下没有办法精确测量电压但通过设备句柄的重复枚举成功率和端口状态寄存器可以间接推断接口是否工作正常。2.4 固件环境的完整性检查容易被忽略的关键检测项固件完整性在整个 21 项测试中显得比较“另类”因为它不是检测硬件或者外设本身而是检测 UEFI 固件环境的健康状况。但我在实际使用中发现很多莫名其妙的故障根源就出在固件配置损坏上。比如 NVRAM 中的 UEFI 启动变量损坏会导致服务器无法引导系统而重装系统也无法解决ACPI 表数据异常会导致操作系统认不到全部内存或者无法实现电源管理。为了捕获这些潜在问题我设计了三个固件层面的检查项。UEFI 变量读写测试会创建一个随机数据文件写入 NVRAM再原样读出比对确认固件的存储芯片能否正常执行写操作。这个测试可以直接暴露 Flash 芯片寿命耗尽或写保护异常的问题。Boot Option 完整性检查遍历所有的启动项逐项验证对应的文件路径是否存在找不到文件的失效启动项会以醒目的方式标注出来。ACPI 表检查则重点解析RSDP、XSDT、FADT、MCFG、DSDT这几张核心表校验校验和与表头签名防止因固件表损坏导致系统休眠唤醒异常或大内存识别错误。2.5 各类测试的标准与开始之前需要准备的环境做这些硬件测试之前有几条必须遵守的底线。内存压力测试会在一定程度上增加内存控制器的负载和发热量测试过程中不要同时进行其他对稳定性要求高的操作扇区读写测试不要对着有数据的盘跑尤其是进口的旧盘、退下来的阵列盘谁也不知道上面有没有重要数据部分主板的 NVRAM 写测试会缩短 Flash 芯片寿命虽然现代固件有磨损均衡机制但不建议对同一台机器高强度反复运行。开发环境的准备方面EDK2 的编译需要一台 Linux 机器安装gcc、nasm、iasl、python3这些基础工具然后拉取 EDK2 稳定版源码我用的edk2-stable202311编译出OVMF.fd作为固件模拟环境。整个开发调试过程中建议先用 QEMU 虚拟机模拟运行测试程序确认逻辑没问题后再烧录到 U 盘上真机验证。真机环境的第一遍运行建议用裸机状态测试逐步排除干扰项。3. 可视化界面与报告生成的工程实现3.1 基于 UEFI 的轻量级图形界面方案选型UEFI 应用程序的图形界面说起来不算复杂但真正做起来有几个坑。首先是中文字体问题UEFI 环境默认没有中文字库如果不做特殊处理所有中文都会显示成方框。我的方案是直接从 IME 字库中提取常用汉字配合点阵字模在显存里绘制这样既能保证显示效果又不依赖固件里有没有装字体。界面布局上我参考了传统 BIOS 的菜单风格顶部是工具名称和版本号中间是测试项列表区和信息展示区底部是快捷键提示栏。测试运行的时候用颜色区分状态绿色表示通过红色表示失败黄色表示警告白色表示等待中。整个界面不追求美观实用、清晰、信息密度高才是关键毕竟在机房现场没时间欣赏动画特效。3.2 测试进度展示与中断恢复机制因为整套测试要跑十几分钟进度展示和任务中断是必须考虑的问题。我用一个全局状态机维护所有测试项的执行状态每个测试项包含等待、执行中、通过、失败、跳过、警告六个状态。进度条按照测试项权重分配长度内存压力测试的耗时最长所以分配了较大的权重比例。运行过程中用户随时可以按 Esc 键中止当前测试。为了处理这种情况每个测试项内部都实现了协作式中断检查在关键循环里检测到中断标志后会保存当前测试的现场信息退出时生成一份“未完成报告”标注哪些项目已经通过、哪些没有执行、哪些执行了一半。这样即使时间紧张也能带着一份完整进度信息去排查问题。3.3 一键导出的报告格式设计与内容组织报告输出采用的是纯文本和 HTML 两种格式。纯文本报告可以直接在 UEFI 环境下写盘在没有外设显示器的串口调试终端上也能直接查看。HTML 报告则需要系统启动之后查看但包含更丰富的格式和颜色标记适合存档和发送给远程同事分析。报告的内容组织按照“摘要、明细、建议”三层展开。摘要部分用一句话概括整机健康状况比如“检测到 2 项关键错误建议立即停用服务器”。明细部分按测试分类逐项列出每项包含检测项名称、运行结果、关键参数值、详细描述。建议部分是根据检测结果自动生成的处置建议比如针对内存错误建议“重新插拔内存条并清洁金手指检查 CPU 内存通道配置”针对 SMART 报警建议“立即备份数据准备更换硬盘”。3.4 UEFI 环境下的文件写入与报告保存实现要把报告保存到 U 盘或者硬盘上需要用到 UEFI 的Simple File System Protocol。具体实现时先通过LocateHandleBuffer找到支持文件系统协议的块设备然后通过OpenVolume获取根目录句柄接着就可以用标准的CreateFile、WriteFile、Close接口写入文件了。这里有一个很容易踩的坑UEFI 只识别 FAT32/16/12 文件系统如果你把 U 盘格式化成了 exFAT 或 NTFS固件层面根本看不到。我一开始用 NTFS 格式的移动硬盘做测试盘折腾了半天才发现是文件系统不兼容换了 FAT32 之后一切正常。报告文件名建议带上时间戳和机器标识比如HWDiag_Report_SN12345_20250115_143000.html这样多台机器一起排查的时候不会搞混文件。我是通过 SMBIOS 的 System Serial Number 读取出厂序列号再结合 RTC 时钟的时间戳拼接出来的文件名。4. 常见的裸金属故障排查场景与实战经验4.1 服务器反复重启无法进入系统时的排查流程这类故障在裸金属运维中最常见服务器上电几秒到几十秒后自动重启反复循环完全无法进入系统。我的排查流程是这样的先用自检 U 盘启动跑完全部 21 项测试。如果 UEFI 自检界面都无法出现直接缩小范围到电源、主板、CPU 三大件的硬件级故障。工具正常运行但测试报错的情况则根据报错项进一步缩小范围。去年秋天处理过一台反复重启的机器我插上自检 U 盘后界面顺利起来但内存压力测试在特定地址段报了三次读写不一致。我按工具提示把两条内存对调插槽位置再跑一次结果还是同一位置的错误。这时基本上可以断定是主板的内存插槽通道出了问题而不单纯是内存条损坏。后续通过更换另一组插槽验证确认了是主板 DIMM 引脚老化问题定位非常快。4.2 新到货散件组装机的整机验收检测买散件自己组装服务器兼容性验证和稳定性测试是必不可少的环节。新组装的机器一般不会立即出现明显故障但如果 CPU 散热器没装好、内存频率和时序设置过激进、电源功率余量不足这些问题在轻负载下不会暴露跑起业务之后积累一段时间就会爆发。我用这个工具做新机验收的做法是先跑一遍 CPU 缓存测试和内存压力测试确认核心计算部件没有出厂缺陷然后接上一块空盘做扇区读写校验顺带做一次耐久性写入测试最后用 SMART 工具看新盘的初始健康状态留底存档。整套流程跑下来限时在 20 分钟左右相比以前手动操作零零散散的命令效率提升非常明显。4.3 二手服务器交易中的验机实用技巧二手服务器交易的水比较深外观成色和内部健康状态往往不是对应的。买二手整机之前做一次全面的硬件体检可以避免很多后续纠纷。我买二手服务器的时候有一个自己的标准流程先检查 SMBIOS 中记录的整机序列号、生产日期、BIOS 版本确认有没有被改装过然后重点跑内存压力测试和磁盘扇区校验这两项是二手服务器最容易埋雷的地方最后把读出来的 SMART 健康历史记录跟卖家声称的使用时长核对数据对不上就要提高警惕。之前帮朋友验过一台所谓“机房下架只用了半年”的双路服务器SMART 数据显示通电时间是 3.2万小时折合下来差不多三年半而且有一个硬盘已经有 14 个重映射扇区。这种机器如果不上手测直接上业务线就是个定时炸弹。4.4 特定场景UEFI 引导异常故障的专项诊断还有一类特定故障值得单独拿出来讲就是 UEFI 引导异常。这包括开机直接进入 UEFI Shell 而不是引导操作系统、系统无法识别启动盘但硬盘本身正常、Windows 提示 BCD 错误等情况。这些问题的定位往往比较麻烦因为存储设备本身从硬件角度看并没有坏破坏的是固件层面的启动配置。我的工具里面 Boot Option 完整性检查在这个场景下就能派上大用场。通过列出现有启动项以及对应的文件路径是否存在可以快速判断是启动项丢失、EFI 引导文件被删除还是硬盘分区表损坏。有一次问题定位到根因是运维同事误操作把 EFI 系统分区格式化成了数据盘启动项指向的文件全都不存在固件自然找不到系统可以引导。工具直接显示出一排失效的启动项路径问题一眼就清楚了。4.5 热词迷思解析UEFI 工具、引导盘格式与固件缺失搜索数据里有很多人搜“UEFI 引导 U 盘用 FAT32 还是 NTFS”这其实是个有标准答案的问题UEFI 固件只认 FAT 系列文件系统FAT32 是绝对主流不要用 NTFS。如果你的引导 U 盘小于 32GB格式化成 FAT32 就对了。至于 exFAT虽然比 FAT32 支持更大的单文件但老一批主板的 UEFI 固件对 exFAT 支持很差兼容性不如 FAT32 稳。还有人搜“Supermicro 主板不支持 UEFI 固件如何处理”。这类情况往往不是主板硬件不支持 UEFI而是主板当前处于 Legacy 模式或者固件版本太老需要更新。可以在 BIOS 设置里找Boot Mode或CSM选项将“Legacy Only”改成“UEFI Only”或“UEFI with CSM”。真正的旧型号10 多年前的 X58/X79 平台如果只有 Legacy BIOS那就需要换个思路借助 Clover 或者 OpenCore 这类的兼容引导层否则 UEFI 定位的故障排查工具在这种老平台上确实派不上用场。5. 工具开发过程中的踩坑记录与性能调优5.1 UEFI 图形输出的坑GOP 模式与屏幕缓冲开发图形界面的时候我遇到过不少显示相关的问题。最典型的坑是 GOPGraphics Output Protocol支持的模式数量在不同主板上差异很大有的固件只提供 800x600 和 1024x768 两种模式有的则有完整的宽屏模式列表。如果程序一开始就假设 1920x1080 分辨率存在在很多服务器主板尤其是低端板上会直接黑屏。解决方案是启动时遍历所有 GOP 模式找出最高分辨率且色彩格式为 32 位像素的模式但同时又保留模式列表的兜底如果所有模式都不满足就回退到 800x600。显示这块还需要处理像素格式的问题常见的 GOP 模式有PixelBlueGreenRedReserved8BitPerColor和PixelRedGreenBlueReserved8BitPerColor两种像素排列写代码时如果搞反了整个屏幕会红蓝颠倒。5.2 内存测试的耗时长尾与并发优化内存压力测试在 512GB 大内存的机器上跑完整轮图案校验可能需要 10 分钟以上。开发初期我采用的是单区域循环测试顺序读写每一块 4KB 基本单元效率非常低。后来改成多线程并行测试利用 UEFI 的MP Services Protocol把不同内存区段分配到不同核心上执行测试耗时从 15 分钟压缩到 4 分钟左右效果显著。但需要特别注意并行内存测试要求程序同时管理多个内存映射区域必须确保这些区域互相隔离、没有交集否则会出现 core 0 写入的数据被 core 1 当做测试数据覆盖的严重问题。我的做法是把所有物理内存区域通过GetMemoryMap拿回来之后先做区间去重和排序再按 CPU 核心数量均分每个核心只操作自己专属的那一段地址。5.3 报告写入失败时的保底方案文件写入操作在 UEFI 环境下不是 100% 可靠的有些机器板载接口的供电策略比较特殊U 盘会间歇性掉线。如果报告写入失败测试结果就会全部丢失前面的工作等于白做。为了应对这种情况我增加了一套串口输出保底方案在检测到文件写入失败时自动把报告内容通过 UEFI 串口协议重定向输出到串口终端。机房现场如果配有串口管理服务器就能直接截获日志。另外报告的每一行都会在生成的同时计入一个内存中的环形缓冲区缓冲区的内容在每次测试项结束时自动尝试追加写入临时文件。这样即使整个报告生成过程在中途崩溃也能从临时文件中恢复大部分已经完成的测试结果。5.4 NVRAM 读写测试的安全策略和误报排查NVRAM 变量读写测试在少数机器上会报出错误但又找不到实际的功能异常。我排查发现这些报错大多是固件对特定变量命名空间的写保护策略导致的并非 Flash 芯片真正损坏。比如 Secure Boot 开启状态下固件会禁止非签名程序修改PK、KEK这些安全变量我的测试程序如果在这些变量上做写操作就会被拒绝。最终的安全策略调整为只测试固件为普通 UEFI 变量分配的可写区域避开安全变量命名空间并且在测试前先通过变量属性查询接口判断目标区域是否可写不可写就直接标记为“跳过”不报错误。这样既保证了测试的有效性又减少了误报。6. 自检工具的适用范围、使用限制和下一步规划6.1 工具的适用场景与局限性这个工具主要适合的场景是裸金属服务器的前期故障诊断、故障初步定界、二手设备验机、散件装机验收。它能做的是快速把故障范围从“整机未知”缩小到“某个部件疑似故障”但并不能替代厂商的专有诊断工具做精细的电路级定位。比如内存测试能告诉你哪一个地址区域出错但具体是内存颗粒还是插槽接触问题还是需要人工插拔测试来解决。工具目前对特殊硬件的覆盖也还有局限。比如它不支持 RAID 卡的内部阵列状态读取不支持 BMC 带外管理信息的采集也不支持 GPU 的详细压力测试。这些领域原厂工具或者专业测试软件仍然有不可替代的优势我的自检工具定位是“快筛”和“兜底”而不是“全能”。6.2 使用限制说明受限于 UEFI 环境的资源约束工具对超大内存例如单机 1TB 以上的完整压力测试仍然存在内存碎片化的问题极端情况下测试时间会显著拉长。此外部分国产服务器的固件对非签名 UEFI 应用程序的加载做了限制需要进入固件设置界面关闭 Secure Boot 之后才能运行工具或者使用固件内置的特定模式进行加载。还有一个不太显眼但很实用的限制提醒运行自检工具前建议拔掉所有非必要的 PCIe 设备GPU、专用加速卡、HBA 卡这类保留最小化硬件配置去跑诊断。这样排除了多设备之间的资源冲突因素之后测试结果会干净很多。6.3 下一阶段的扩展方向目前我在规划几个扩展功能。第一个是增加网络启动和 PXE 支持让工具可以通过网络从服务器端批量下发到多台机器上执行这样大批量新机器的上线前检查就不用逐台插 U 盘了。第二个是增加日志上传能力测试结果可以通过 HTTP 协议直接推送到内部的资产管理系统自动关联设备序列号和故障工单。第三个方向是结合 IPMI 的 Sensor 数据把 CPU 温度、风扇转速、电源电压这些带外监控信息跟我的检测结果做关联参考辅助判断散热和供电层面的问题。我还在考虑把目前的 21 项测试做成可插拔的模块化结构后续新增测试项不需要重新编译整个工程只需要把写好的 DXE 驱动放到指定目录就能被动态加载。这样工具的可维护性和扩展性会提升一个档次。7. 写在最后的几点心得整个自检工具从最初的原型到现在的稳定版本前前后后经历了将近一年的时间。回头来看最花费精力的倒不是 21 项测试本身要实现什么复杂算法而是怎么在各种不同品牌、不同固件版本的主板上都能稳定运行。做这种偏底层的工具兼容性工作永远比你想象的多。我没有把工具做得特别频繁更新而是等一个版本在至少 5 个平台包括 Intel、AMD、国产三系上完整跑完各 200 小时不断电压力测试之后才放出来给周边同事试用。如果你也有类似的裸金属硬件排查需求我的建议是不要一上来就追求功能大而全先把你日常工作中最常遇到的 3 到 5 个故障场景固化下来做成测试项跑通后面再慢慢扩充覆盖面。一个能稳定运行 5 个测试项的工具比一个装了 20 个测试项但三天两头崩溃的工具对你的实际帮助更大。最后再分享一个小经验工具跑完报告之后无论结果显示有没有故障都建议把报告文件单独存档和这台机器的资产标签放一起。硬件的问题很多时候是渐进恶化的有了历史报告做对比你会发现判断故障趋势、预防计划外停机都变得容易很多。如果你也在做相关的工作或者被裸金属服务器的硬件故障排查困扰过欢迎交流具体的测试项策略和踩坑案例。毕竟这种偏门工具的资料太少了大家互通有无总是好的。