当我们在购买服务器时,通常只考虑了当时的预算以及配置,却忽略了日后升级配件的费用和一些问题。我们一般情况下不用太在意内存颗粒,几乎所有的服务器厂商都会建议用户采用自身服务器品牌的内存进行更换升级(51CTO推荐文章:服务器升级硬件篇——CPU)。
大家都知道服务器内存与普通PC机的内存有所区别,一般都带有ECC校验功能。通常情况下我们会选择与服务器品牌相同的内存品牌。但是实际上内存都是由现代,美光,尔必达,三星等厂商为服务器厂商生产的。
不同品牌的内存条
不同的内存条
升级时候还有一点不能忽略,除了选择同样频率的内存,既DDR3-1333Mhz,DDR2-667Mhz等。还应注意,服务器内存通常来说是成组购买升级的。既每个内存通道内,尽量要使用相同品牌、相同颗粒、相同频率、相同电压、相同校验技术(chipkill,ecc)、相同型号(udimm rdimm)的内存条。
这点尤其重要,否则服务器可能会报错。
服务器内存与普通内存有什么区别?
#p#
内存校验技术
一般来说也就是后面两种区别较大,通常来说服务器内存都带有校验技术,而普通PC机内存是不具备的。相对传统的ECC校验技术,chipkill又是何方神圣呢?
“探路者”探测器登陆火星
在十几年前,相传在遥远的火星上出现了名为“探路者”的怪物……
IBM引入大型机的技术为美国航天局(NASA)的"探路者"探测器赴火星探险而研制了Chipkill。它是IBM公司为了弥补目前服务器内存中ECC技术的不足而开发的,是一种新的ECC内存保护技术。
ECC内存技术虽然可以同时检测和纠正单一比特错误,但如果同时检测出两个以上比特的数据错误,则无能为力。但基于Intel处理器架构的服务器的CPU性能以几何级的倍数提高,而硬盘驱动器的性能同期只提高了5倍,因此为了保证正常运行,服务器需要大量的内存来临时保存从CPU上读取的数据。这样大的数据访问量就导致单一内存芯片在每次访问时通常要提供4(32位)或8(64位)字节以上的数据。一次性读取这么多数据,出现多位数据错误的可能性会大大提高,而ECC又不能纠正双比特以上的错误,这样就很可能造成全部比特数据的丢失,系统就会很快崩溃。IBM的Chipkill技术是利用内存的子结构方法来解决这一难题的。
随着技术的发展,这些年已经出现了关于内存更多的保障技术。#p#
热备内存—Sparing
热备内存技术
进行内存热备时,做热备份的内存在正常情况下是不使用的,也就是说系统是看不到这部分内存容量的。每个内存通道中有一个DIMM不被使用,预留为热备内存。芯片组中设置有内存校验错误次数的阈值, 即每单位时间发生错误的次数。当工作内存的故障次数达到这个“容错阈值”,系统开始进行双重写动作,一个写入主内存,一个写入热备内存,当系统检测到两个内存数据一致后,热备内存就代替主内存工作,故障内存被禁用,这样就完成了热备内存接替故障内存工作的任务,有效避免了系统由于内存故障而导致数据丢失或系统宕机。这个做热备的内存容量应大于等于所在通道的最大内存条的容量,以满足内存数据迁移的最大容量需求。#p#
内存镜像—Mirroring
内存镜像是将内存数据做两个拷贝,分别放在主内存和镜像内存中。系统工作时会向两个内存中同时写入数据,因此使得内存数据有两套完整的备份。由于采用通道间交叉镜像的方式,所以每个通道都有一套完整的内存数据拷贝。
在系统芯片组中设置有 “容错阈值”。如果任意内存达到了“容错阈值”,其所在通道就被标示出来,另一个通道单独工作。但仍然保持双通道的内存带宽。
内存镜像技术
内存镜像有效避免了由于内存故障而导致数据丢失。从上图中可看出,镜像内存和主内存互成对角线分布,如果其中一个通道出现故障不能继续工作,另一个通道仍然具有故障通道的内存数据,有效防止了由于内存通道故障导致的数据丢失,极大提升了服务器可靠性。镜像内存的容量要大于等于主内存容量,当系统工作时,镜像内存不会被系统识别。因此在投资方面,做内存镜像数据保护的投资是没有内存保护功能的一倍。
随着芯片组的发展,和内存通道技术的改变,热备内存和内存镜像实现的方式也在做着改变。像上文介绍的方式已经不适用于Nehalem这代产品的三通道内存和四通道内存产品了。而以上的两种方式为了实现更高的可靠性都会给整个系统带来在内存方面较大的花费,以及由此带来的整个内存系统可用数量下降。
#p#
关于UDIMM和RDIMM
UDIMM(Unbuffered Dual In-Line Memory Modules)无缓冲双信道内存模块。控制器输出来的地址和控制的信号直接到达DIMM的DRAM芯片上。
UDIMM的最大配置
不能支持服务器满配内存,也就是说不能达到最高容量。使用UDIMM内存时最大使用每通道只能用2个插槽,但支持3通道,所以只能每边插6条,一共12条内存,不能满配。性能相对会有下降,但是对于预算控制,是个不错的选择。
RDIMM(Registered Dual In-line Memory Module)带寄存器的双信道内存模块。控制器输出的地址和控制信号经过Reg寄存后输出到DRAM芯片,控制器输出的时钟信号经过PLL后到达各DRAM芯片。
RDIMM的最大配置
Registered内存本身有两种工作模式,即Registered模式和Buffered模式。在支持Registered工作模式的主板上工作时,Registered内存工作于Registered模式,这时主板上的地址信号和控制信号会比数据信号先一个时钟周期到达DIMM,送入Register芯片后会在其中停留一个时钟周期,然后在下一个时钟信号的上升沿从Register输出,与此时从主板上到达DIMM的数据信号一起同时传送到SDRAM。
当Registered内存工作在普通的主板上时,为Buffered工作模式,这时所有的信号也基本上是同时到达DIMM再同时传送到SDRAM,Register芯片这时在功能上只相当于一个简单的Buffer,其输入到输出之间是直通的,只简单的起到改善地址信号和控制信号的作用,时序上与Unbuffered内存是一样的。比起UDIMM来由于有了寄存器,所以RDIMM处理速度各方面性能都有不少提升,有2种工作模式,适合不同的主板,并且RDIMM支持最高配置,不会受到内存插的数量限制。
【编辑推荐】