内存ECC告警解析:从纠错原理到uncorr. ECC排查实战
发布时间:2026/9/9 7:53:55 锦皓数字建站

前阵子一个做运维的朋友给我发来一张服务器带外管理截图上面赫然显示Uncorr. ECC 显示2语气很慌这台数据库节点是不是马上要宕机 同一天另一个做财务系统维护的朋友在群里求助SAP ECC 年结跑不动怎么排查。都叫 ECC一个是内存纠错码Error Correcting Code的硬件告警一个却是 SAP ERP Central Component 的软件问题中间还有个做芯片测试的同行在钻研 MBIST 里的 ECC 逻辑。三个 ECC 缩写完全一样背后的技术栈却隔了十万八千里。这篇就把名字同源的三件事一并捋清重点放在最让服务器管理员失眠的内存 ECC 告警——尤其是uncorr. ECC 显示2这种高频问题从定位到处理的全过程顺带把 SAP ECC 年结和 MBIST ECC 的边界也讲清楚。1. ECC 这个缩写到底藏着几副面孔1.1 三个常见的 ECC对应完全不同的技术栈第一个也是绝大多数技术人脑子里的默认答案Error Correcting Code纠错码。它是一类编码算法能在数据存储或传输过程中发现错误甚至把错误直接修正回来。内存条上的 ECC、固态硬盘闪存控制器里的 ECC、网络数据包里的前向纠错FEC底层思路都和它同源。这部分是本文主线。第二个是 SAP ECC全称 SAP ERP Central Component。很多跑过企业资源计划系统的老财务、老 ERP 顾问都跟它打过交道年结、月结、成本中心结转这些财务动作都在这个系统里完成。它和内存纠错毫无关系只是恰好共同拥有 ECC 这个缩写。第三个是 Elliptic Curve Cryptography椭圆曲线密码学属于现代密码学里的非对称加密分支。HTTPS 证书、数字签名、区块链地址背后都有它的身影。这个方向也很深但不是本文要展开的内容。除此之外芯片测试领域还有个非常具体的 ECC 场景——MBIST ECC即内建自测试中的存储器纠错逻辑验证。这个我会在后面专开一章讲因为它和内存 ECC 的纠错概念紧密相关但关注点完全不同一个在芯片出厂前找 bug一个在服务器运行中防数据损坏。1.2 为什么今天把焦点放在内存与存储 ECC 上原因很简单服务器内存 ECC 告警是运维日常里最高频、最让人焦虑的问题之一。数据中心的服务器十台里有九台装的是 ECC 内存条ECC 错误又是平时不响一响就要命的典型。普通消费级内存没有校验位数据在内存里待着某一位受宇宙射线、电磁干扰、供电波动影响发生翻转程序读到的就是错误数据。更麻烦的是这种错误是静默的——CPU 不知道数据错了程序也不知道计算结果被悄悄污染。对办公电脑来说顶多蓝屏重启、文档损坏损失可控对数据库、科学计算、交易系统来说一位翻转可能直接让几百万行聚合计算得出一套错误报表或者让一个跑了三天的仿真任务在最后一步导出错误结果。ECC 内存的价值就在于给这条静默错误链路装上报警和救护机制单 bit 翻转能当场纠正多 bit 翻转至少能明确告诉你这里出问题了把风险从暗雷变成明雷。而uncorr. ECC 显示2这种告警就是明雷被系统成功检测到之后留给运维人员的最后一道处理题。2. 内存 ECC 的纠错原理从奇偶校验到 SECDED2.1 没有 ECC 的时代一位翻转如何毁掉计算结果要理解 ECC得先从最原始的奇偶校验说起。早年内存和简单存储设备里常用 parity bit也就是每一位数据之外再额外存一个校验位用来表示这一组数据里1的个数是奇数还是偶数。读数据时重新算一遍如果和存储的校验位对不上就知道数据出错。问题在于奇偶校验只能发现错误不能定位更不能纠正错误。而且它对偶数个 bit 同时翻转完全无效——两个 bit 同时翻转奇偶性不变校验结果照常通过。这在现实中是个大问题因为瞬态干扰导致多位翻转的情况并不罕见。所以奇偶校验在内存领域只是早期过渡方案后来的服务器内存直接跨到了 ECC。ECC 的突破点在于它不止告诉你好坏还能判断是哪一位出了问题然后把这个位纠正回来。这就是纠正码和检测码的本质区别。用生活类比来说奇偶校验像门卫只登记这一批人男女比例对不对ECC 则像一套多人互相交叉核对的口令系统不仅能发现队伍里混进了错的人还能精确算出是哪一个人站错了位置。2.2 汉明码、校验位与校正子ECC 怎么做到自动修复内存 ECC 最常见的实现基础是汉明码以及它的扩展形式。汉明码的核心思想是给数据增加多个校验位每个校验位负责覆盖一部分数据位覆盖关系设计成每一位数据出错时会同时影响一组特定的校验位。这样一来当某个校验位组合对不上时计算机就能通过哪些校验位错了计算出具体是哪一位数据出问题。以服务器内存常用的 64 bit 数据总线为例通常会在旁边额外配 8 bit 的 ECC 校验位。这不是随便加的8 bit 能提供 256 种状态足够覆盖 64 个数据位的定位需求还能额外标记一些特殊状况。这套机制在行业内被称为 SECDED即 Single-bit Error Correction, Double-bit Error Detection单纠错双检错。单 bit 翻转Single-bit ErrorECC 能定位到出错位并纠正用户几乎无感知。双 bit 翻转Double-bit ErrorECC 能检测到有错且无法纠正系统会抛出一个可纠正错误或不可纠正错误事件。超过双 bit 的多位错误视编码设计而定有一定概率能被检测出来也可能无法检测。注意SECDED里的双检错是关键。双 bit 错误不能被纠正但能被识别出来至少系统会明确报警不会默默把错误数据交给你。这就是为什么服务器管理员在日志里看到Corrected ECC可以松口气看到Uncorrectable ECC就得高度重视。2.3 硬件上的差异ECC 内存条比普通内存条多在哪里从外观上看ECC 内存条和普通内存条最直观的区别是颗粒数量。一条 standard 的 64 bit 数据位 DDR4/DDR5 内存条上面通常是 8 颗 DRAM 颗粒ECC 版本会多 1 颗用 x8 颗粒时常见布局为 9 颗多出来的那颗专门存放校验位。如果是 x4 颗粒布局会更复杂一些。所以看到一条内存条上颗粒数明显比常规多一颗或更多大概率就是 ECC 款。更深层的差异在内存控制器和 CPU 平台。服务器平台几乎全系支持 ECC但消费级平台不一定。Intel 消费级芯片组在很长一段时间里直接屏蔽了 ECC 支持即使插上 ECC 内存条也只能当普通内存用AMD 的消费级平台部分支持但要看主板和 CPU 组合。真正需要 ECC 的场景基本集中在企业级 CPUIntel Xeon、AMD EPYC和对应的工作站/服务器主板上。服务器内存还常看到 RDIMM、UDIMM、LRDIMM 这些说法。RDIMMRegistered DIMM的地址和命令线经过寄存器中继可以挂载更多内存条、信号更稳定是服务器主流UDIMMUnbuffered DIMM没有寄存器延迟略低但容量扩展受限LRDIMMLoad-Reduced DIMM进一步减少了 rank 的负载适合需要超大内存的机器。ECC 是其中独立的维度RDIMM 基本都是 ECC 的UDIMM 也分 ECC 和非 ECC 两种版本。选内存时既要看支不支持 ECC还要看是 RDIMM 还是 UDIMM两者插错了点不亮。3. 实战一服务器告警uncorr. ECC 显示2的完整排查流程3.1 先读懂告警这条信息到底在说什么uncorr. ECC 显示2这种字符串一般是服务器带外管理界面BMC里的纯粹文本告警常见于超微、华硕等品牌的 IPMI 界面。不同厂商的表达格式各有不同厂商/平台常见告警格式含义Dell iDRACUncorrectable ECC DIMM_A1指定内存槽位发生不可纠正错误HPE iLOUncorrectable Memory Error内存控制器报告不可纠正错误超微/IPMIuncorr. ECC 显示2不可纠正 ECC 事件累计/当前计数为 2Linux EDACEDAC MC0: 2 UE on DIMM1EDAC 驱动记录 2 个不可纠正错误显示2需要分情况解读。如果这是 SELSystem Event Log里的独立事件计数意味着系统已经累计发生过 2 次不可纠正 ECC 错误如果这是某个状态行里的实时寄存器值也可能表示最近一次告警携带的错误个数。最好的做法是进入带外管理的完整日志页面看时间戳和 DIMM 槽位信息不要只盯一个数字。还有一个容易忽略的点不可纠正 ECC 错误不一定立刻导致宕机。当 CPU 在数据读取路径上发现不可纠正错误时如果数据已经进入了某个正在执行的关键操作系统会触发 Machine Check ExceptionMCE直接重启或 panic如果只是某个后台巡检或非关键读取发现了错误系统可能在记录日志后继续运行。所以显示2但系统还稳着并不代表安全只是错误还没落到关键路径上。3.2 三分钟定位BMC 日志、系统日志与 EDAC 三路并进处理这类告警我的习惯是从带外和带内两个维度同时取证。带外就是 BMC 的 SEL 日志带内就是操作系统里的内核日志和 EDAC 计数器。第一步登录 BMC 管理界面找到系统事件日志SEL或系统日志页面筛选 ECC / Memory / Uncorrectable 关键字记下每条错误的时间、槽位、错误类型。这一步能确认2到底是两个连续事件还是两个槽位各自报了一次。第二步如果服务器还在运行立刻进系统看内核日志。Linux 下执行dmesg | grep -i mce\|edac\|ecc\|uncorrect journalctl -k | grep -i mce\|edac\|eccMCE 日志是 CPU 硬件错误报告的出口里面会详细记录错误所在的 bank、内存通道、DIMM 编号。如果系统已经重启过使用journalctl -b -1查看上一次启动时的日志别漏掉重启前那一刻的关键信息。第三步查看 EDAC 驱动的统计计数器。现代 Linux 内核会在 sysfs 下暴露内存控制器信息# 查看内存控制器列表 ls /sys/devices/system/edac/mc/ # 查看每个控制器的不可纠正错误计数 for d in /sys/devices/system/edac/mc/mc*/; do echo $d cat ${d}ue_count cat ${d}ce_count done # 查看内存槽位对应的错误计数 find /sys/devices/system/edac/mc/ -name *_ce_count -o -name *_ue_count | xargs -I{} sh -c echo {}: $(cat {})不过 EDAC 的槽位命名和物理 DIMM 槽位不是一一对应的不同平台映射规则不一样。更直观的办法是看 dmesg 里 MCE 日志附带的 Memory Error 信息大部分企业级 BIOS 会把 CPU 的Bank、Channel、DIMM编号直接写进日志配合主板手册就能锁定物理槽位。3.3 处理方案交叉验证、更换内存与后续观察确认了是某个槽位的内存条报错接下来的动作要稳不要一上来就把内存拔了。我的标准流程是先把报错槽位的内存条和另一根已知正常的内存条做交叉验证。将疑似故障内存插入一个空闲槽位将一根确认正常的内存插入报错槽位分别重启观察。如果报错跟着内存条走判定内存条本身损坏如果报错固定在原槽位可能是插槽、CPU 内存控制器或主板布线问题。更换内存条时优先用同型号、同批次、同频率的产品。混插不同频率的 RDIMM 往往会导致系统自动降频运行或者引入新的时序问题。服务器内存不是越多越好兼容性永远是第一位。更换完成后用厂商自带的诊断工具做一轮内存压力测试。Dell 的 ePSA、HPE 的 UEFI Diagnostics、超微的 Memory Test 都行第三方工具最常用的是 memtest86跑两到三轮覆盖基本的 March 测试和随机数据测试。清空带外 SEL 日志并记录一条操作备注方便后续对比错误计数是否复现。如果现场没有备件短期应急可以考虑把报错内存挪到非关键路径的通道上或者暂时保留但持续监控计数增长速率。我见过一些显示2后系统又稳了一个月的案例但那是运气不是方案。不可纠正错误只要再出现一次就可能正好命中正在写日志的那块内存区域直接引发文件系统损坏。3.4 实操心得五个容易踩的坑第一别只看计数数字就判断严重程度。两次不可纠正错误如果一次发生在一个月前、一次发生在刚刚和五次发生在十分钟内处理优先级完全不同。后者大概率是内存颗粒正在快速退化必须马上停机处理。第二冷启动后的偶发 ECC 错误不等于内存坏了。机器长期断电后重新开机内存颗粒的温度、电压都在突变偶尔报一次可纠正错误CE甚至一次不可纠正错误重新插拔清洁后可能再也不会出现。这类问题的罪魁祸首经常是金手指氧化接触不良。第三交叉验证一定要留记录。把哪根内存条、从哪个槽位移到哪个槽位、结果如何写在工单里。一次不记录下次别人再看到报错时会把你已经验证过的路径再走一遍浪费时间。第四恢复 BIOS 默认内存设置。有些服务器管理员为了榨性能手动调过内存频率或时序一旦时序激进导致信号裕量不足ECC 误报率会直线上升。企业级应用场景下稳定大于性能。第五带外 SEL 日志是重启也清不掉的硬件日志一定要养成看 SEL 的习惯。操作系统里的 dmesg 清零就没了SEL 会保留每一次硬件告警的时间戳这是回溯问题的第一手证据。4. 实战二Linux 与 Windows 下的 ECC 错误监控体系4.1 Linux 平台dmidecode、EDAC 与 rasdaemon 的组合拳排查单次问题靠手敲命令长期运维必须把 ECC 错误监控固化下来。Linux 下第一步是确认机器到底支不支持 ECC、当前工作模式是什么dmidecode -t memory | grep -E Type:|Error Correction Type:|Speed:|Manufacturer:|Part Number:|Serial Number:重点关注Error Correction Type字段。如果显示Single-bit ECC说明内存和平台都支持 ECC 且已启用如果显示None即使你插了 ECC 内存条也可能被平台屏蔽了。Multi-bit ECC表示支持多位纠错但这在现代内存控制器里不太常见见到Single-bit ECC是正常的。日常监控依赖 EDAC 子系统也就是前面用到的 sysfs 接口。内核会自动加载内存控制器对应的 EDAC 驱动把可纠正CE和不可纠正UE错误分别计数。为了让日志更可读建议安装 edac-utils 或直接用 rasdaemon# Debian/Ubuntu 安装 apt install edac-utils rasdaemon # 查看概览 edac-util --status # 查看详细通道统计 edac-util -v # rasdaemon 持久化 MCE 日志 systemctl enable --now rasdaemon ras-mc-ctl --summaryrasdaemon是比裸看 dmesg 可靠得多的方案。它会把 MCE 事件写入 SQLite 数据库提供ras-mc-ctl --errors等查询接口还能配合 Grafana 做可视化。我建议把 ce_count 的快速增长也纳入告警因为可纠正错误是更早期的退化信号。4.2 Windows 平台WHEA 事件与 PowerShell 快速筛选Windows 下的硬件错误出口是 WHEAWindows Hardware Error Architecture。事件查看器里定位到Windows 日志 → 系统来源为Microsoft-Windows-WHEA-Logger的事件就是硬件错误报告。常见的事件 ID 和含义要记住WHEA 事件 ID严重程度含义17警告纠正后的硬件错误通常由已恢复的 ECC 错误触发18警告纠正后的机器检查可纠正 ECC 错误也归此类19错误不可纠正的硬件错误系统可能已重启20错误不可纠正的非致命错误系统继续运行但数据可能已损坏用 PowerShell 快速筛出所有 ECC 相关事件Get-WinEvent -FilterHashtable { LogName System ProviderName Microsoft-Windows-WHEA-Logger } | Select-Object TimeCreated, Id, LevelDisplayName, Message | Format-List再进一步把内容和 ECC 相关的记录过滤出来Get-WinEvent -FilterHashtable { LogName System ProviderName Microsoft-Windows-WHEA-Logger } | Where-Object { $_.Message -match ECC|Memory|Bus/Interconnect } | Format-List TimeCreated, Id, MessageWindows 服务器配合厂商的管理工具如 Dell OpenManage、HPE iLO 管理套件能看到更细的内存槽位信息WHEA 事件本身有时只给一个笼统的内存控制器错误不带 DIMM 号这种时候还是要回到带外 BMC 的 SEL 日志去对号入座。4.3 把 ECC 监控接入告警平台监控的价值在于第一时间发现问题而不是等人截图发到群里。最轻量的方案是 IPMI 定时巡检ipmitool sel list | grep -i ECC\|uncorrect\|correct配合 Zabbix 或 Prometheus 的自定义脚本定期抓取 EDAC 的 ce_count 和 ue_count 并入库配置阈值告警ce_count单日增长超过某个值比如 10 次就告警ue_count只要非 0 就 PagerDuty 级告警带外 SEL 中出现Uncorrectable关键字立即告警。有一个细节容易被忽略可纠正错误CE的噪音很大。某些服务器在负载高峰时偶尔会出现个位数的 CE如果阈值设太低告警风暴会把运维团队搞到麻木。我习惯把 CE 告警设为24 小时内超过 N 次或连续多日出现增长UE 则无条件即时告警。这样既不会漏掉早期退化信号又不会因偶发噪音影响判断。5. MBIST 与 ECC芯片出厂前是怎么测试纠错逻辑的5.1 MBIST 是什么为什么不能全靠外部测试机MBIST 全称 Memory Built-In Self-Test存储器内建自测试。现代 CPU、GPU、SSD 主控、网络芯片内部都有大量 SRAM/DRAM 宏单元数量多、密度高、运行频率高。外部测试机用探针接触芯片引脚来读写内部存储器覆盖范围有限测试时间也长——芯片出货量动辄千万级每颗多测一秒钟都是成本。解决方案是把测试逻辑直接做进芯片里。芯片内部集成一个 BIST 控制器可以在特定模式下对内部存储器执行写读比较测试用多种算法模式March C、March LR 等对每个存储单元做非常密集的翻转和读写验证。外部测试机只需要给一个启动信号、接收一个测试结果信号即可。MBIST 的存在让每一颗芯片出厂前都经历过一轮存储器健康检查成为可能。但它也带来一个直接的挑战存储器的测试覆盖够了存储器的纠错逻辑呢如果没有 ECC测试只关心数据能不能正确写读有了 ECC还要验证当数据出错时纠错电路能不能把它找出来。5.2 故障注入MBIST 如何验证 ECC 真的能纠错验证 ECC 逻辑最直接的方式是故障注入Fault Injection。流程大概是这样的初始化将一块受测内存区域写入已知数据。注入错误通过 BIST 控制器绕过正常数据通路强制将某个存储单元的某个 bit 翻转模拟真实环境中的单 bit 错误。纠错读取触发 ECC 逻辑读取该存储区域检查能否正确纠正单 bit 错误。双 bit 注入注入两个 bit 的错误验证 ECC 能否正确检测到不可纠正状态。结果比对BIST 控制器将纠错后的数据与原始数据比对全部一致则测试通过。这种测试同样会覆盖 ECC 校验位自身。如果 ECC 校验位存储单元发生故障纠错逻辑在计算校正子时就会得到错误结果故障注入测试能把这类问题暴露出来。对做服务器硬件运维的人来说了解 MBIST ECC 的意义在于理解出厂测试的边界。MBIST 是芯片出厂的最后一道健康闸门但它测的是一个固定时间点、固定工作条件下的状态测不出老化、测不出长期电压漂移、也测不出主板信号完整性问题。5.3 出厂测试过了线上为什么还会报 ECC 错误很多运维同行困惑服务器新买回来跑了一年突然开始报 ECC 错误是不是出厂质量不行答案通常不是。出厂 MBIST 和运行时 ECC 是两个不同的故障域MBIST 主要覆盖制造缺陷和早期失效比如一颗存储单元的晶体管性能偏差、金属互连问题。运行时 ECC 错误更多来自瞬态干扰和长期退化宇宙射线引发的单事件翻转、电源纹波、温度变化导致的时序漂移、内存颗粒老化后的保持时间缩短。顺带提一个容易被忽略的点ECC 逻辑本身也可能有设计缺陷。如果芯片里 ECC 控制器的 Verilog 代码存在边界条件没覆盖到的情况MBIST 没测出来真机上电后特定地址模式就可能触发误报。这种问题厂商通常通过微码更新搞定所以遇到诡异的内存 ECC 告警但硬件实测又找不到问题时先看看 BIOS 固件和 CPU 微码是不是最新版再决定要不要硬换硬件。6. 顺带说说 SAP ECC 年结同名缩写完全另一码事6.1 SAP ECC 到底是什么年结又是什么SAP ECCERP Central Component是企业级 ERP 系统的核心组件覆盖财务、物料、销售、生产等模块。它广泛运行在很多制造业和大型企业的财务部门是业务系统而不是硬件设备。年结是财务系统在年末必须执行的一整套流程。不同企业的年结内容有差异大体包括会计年度切换、总账科目余额结转、资产负债类科目余额带入新年度、损益类科目结转至留存收益、固定资产模块的年末折旧和资产年结。每一步都涉及大量数据写入和校验对后台数据库的负载压力非常大。我在这里不展开财务细节因为那不是本文主线。但有一点要提醒如果你的 ERP 顾问说SAP ECC 年结跑不动这和服务器内存的 ECC 毫无关系。年结性能问题通常要从数据库索引、内存池配置、锁竞争、归档策略这些方向排查。6.2 一线运维如何快速区分两种 ECC在实际工作中区分语境其实不难讨论内存条、服务器日志、BIT flip、SECDED、MCE、EDAC、memtest 时说的是纠错码。讨论财务月结、年结、资产负债表、SAP GUI、事务代码比如 FAGLGVTR、ECC 6.0 EHP 版本时说的是 SAP ERP。讨论 HTTPS 证书、数字签名、密钥长度、secp256k1 曲线时说的是椭圆曲线密码学。有一次我接到一个工单用户写服务器重启后 ECC 显示 2我以为是内存告警跑过去一看是 SAP 系统界面里的年度版本号。这种缩写冲突在文档、告警、即时消息里经常制造混乱归档问题时最好把全称写清楚至少写清楚上下文ECC三个字母单独出现的歧义太大了。7. 常见问题与速查表7.1 症状、原因与处理方向对照表场景可能原因处理建议SEL 显示 uncorr. ECC 计数 2系统一直稳定偶发瞬态干扰或历史遗留事件记录时间戳观察是否持续增长确认非频繁复现可低优先级处理同一槽位反复报可纠正 ECCCE单颗粒老化、接触不良、信号完整性问题清洁金手指重插仍复现则交叉验证后更换更换内存后原槽位仍报错插槽、CPU 内存控制器或主板故障换到空闲槽位验证如仍固定原槽位报错考虑主板或 CPU 送修重启后系统侧 dmesg 没有记录EDAC/MCE 日志被清空或错误只在带外记录以 BMC SEL 为准排查带内日志保留策略内存频率被手动调高后 ECC 频繁报错时序裕量不足恢复 BIOS 默认或 JEDEC 标准频率观察是否恢复SAP ECC 年结卡慢系统软件和数据库问题与硬件 ECC 无关排查数据库索引、事务锁、内存池配置、归档策略MBIST 测试报告与线上 ECC 错误不一致出厂静态测试无法覆盖运行期老化与瞬态干扰按正常 ECC 错误流程处理必要时升级 BIOS 和微码7.2 几条能救命的排查经验最后聊几条我自己的经验都是常规文档里不太会写的。第一处理 ECC 告警之前先把数据备份做了。不可纠正 ECC 意味着内存里出现过无法修复的数据损坏这个数据可能已经写进文件系统缓存、写进数据库日志。处理内存告警的同时把关键数据再备份一次能避免后续故障扩大时手忙脚乱。第二带外日志、带内日志、物理槽位三者的时间线要对齐。经常出现 BMC 里记录的 DIMM 编号和系统日志里的 EDAC 编号不一致的情况遇到这种矛盾优先相信带外日志加物理核查的结果别凭单一日志下结论。第三如果你在机房现场处理这种问题不要一步到位换新内存。先重新插拔、换个槽位、清洁金手指成本最低的步骤排在最前面很多时候问题就这么消掉了。这不是玄学金手指氧化和插槽弹片接触不良在老旧服务器里非常普遍。第四记录一切。今天你处理这台机器花了多少时间、换了什么配件、结果如何三个月后这台机器再次报错时这些记录就是最值钱的参考资料。没有记录的排查等于每次都在鸡生蛋蛋生鸡。我在实际处理过的 ECC 告警里真正内存颗粒损坏的其实不到一半接触不良、固件问题、偶发干扰占了大头。所以看到uncorr. ECC 显示2先别慌按着流程走一遍多数情况能在半小时内收敛出结论。这个内容后续还可以扩展的方向也不少比如 SSD 里的多级 ECC、NAND 闪存的 LDPC 纠错、ECC 在 DDR5 上的 On-die ECC 与 Side-band ECC 区别都是很有深度的题。先把服务器端这块最常用的搞扎实后面再聊。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。