RAS - Reliability, Availability and Serviceability

本文转载自网络

Reliability: 可靠性。指的是系统必须尽可能的可靠,不会意外的崩溃,重启甚至导致系统物理损坏,这意味着一个具有可靠性的系统必须能够对于某些小的错误能够做到自修复,对于无法自修复的错误也尽可能进行隔离,保障系统其余部分正常运转。

Availability:可用性。指的是系统必须能够确保尽可能长时间工作而不下线,即使系统出现一些小的问题也不会影响整个系统的正常运行,在某些情况下甚至可以进行 Hot Plug 的操作,替换有问题的组件,从而严格的确保系统的 downtime 时间在一定范围内。

Serviceability:指的是系统能够提供便利的诊断功能,如系统日志,动态检测等手段方便管理人员进行系统诊断和维护操作,从而及早的发现错误并且修复错误。

RAS 作为一个整体,其作用在于确保整个系统尽可能长期可靠的运行而不下线,并且具备足够强大的容错机制。这对于像大型的数据中心,网络中心如股票证券交易所,电信机房,银行的数据库中心等应用环境是不可或缺的一部分。

ECC内存技术

ECC (Error Detection Code) - 错误检查和纠正。在数据位上额外的位存储一个用数据加密的代码,称为ECC码。ECC码将信息进行8比特位的编码,采用这种方式可以恢复1比特的错误。每一次数据写入内存的时候,ECC码使用一种特殊的算法对数据进行计算,其结果称为校验位(check bits)。然后将所有校验位加在一起的和是“校验和”(checksum),校验和与数据一起存放。当这些数据从内存中读出时,采用同一算法再次计算校验和,并和前面的计算结果相比较,如果结果相同,说明数据是正确的,反之说明有错误,ECC码则会被解码,以确定数据中的那一位是不正确的。然后这一错误位会被改正过来不影响系统运行。

ChipKill技术

ECC内存技术虽然可以同时检测和纠正单一比特错误,但如果同时检测出两个以上bits数据有错误,则无能为力。IBM的Chipkill 技术是利用内存的子结构方法来解决这一难题,弥补ECC的不足。Chipkill内存控制器所提供的存储保护在概念上和具有校验功能的磁盘阵列类似:在写数据的时候,把数据写到多个DIMM内存芯片上。这样,每个DIMM所起的作用和存储阵列相同。如果其中任何一个芯片失效了,它只影响到一个数据字节的某一比 特,因为其他比特存储在另外的芯片上。出现错误后,内存控制器能够从失效的芯片重新构造“失去”的数据,使得服务器可以继续正常工作。

Memory ProteXion / RBS

Memory ProteXion(内存保护,也称“冗余位迁移(RBS)”)是IBM的一项内存纠错技术,最初是为IBM大型机所开发的。它相对前面介绍的Chipkill内存技术在保护能力上更强些。它的工作方式与Windows NTFS 文件系统中热备用磁盘扇区有些类似,如果操作系统检测到磁盘上有坏扇区,它将把数据写到备用扇区以实现这一目的。

SDDC 和DDDC

英特尔提供了与ChipKill类似的功能,叫做单设备数据校正(Intel x4 / x8 SDDC) 。可修正单个DRAM设备上的多比特位错误,将单个 DRAM 从内存映射中删除,并将 DRAM 数据恢复至新设备,以快速修复整个 DRAM 设备的故障。在出错的DRAM从内存映射中被删除后,还可以继续进行单比特位数据校正。

DDDC是双设备数据校正。允许纠正双位硬件内存错误。确保当一个DIMM上的二个DRAM芯片发生多比特位错误时也能修复产生的错误,将出错的DRAM从内存映射中删除,并将修复好的数据恢复至新设备。 在出错的DRAM从内存映射中被删除后,还可以继续进行单比特位数据校正。

Memory Scrubbing

ECC只有在写入数据时才会产生,并且只有当从内存读取数据的时候,ECC模块才会去读取ECC校验码,并对照相同与否来发现出现的错误。但是,错误可能发生在还没有被访问到的内存位置,如果这种错误累积,就会导致无法修复的多比特位错误,进而导致数据损坏甚至系统崩溃。内存检查(Memory Scrubbing)是Intel的内存检查技术,引入一个嵌入式硬件引擎,不断地监测并修复出现的内存错误,从而可确保不会造成错误积累到不可修复的程度。

Memory Mirroring 内存镜像

内存镜像(Memory Mirroring) 采用两组DIMM互为镜像的方式形成一种备份机制,工作原理与RAID1硬盘类似,内存镜像是将内存数据做两个拷贝,分别放在主内存和镜像内存中。

正常工作情况下,内存数据读取只从活动内存卡中进行。只是当活动内存出现故障,内存保护和Chipkill修复技术都不能完全修复,才会从镜像内存中读取数据。如果一个内存中有足以引起系统报警的故障,系统会报告系统管理员;同时服务器就会自动地切换到使用镜像内存卡,直到这个有故障的内存被更换。镜像内存允许进行热交换(Hot swap)和在线添加(Hot-add)内存。

因为镜像内存采用的的两套内存中实际只有一套在使用,另一套用于备份,所以对于软件系统来说也就只有整个内存的一半容量是可用的。

Memory Sparing 内存备用

内存备用(Memory Sparing) 可以实现以DIMM为单位或是以Rank为单位的内存备用。当一个Rank或是DIMM将要失效(错误超过阈值)时,就会启动备用的Rank或DIMM,同时对出错的和备用的Rank或DIMM写入数据,当所有数据全部转移至备用Rank或DIMM后,将出错的Rank或DIMM关闭,切换至备用的Rank或是DIMM上,以避免系统的停机。内存备用(Memory Sparing)不能与内存镜像(Memory Mirroring)同时使用。

LockStep技术

内存通道的访问可分为独立通道模式(Independent Channel Mode)和精确同步模式(LockStep Channel Mode)。独立通道模式是指每个通道(Channel)独立运行,一个内存通道对应CPU的一个高速缓存行(Cache-line)。而LockStep技术使用相同的、冗余的硬件组件在同一时间内处理相同的指令,从而实现一个CPU高速缓存行(Cache-line)上的数据被分布到几个内存通道上。LockStep技术可以保持多个CPU、内存精确的同步,在正确的相同时钟周期内执行相同的指令。该技术保证能够发现任何错误,即使短暂的错误,系统也能在不间断处理和不损失数据的情况下恢复正常运行。LockStep也称锁步,或高级ECC。

Memory Interleaving 交叉存取技术

Memory Interleaving交叉存取技术是加快内存速度的一种技术 。 在典型的服务器系统中,大量连续的内存访问可能是性能瓶颈,因为内存访问时延会带来等待时间。 交叉存取技术是一种并行操作的内存存取,内存被分为一系列的簇,有多少个簇就叫做几路交叉存取。它的原理类似于RAID0技术。在交叉存取方式中,相邻位置的内存数据是被分在不同的块中,只要读写操作是要在两个块中进行的,它们就可以同时进行,从而有效地提高系统性能 。

Memory Hemisphere Mode

Hemisphere模式是一种高性能的交错模式。CPU内两个内存控制器之间的内存交错存取,处理器的Caching Agent 1不会访问其Home Agent 2,从而达到降低内存延迟(Latency),提高内存呑吐量,提高性能的目的。Hemisphere模式要求两个内存控制器之间的内存配置在DIMM规格和DRAM大小上完全一致。

UMA和NUMA

一致存储器访问(UMA)结构体系有时也被称为SMP(Symmetric Multi-Processor )模式。SMP模式将多个处理器与一个集中的存储器和I/O总线相连。所有处理器只能访问同一个物理存储器。一致性意指无论在什么时候,处理器只能为内存的每个数据保持或共享唯一一个数值。SMP的缺点是可伸缩性有限,因为在存储器和I/O接口达到饱和的时候,增加处理器并不能获得更高的性能。

NUMA(non-uniform memory access)是一种分布式存储器访问方式,处理器可以同时访问不同的存储器地址,大幅度提高并行性。 NUMA模式的基本特征是具有多个CPU模块,每个CPU模块由多个CPU组成,并且具有独立的本地内存、I/O槽口等。由于其节点之间可以通过互联模块(如称为Crossbar Switch)进行连接和信息交互,因此每个CPU可以访问整个系统的内存(这是NUMA系统与MPP系统的重要差别)。访问本地内存的速度将远远高于访问远地内存(系统内其它节点的内存)的速度,这也是非一致存储访问NUMA的由来。

预测故障分析

Predictive Failure Analysis预测故障分析。其关键任务目标是最小化非计划宕机时间。PFA(预测故障分析)会监控系统自身健康情况,并在失效实际发生前产生告警的能力。

Machine Check Architecture

Intel RAS集中解决三个方面的问题:一是数据保护,利用CRC、ECC等硬件机制来对传输的数据进行校验、纠错,如果无法纠正,就将损坏的数据进行隔离,以保证不造成更大的数据,避免系统的重启和宕机。二是高可用性,包括各种主要部件的备、镜像和热切换等,以保证系统的高可用性。三是计划宕机时间最小化,包括系统分区管理技术、CPU和内存的热添加和热移除等,将系统维护时间降低到最小。

除此之外,Intel建立了一个CMCI架构,以保证纯硬件的数据纠错,在硬件层保障信号传输的正确性。

当发生硬件无法完全纠正的错误的时候,Intel 进而提供了一系列需要联合OS/firmware进行的错误隔离以及错误恢复。对无法纠正的数据,使用一个Poison(毒药)标记,OS/firmware可以知道这些数据在硬件层次上无法恢复,从而可以决定进行Retry或者丢弃。

这些特性形成了一个完整的MCA架构(Machine Check Architecture)。MCA功能可以在不关机的情况下检查和纠正处理器、内存或者IO中的错误,在OS配合的情况可以对系统进行热维护,保障系统的不间断运行。微软Windows Server、RedHat、SUSELinux以及VMware等平台都已经支持这一功能。

本文作者:博主:     文章标题:内存的可靠性、可用性和诊断功能(内存RAS)
本文地址:https://www.mr-mao.cn/archives/memory-ras-introduction.html     
版权说明:若无注明,本文皆为“猫先生的日常点滴”原创,转载请保留文章出处。
作者个人微信二维码
博客小程序二维码
最后修改:2019 年 07 月 07 日 01 : 13 PM
如果觉得我的文章对你有用,请随意赞赏,并分享给你觉得需要的人,谢谢!