随着服务器内存容量需求的不断增长,对内存可靠性的要求也必须随之不断提高,道理很简单,越多的内存被使用,内存存取错误的可能性就越容易发生。于是,关于内存可靠性的各种保障措施也日益受到重视。
下面我们一起探讨一下关于内存的数据保护技术:
奇偶校验技术
我们知道,一般的个人计算机上也有使用内存的检错技术,称为奇偶校验(Parity Checking),奇偶校验实现的方式比较简单,即在传送字符的各位之外,再传送1位奇/偶校验位,可采用奇校验或偶校验。这种技术能够检测出信息传输过程中的部分误码(1位误码能检出,2位及2位以上误码不能检出),由于其实现简单,在中低端领域到了广泛使用。同时,由于其检错方式过于简单,因此它只能发现单比特错误,而且不能纠错,在发现错误后,只能要求重发。
ECC技术
而服务器内存中,由于对可靠性的要求要高得多,所以都采用ECC技术。ECC技术除了可以检测并纠正单比特错误外,还可以检测出2~4比特的错误。当发现多比特错误时,ECC内存产生一个不可屏蔽的中断,通知系统数据出现错误。在ECC编码方案中,每个数据块有一个8比特的校验用的数据,用于纠正单比特的错误。每次把数据写入内存时,ECC采用特殊的算法生成校验码。该算法把所有的校验和累加起来,得到一个校验和(Checksum),该校验和与数据存储在一起。当从内存中读取数据的时候,需要重新计算校验和,并且与原来的校验和进行比较。如果计算出的校验和与原来的校验和相等,那么说明存储的数据是正确的,可以继续下一步工作;如果与原来的校验和不相等,那么说明存储的数据是错误的。这时,将把出现错误的数据隔离起来,并且报告给系统。如果出现的是单比特错误,那么可以对其进行纠正,输出正确的数据,系统继续正常工作。
高级ECC技术
ECC内存对于许多应用可以提供充分的保护,但是,随着内存容量的增加,ECC内存保护的效率开始降低。为了解决这一问题,HP公司开发了高级ECC内存技术,并得到广泛应用。标准的ECC内存在从DIMM内存读取数据时,只能发现单比特的错误,而高级ECC内存可以发现DRAM内存芯片中的多比特错误,从而可以纠正DRAM内存芯片的问题。在高级ECC内存技术中,有4比特的存储设备,每个芯片对应一个数据字中的4位。这4比特都和一个ECC设备相连,因此如果一个芯片的数据发生错误,则产生4个独立的单比特错误,从而可以得到纠正。
因为每个ECC设备可以纠正单比特的错误,所以高级ECC技术实际上能够纠正发生在同一个DRAM芯片中的多比特错误。因此,高级ECC技术可以提供很好的内存数据保护。
内存热备技术
这是一种基于冗余备份思想的技术,在进行内存热备时,做热备份的内存在正常情况下是不使用的,也就是说系统是看不到这部分内存容量的。每个内存通道中有一个DIMM不被使用,预留为热备内存。芯片组中设置有内存校验错误次数的阈值, 即每单位时间发生错误的次数。当工作内存的故障次数达到这个“容错阈值”,系统开始进行双重写动作,一个写入主内存,一个写入热备内存,当系统检测到两个内存数据一致后,热备内存就代替主内存工作,故障内存被禁用,这样就完成了热备内存接替故障内存工作的任务,有效避免了系统由于内存故障而导致数据丢失或系统宕机。这个做热备的内存容量应大于等于所在通道的最大内存条的容量,以满足内存数据迁移的最大容量需求。
内存镜像技术
内存镜像(Memory Mirroring)技术的工作原理与硬盘的热备份类似,为了确保当某个DIMM存储芯片失效的时候,内存保护技术能够自动利用备用的比特位自动找回数据,从而保证服务器的平稳运行。该技术可以纠正发生在每对DIMM内存中多达4个连续比特位的错误。当出现随机性的软内存错误,可以通过使用热备份的比特位来解决;如果出现永久性的硬件错误,也将利用热备份的比特位使得DIMM内存芯片继续工作,直到被替换为止。内存镜像会将内存数据做两个拷贝,分别放在主内存和镜像内存中。系统工作时会向两个内存中同时写入数据,因此使得内存数据有两套完整的备份。由于采用通道间交叉镜像的方式,所以每个通道都有一套完整的内存数据拷贝。
内存镜像需要内存中的所有数据均存有副本,系统正常运行时所使用的是原本,而当其中一份宿主失效时,另外那份就随即补替工作,有效防止了由于内存通道故障导致的数据丢失,极大提升了服务器可靠性。这同磁盘系统中的RAID 1非常相似,因此,实现这一功能需要双倍的物理内存,而实际容量的利用率只有50%。
内存镜像跟内存热备的区别是:内存镜像主要是希望通过备份内存上的数据来恢复出错内存的数据,而内存热备则是彻底用备份内存接替出错内存的所有工作。
内存刷洗技术
内存刷洗(Memory Scrubbing)技术—系统会间歇地测试内存的存取错误,当错误被侦查到时,系统会向用户发出警告,并调用备用内存替换出现错误的部分,而这一替换任务便交给在线备用内存(On-line Spare Memory)技术来完成—在原本中有一部分是保留内存,不能够用作常规性的操作,当使用的内存块出现错误时,保留内存便被激活以代替其工作。
可以看到,内存镜像技术是完整和全面的保护措施,而内存刷洗技术则是对原本内存可靠性的保证。当然,内存刷洗技术也会同时对副本内存进行操作,试想倘若没有内存刷洗技术的支持,副本内存中的数据又如何得到保证,连副本都不能确保正常,那么内存镜像意义何在呢。
双通道内存互备技术
这种技术是针对双通道内存工作模式而言的,在Intel的Nocona平台北桥芯片E7520、E7525和E7320芯片组中融入了这种技术:当E7520的主板以双通道状态工作时,如果由于某种意外导致内存双通道失效,那么系统可立刻切换到单通道内存工作模式,此时虽然内存性能会大幅度下降,但却保证了系统的正常运作,而这一功能的实现也要归功于内存刷洗技术不断地侦查内存子系统的潜在错误。
特别值得一提的是IBM和HP在技术方面都比较勤于研究,因此他们的服务器上也使用了不少独家研发的专利技术,我们参考网上一些相关资料,为大家整理出IBM和HP在服务器内存方面的相关技术:
HP服务器内存技术
1.在线备份内存
工作原理类似于前面提到的内存热备技术,HP ProLiant服务器的ML 370、DL 380系列产品均采用在线备份模式。
2.热插拔镜像内存
工作原理类似于前面提到的内存镜像技术,HP ProLiant 500系列服务器可以同时支持在线备份和镜像内存两种模式。
3.热插拔 RAID内存
HP热插拔RAID内存技术允许用户在不关闭服务器的情况下对DIMM内存条进行热替换,这个操作和服务器的操作系统无关。另外,HP热插拔RAID内存技术还支持内存的热添加和热更新。HP ProLiant 760G2系列服务器可以支持这项技术。
IBM服务器内存技术
IBM企业级X-架构移植了4项IBM大型机的主要技术,Active内存则是其中之一。通过Active内存可以极大地提升服务器的容量、性能和可靠性,在工业标准服务器内存方面取得技术突破。
1、大容量高速度
Active内存中的“大内存容量(Large Memory Capacity)”和“高速内存存取(High-Speed Memory Access)”技术可以解决服务器内存系统性能不足的问题。大多数服务器由于受机器中内存插槽的限制,内存只能达到16GB。而Active内存所具有的大内存容量技术可使IBM eServer x系列服务器中的IA-64服务器的内存高达256GB(基于IA-32的MP服务器高达64GB)。eServer x系列服务器的高速内存存取技术使得前端总线的速度高达400MHz,这主要归功于更大的带宽和更短的反应时间。
2、热更换和热增加
这项技术类似于硬盘的热拔插功能,当用户需要更换失效的内存时,可以在服务器工作的时候进行,而不需要关掉服务器系统的电源,这就是热更换,在进行热更换的时候,不需要操作系统的任何支持;而实现热增加则需要在操作系统中提供对内存管理方面的进一步支持。
3、Chipkill内存
第三代Chipkill内存既可以纠正单比特错误,又可以纠正多比特的错误,因此服务器中可采用便宜的、工业标准的ECC存储器。和ECC技术比较,Chipkill内存技术更加有效,提高效率几乎达100倍,如果内存发生错误,Chipkill内存将自动和平稳地让出错的内存芯片离线,而服务器继续保持正常工作。由于Chipkill内存技术是通过内存控制器提供的,所以可以在标准的ECC DIMM内存上实现,并且对于操作系统是透明的。在IBM的x440和x360等系列服务器中,都采用了Chipkill内存技术。
4、Memory ProteXion
Memory ProteXion技术与硬盘的热备份类似,万一某个DIMM存储芯片失效的时候,采用Memory ProteXion技术能够自动利用备用的比特位自动找回数据,该技术可以纠正发生在每对DIMM内存中多达4个连续比特位的错误。万一出现随机性的软内存错误,可以通过使用热备份的比特位来解决。如果出现永久性的硬件错误,也将利用热备份的比特位使得DIMM内存芯片继续工作,直到被替换为止。在存储器纠错方面,Memory ProteXion技术比ECC技术更加有效。
5、内存镜像
当服务器存数据错误太多,导致Memory ProteXion和ChipKill内存无法完全正确修复所有数据时,则内存镜像技术就可以保证系统无差错运行。该技术工作原理跟前面介绍的内存镜像技术一致。
6、内存互备
IBM在Active内存中还实现了类似前面双通道互备的一种技术,当某个DIMM内存芯片出现错误导致内存条无法使用时,系统就会从另一个内存条上读写数据,因此服务器系统依然可以保持工作,然后管理员可以借助IBM的热更换技术将一条正常的内存条替换上去,系统又将按照原来的模式运行。