软件定义的“可靠性”到底可不可靠?信服云的ECC机制了解一下

  服务器宕机可能是很多运维工程师最可怕的噩梦。谷歌的一项研究表明:大多数死机故障是由内存问题而引起的,而且每年有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系统的可靠性。

  以上就是本期《信服云黑板报》关于软件定义可靠性和ECC机制的分享。关注“深信服科技”微信公众号,可以持续获取更多技术干货内容!

(免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。 )