DH3G游戏资讯网

信服云的 ECC 机制:有效减少 30% 服务器宕机故障

发表于:2024-11-21 作者:创始人
编辑最后更新 2024年11月21日,服务器宕机可能是很多运维工程师最可怕的噩梦。谷歌的一项研究表明:大多数死机故障是由内存问题而引起的,而且每年有 1/3 的谷歌服务器都会出现可纠正的内存故障,而有 1/100 的谷歌服务器会出现不可纠

服务器宕机可能是很多运维工程师最可怕的噩梦。谷歌的一项研究表明:大多数死机故障是由内存问题而引起的,而且每年有 1/3 的谷歌服务器都会出现可纠正的内存故障,而有 1/100 的谷歌服务器会出现不可纠正的内存故障,后者是造成系统宕机的典型情况之一。

如果有人说,用软件的方式,可以解决硬件的内存问题,还能减少 30% 的服务器宕机故障,你觉得可靠吗?

当前的数据中心已经走向软件定义的时代,从最初的软件定义网络 SDN 到软件定义数据中心 SDDC。为了防止服务器宕机的意外发生,越来越多的企业开始考虑软件定义的解决方案,并通过软件定义的可靠性屏蔽服务器、内存等硬件故障带来的影响。

那么软件是如何实现对内存以及服务器可用性的提升呢?

基于 MCA 的内存 ECC 技术

内存故障非常多,就看系统能不能识别出来,有些故障是内存单个或多个 bit 字节故障,有些是内存颗粒故障,有些是内存颗粒上的单行或单列的存储单元出现故障,还有 firmware 故障、内存控制器故障,还有一些是内存金手指焊接点老化、主板上的内存插槽松动或有灰尘等等。

器件质量类的故障只能通过工艺的改进来解决,而信服云要解决的是软件层面可以控制的 bit 级故障。往往大故障来自于所谓 bit 级小故障的持续积累,这时要做的就是"防微杜渐",在小故障发生的时候就抓住它、,隔离它,避免影响扩大。

Intel 有一种机制叫做 MCA(Machine Check Architecture),可以监测这种类型错误。这个机制的运行方式是:首先需定义出这些错误模型,把可以自动纠正的错误叫做 CE(Correctable Error),这些往往是任意单比特错误、部分单颗粒多比特的错误。但是一些错误无法自动纠正恢复,会导致系统宕机,这些错误被定义为 UCE(Uncorrectable Error)。根据统计,CE / UCE 类的问题类型占内存所有类型问题的 59%。所以,如果能够设计一种故障检查和纠正的机制,其价值会非常大!

这个全套的错误检查和纠正的机制就是 ECC(Error Checking and Correcting)。ECC 在遇到故障时首先会进行问题识别,通过设计内存主动扫描机制,可以设置一天 24 小时不休(也可以调整)扫描和发现故障;识别后判断故障位置(这里其实用到了一些特殊的 bit 计算和校验算法),认定故障位置后,就尝试隔离该有问题的内存空间,避免后续业务再次使用该内存空间。

信服云的内存 ECC 增强技术

业界主流的 IT 服务商都会利用 Intel 的 MCA 机制进行内存错误处理,但是其软件实现的精细化程度不一,比如有些服务商只是把 CE 错误屏蔽掉,或者只是简单的告警,没有做进一步处理;还有一些服务商即使有告警但是无法准确定位到发生问题的插槽。而信服云则提出了一个风险区机制,一旦发生内存错误,就将问题单元置于一个"缓冲区"进行观察,当 CE 错误达到一定阈值则立刻自动隔离有风险的内存区域,避免错误继续扩大引起严重的宕机。

近年来,信服云在内存隔离恢复机制上不断优化,在 2022 年 1 月推出的超融合 HCI6.7.0 中还对 ECC 机制进行了增强。

该增强机制的运行方式是:首先通过 CPU 的 BIOS 设置 CE Record 选项,使得硬件识别出内存错误,一旦发现 CE / UCE 错误,硬件就会把这个错误上报给信服云的软件。然后轮到软件机制上场,OS 系统先是判断这个内存是否被软件(包括应用软件和操作系统)使用,如果没有使用就直接隔离,不允许再分配给软件使用。

如果被软件使用了,就获取软件的上下文,判断区分其是被操作系统内核 (in_kernel) 或者被用户应用软件 (in_user) 使用。

■如果是被应用软件 (in_user) 使用,对于 CE 可纠正错误,信服云的内存 ECC 增强机制就用一块好的内存区域替换掉有错误的内存区域,这个过程中业务完全不受影响。如果是 UCE 不可纠正的错误,该机制就重新启动该进程,把错误的内存区域释放出来并隔离出去不再使用。进程重启后就可以使用完全正常的内存了。

■如果是被操作系统内核 (in_kernel) 使用,信服云的内存 ECC 增强机制就把有错误的内存区域的信息记录下来,在系统再次启动的时候,该机制会隔离这些有错误的内存,以保证其不会被再次使用。

(信服云 ECC 自动纠错机制原理)

推出上述机制后,信服云在 1000 台主机环境中进行了验证。结果证明,通过软件控制的 ECC 机制,信服云能够提前发现内存异常,并且 100% 自动隔离成功,可以提前处置以规避更大的故障影响,总体上相对原有方式能够减少 30% 的服务器宕机故障。

回到开头的问题,用软件可以解决硬件层面带来的问题吗?毫无疑问,当然可以!信服云的 ECC 机制就通过创新性的软件技术更加准确、智能地控制了服务器的内存故障问题,有效地提高了 IT 系统的可靠性。

2022-05-06 01:52:35
0