对比VMware:深信服内存纠错能力怎么样?

云平台的稳定性,对于用户业务承载尤为重要。在VMware替代的过程中,不少用户也希望通过迁移替换,提升云平台的稳定性。为确保用户系统的持续运行,以及在发生故障时能够迅速且自动地恢复,深信服特别成立专业的技术团队,对如何有效保障用户系统稳定可靠进行深度研发,并针对由服务器硬件故障所引起的计划外停机问题,打磨有效的技术方案。

从业界的服务器统计数据来看,硬件故障问题主要集中在内存、硬盘、CPU、主板、电源和网卡等关键部件。在云服务环境中,单个物理服务器可能承载多个不同业务和场景的虚拟机。一旦物理硬件发生故障,不仅影响服务提供商,也会给用户带来重大损失。在众多故障类型中,内存故障尤为常见且影响严重。

根据国内云服务商的综合数据显示,内存故障已成为数据中心最常见的硬件问题之一,普遍占比较高。尽管具体数值因服务商不同而有所差异,但均表明内存故障对运维构成重大挑战。内存问题不仅频繁发生,且是导致服务器宕机的首要原因,占比超过一半,尤其在可纠正错误后续的非突发宕机中,内存故障占比更是显著上升,对系统稳定性和业务连续性构成了严重威胁。

01
内存CE/UE介绍

动态随机存取内存(DRAM)的故障问题主要可以分为两大类:

瞬时性故障(软错误):

  • 这类错误通常是暂时性的,可能由内存子系统中的电气干扰引起,这些干扰可能发生在内存子系统的多个部位,如处理器内存控制器、内部总线、缓存、socket或连接器、主板布线、内存缓冲芯片(如果使用)、DIMM连接器或DRAM芯片本身。
  • 瞬时性故障可能由高能粒子撞击或电路中的电噪声导致。它们可能影响单个比特或多个比特,其中单比特错误和某些多比特错误可以通过定期或周期性的巡检擦除(scrubbing)来纠正。

永久性故障(硬错误):

  • 硬错误可能由物理损坏、静电放电(ESD)、电气过载、高温条件、处理器或DRAM的制造缺陷、模块组装过程中的不规范操作引起。

  • 硬错误可能包括总线通道或DRAM单元的老化、设备内bank区域故障、引脚故障、列故障或单元故障等。这类错误是持久的,不会因为时间推移或系统重启而自动解决。

这些软错误和硬错误最终会导致两种类型的内存错误:

  • 可纠正错误(Correctable Errors, CE):这类错误可以通过系统内置的错误更正机制来修复,通常涉及单比特错误。
  • 不可纠正错误(Uncorrectable Errors,
    UCE):这类错误无法通过常规的错误更正机制修复,可能涉及多比特错误或更复杂的硬件故障。

了解这些错误类型对于设计和维护高可靠性的内存系统至关重要,有助于采取适当的预防和修复措施。

(1)内存CE错误

CE 指的是在服务器运行过程中,内存单元发生的位翻转(bit flip),这类可纠正的错误通常由瞬时性或永久性故障引起。例如,偶发的地址或命令错误、X4颗粒内存的单颗粒多比特错误、X8颗粒内存的单颗粒单比特错误等。幸运的是,内存的 CE 错误是可以通过服务器中的 ECC(Error-Correcting Code)机制得到有效纠正的。

在服务器领域,越来越多的案例表明,每个双列直插式内存模块 DIMM(Dual In-line Memory Module)都会不可避免的出现一定数量的CE错误。这些错误发生时,服务器会利用ECC机制迅速对出错的内存单元进行纠正。尽管这种纠正过程能够及时修复正在运行的进程中的错误,但它也会带来一定的性能损耗,导致业务运行卡慢。

(2)内存UCE错误

UCE,也简写为UE,指的是在服务器运行过程中发生的错误,这些错误无法通过ECC机制来纠正。这类错误可能由瞬时性故障或永久性故障的任何组合引起,但通常是由多个硬错误导致的。不可纠正错误分为两大类:

UCE-non-fatal(非致命不可纠正错误):

这类错误指的是虽然发生了硬件故障,但系统能够进行一定程度的恢复。以内存为例,处理这类错误的常见方法是识别并终止使用到错误内存的进程,这样可以避免错误扩散到整个系统,从而不会影响系统的其他部分继续运行。

UCE-fatal(致命不可纠正错误):

这类错误指的是产生了极为严重的错误,以至于CPU必须执行关机或重启的操作。致命不可纠正错误通常涉及到关键硬件组件的故障,这些故障无法通过简单的进程终止或系统恢复来解决,必须通过物理干预,如重启或更换硬件来处理。

UCE 错误是服务器运维中需要特别关注的一类问题,因为它们可能直接威胁到系统的稳定性和数据的完整性。因此,对于这类错误的预防、检测和响应机制是服务器可靠性管理的重要组成部分。

(3)内存错误隔离方案的必要性

在用户使用场景中,内存作为直接向中央处理器提供数据缓存的关键部件。内存系统的故障将会直接导致系统宕机,影响或者中断客户业务。随着客户内存容量的需求越来越大,内存故障的发生概率也越来越高。所以在实际应用环境中,内存的稳定性对系统运行至关重要。

现代内存模块配备了ECC校验功能,这使得它们能够自动检测并修正单个比特的错误,通常不会对系统造成影响。在某些情况下,ECC甚至能够纠正一些多比特错误。然而,根据对问题内存条的研究和相关文献的查阅,如果内存条在一段时间内频繁出现可纠正错误(CE),那么该内存条未来出现问题的概率将显著增加,这包括可纠正错误和不可纠正错误(UE),从而给系统运行带来潜在的风险。

当系统内的进程运行在存在可纠正错误(CE)的内存上时,CPU需要额外的资源来处理这些错误,这可能会导致系统响应速度下降或出现卡顿现象。

在不可纠正错误(UE)的情况下,如果进程运行在有UE错误的内存上,系统会终止该进程并尝试重新启动,以分配新的内存资源。对于虚拟机进程而言,遭遇UE错误将导致虚拟机重启,这会直接导致业务中断。而对于宿主机操作系统(HostOS)的进程,尤其是那些关键的内核或驱动进程,如果它们遇到UE错误,可能会引起服务器系统崩溃,造成更严重的服务中断。

CE错误需要消耗额外的系统资源,UE错误往往会导致系统宕机。为了提高系统的可靠性,减少因内存问题引起的性能下降和宕机风险,仅依赖内存的自动纠错功能是不够的,需要采取额外的措施来增强系统的稳定性和可靠性。

02
VMware处置CE/UE方案

在vSphere环境中,为确保虚拟机的稳定性和性能,提供了一定的CE和UE处理策略:

处理CE(可纠正错误):

当检测到CE时,vSphere会执行内存隔离操作,将发生错误的内存区域隔离,防止虚拟机再次访问这些区域。这种隔离机制有助于防止错误扩散,减少对虚拟机性能的影响。

处理UE(不可纠正错误):

当 VMKernel 运行在UE错误的内存时,会导致系统宕机,触发自动重启来恢复系统。此时利用 Intel 的 MCE Safe(Machine Check Exception)机制可以避免代码在内核运行从应用层拷贝,减少不必要的宕机。

当虚拟机监控器(VMM)检测到虚拟机运行在存在UE错误的内存上时,通常会触发虚拟机的重启,确保虚拟机能够从错误状态中恢复,并重新分配到健康的内存区域。对于ESXi主机上运行的用户空间进程,如果它们运行在存在UE错误的内存上,ESXi会重启受影响的应用进程,快速恢复。

03
深信服处置CE/UE方案

深信服的内存高可靠整体解决方案是一个全面且深入的策略,基于Intel合作优化内存UE恢复机制。结合多项创新技术和专利保护,如支持恢复部分内核UE内存地址、支持内核对内存的巡逻扫描(patrol scrubber)功能、支持对部分UE降级为CE处理等,涵盖从最底层的BIOS,到最上层的操作系统OS、应用程序以及前端界面等各个模块的技术创新,显著提升系统的自我修复和容错能力。

(1)内存错误预测

深信服从大量实际采集的故障案例和硬件厂商共享的错误数据中分析得到的错误特征,能够精准预测潜在的故障风险区域。通过在这些问题区域发生故障之前进行识别和隔离,有效预防约70%的服务器内存 CE 和 UE 错误。

对于已预测的风险内存地址,深信服云平台会在预定的时间段内进行深入扫描和确认。平台会调度无效进程运行在这些风险内存地址上,以此快速准确地定位具体的内存条编号、物理插槽位置以及细分的错误类型等关键信息。

深信服的平台在扫描确认内存中的 CE 或 UE 错误后,会自动隔离出错的内存块地址,通常是2M大小的区域,以防止业务进程或内核进程访问这些内存空间。这种超融合环境中的内存隔离是自动化的,能够迅速恢复业务的正常运行,从而避免了在故障排查和定位上耗费大量时间。

(2)CE错误处置

对于未能提前预测到的CE错误内存地址,深信服平台一旦检测到健康进程所使用的内存块存在CE错误时,它会迅速采取行动,利用系统预留的额外资源来修复错误,即将数据迁移到健康的内存块中。随后,平台会立即执行内存隔离操作,记录下出现CE错误的内存块地址。在未来的内存分配请求中,系统将规避这些已记录的问题内存地址,确保它们不会被其他进程使用,从而防止这些错误再次对业务造成影响。这种隔离机制不仅有效减轻了对虚拟机性能的负面影响,而且通过防止故障内存块的再次使用和错误扩散,进一步增强了系统的稳定性和可靠性。

针对那些物理内存频繁出现CE错误的主机,深信服平台会自动将该主机标记为亚健康状态,并通过报警系统通知管理员,以便及时采取相应的维护措施。此外,为了减少这些主机对新业务或现有业务的潜在影响,深信服平台还会调整业务系统的运行策略、降低这些主机在虚拟机启动、高可用性HA调度、动态资源调度等策略中的优先级。避免CE错误的内存块对后续更多业务产生影响。

(3)UE错误处置

深信服平台通过错误降级、UE延迟处置、固化隔离等机制,来降低内存错误的影响。

基于 Intel 的内存检测技术,将UE进一步细分,识别并标出可以恢复的UE错误,如UCNA(Uncorrected No Action required)、SRAO(Software Recoverable Action Optional)、SRAR(Software Recoverable Action Required)等。深信服平台对以上几类错误预留必要资源以快速完成故障修复处置,减少系统宕机和重启的风险。

延迟处理机制,是指当平台检测到内存UE时,如果虚拟机未直接访问该故障内存区域,系统会优先进行隔离处理而非立即重启,这种延迟处理策略可以显著降低因UE故障导致的虚拟机重启概率。

在主机系统遇到UE错误导致重启时,系统会自动记录并强制隔离故障的内存UE地址,这种固化隔离机制确保在重启后,故障内存不会被重新分配和使用,从而避免再次发生UE错误,保障系统的稳定运行。

如果在降级和隔离处理后,主机仍然出现内存UE故障,深信服平台会自动将该主机标记为亚健康状态,并生成警报通知系统管理员。此状态将持续到故障彻底解决为止,期间该主机将限制新增虚拟机业务,以避免增加负载压力,确保现有业务及新增业务的稳定性。

04
内存错误检测的应用价值

深信服平台通过一系列先进的内存管理策略,显著提升了对内存错误的处理效率和系统的可靠性。平台利用主动预测、快速定位和自动隔离等手段,大大降低了对内存错误的处置开销。这种策略使得在故障发生时,无需耗费大量时间进行排查和定位,从而提高了维护效率。

通过主动预测潜在的故障和定期进行内存扫描,平台能够从源头消除超过90%的故障错误告警。这不仅减少了系统告警的发生,也提高了故障处理的效率和准确性。内存隔离策略是分级实施的,对于单一内存条,如果隔离的内存不超过10%,则不影响其他内存空间的正常使用。这种设计确保了系统的平滑运行,同时,一旦隔离的内存超过20%,系统会自动提醒用户更换内存条,以防止性能下降和进一步的稳定性风险。

此外,平台通过将不可恢复的UE错误降级为可恢复的UE错误,有效减少了60%因UE错误导致的系统立即宕机的情况。进一步地,将可恢复的UE错误降级为几乎无感知的UE/CE错误,减少了70%因UE错误触发的虚拟机重启情况。

深信服持续优化内存错误的处理机制,显著提升系统的稳定性和业务连续性,为用户提供了一个更加可靠和安全的虚拟化环境。

相关推荐
Hcoco_me3 天前
宝藏虚拟化学习资料大全
学习·虚拟化
Just_Paranoid6 天前
Android 虚拟化框架(AVF)指南
android·google·虚拟化·aosp·avf
小哈里1 个月前
【虚拟化】内核级虚拟化技术KVM介绍,全/半虚拟化的区别,使用libvirt搭建虚拟化平台(go/java/c++)
java·c++·golang·虚拟化·kvm
北京智和信通1 个月前
云平台和虚拟化智慧运维监控,全面提升故障感知与处置能力
运维·虚拟化·云平台·虚拟机监控
Tassel_YUE1 个月前
vSAN01:vSAN简介、安装、磁盘组、内部架构与调用关系
架构·vmware·虚拟化·vsan·实验
志凌海纳SmartX2 个月前
《SmartX ELF 虚拟化核心功能集》发布,详解 80+ 功能特性和 6 例金融实践
数据库·金融·架构·虚拟化·分布式存储·超融合·vmware替代
行路见知2 个月前
ovirt error: Network not found: no network with matching name ‘vdsm-ovirtmgmt‘
虚拟化·ovirt网卡
小哈里2 个月前
【云网络】软件定义网络SDN的概念与应用(以PVE8用户隔离,TLS证书介绍,自签证书等为例)
网络·https·云计算·虚拟化·sdn
sysin.org2 个月前
VirtualBox 7.1.0 发布下载 - 开源跨平台虚拟化软件
开源·虚拟化·virtualbox