乱弹琴弦——服务器技术之热插拔

热插拔结构

我们都知道,任何事物都会有灭掉的一天,不过这一天你没法预料,就像人生一样,最终会走向死亡。不过随着 Clone(克隆)技术的发展,那么恭喜你,你的生命或者可以得到延续,尽管长生不老的幻想究竟是否可以实现还将是一个很大的问题。正如同《骇客帝国》所描述的那样,电脑产品和人也有共性,比如说人生病了,就像是电脑中了病毒,人体部位的更换有时候和电脑换配件也没什么两样。呵呵,扯远了,书归正传,以我们经常接触的服务器举例,即使再高端、再贵的服务器,也不可能永远不出问题。然而问题出现之后,你又该怎么办?其实真要遇到这样的问题,只要你能合理使用今天所要谈的服务器"热插拔"(Hot Plug)技术,那么你也可以做到轻松应对了。

热插拔技术就是指在电脑、服务器系统正常开机、思考的状态下,对已判断死刑部位件进行更换、切割或者添加新的配件–比如说人体的盲肠发炎了,那么在治疗无效的情况下,只有一个办法可以解决–切割。

热插拔技术其实并非神秘之事情。这个技术最早出现的在的地方大概就是SCSI硬盘。因为那个时候最容易坏的也就是它了,为了顺应这个需要,才有人提出热插拔这个革命性的设想。随着这一股风的猛刮,战火也就烧到了SATAII硬盘。SATAII硬盘在一定条件下,也支持Hot Plug了,只是需要一个简单的热插拔背板。加了这个简单的热插拔背板之后,OK,SATAII硬盘也摇身一变,高了一个档次。不过话又说回来,要用好热插拔技术,还是需要在特定的RAID条件下才能够很好实现的。在RAID0的情况下,热插拔技术是很难实现的,热插拔技术需要是RAID1、5、10等等的支持。热插拔功能的实现需要软、硬件的共同配合,包括有热插拔功能的硬件设备、支持热插拔的操作系统和用户界面、主板BIOS以及支持热插拔功能的PCI总线等等。其中PCI热插拔技术对于网卡、电源、风扇、SCSI设备等热插拔硬件的应用来说意义重大,因为它是这些设备得以实现热插拔功能的基础。

 

 

热插拔背板

 

 

热插拔机箱

随着服务器应用、技术的不断发展,企业对服务器的性能提出了新的要求。而且由于用户对网络的依赖性比以前更强,所以对服务器系统的稳定性、安全性要求也较以前大大提高。这样一来,对服务器其它配件支持热插拔技术的呼声也就越来越高了,因为现在服务器系统主要出现故障的配件不再仅是硬盘系统了,而更多的可能是内存、电源和风扇等。

下面是一个典型的风扇热插拔图,不过这个实现起来也简单的多,也基本上没有什么技术含量。从下面的图片可以看出,这个热插拔技术就是在风扇下面就多了一个和固定在机箱上面接触的接口而已。这样说,希望不要引起众怒,实话实说而已。

 

 

单个热插拔风扇

 

 

热插拔风扇

服务器中,服务器电源也是不可以小看的。许多磁盘阵列和其他架装系统含有多个电源输入,可以同时为这些设备提供电源支持。这样,一般情况下,只要出现故障的电路不超过一个,系统就能继续正常运行。因此,如果服务器中的所有硬件有2个或3个电源输入,则要求至少有两个或者三个独立的电路支持,以确保电路设计中没有单点故障。

 

 

热插拔电源结构示意图

内存备份

系统正常工作时,控制模块通过调整电流调节器/隔离器的导通程度,使系统均衡地使用每个电源模块–每个电源模块向系统提供相同的电流,这种工作模式称为"电流共享"。当其中某一电源模块出现故障时,切断电流调节器/隔离器,使故障电源从电源系统中隔离出来,并进行故障报警。冗余电源系统中的每个供电模块均可以热插拔,一旦某个供电模块损坏,就能在不停电情况下完成维修工作,而丝毫不影响系统的正常工作。为了满足热插拔的要求,冗余电源系统的控制模块应能够限制电源模块的电流突变,防止电源模块插入和拔出时对负载总线形成浪涌电流。

热插拔电源

现在,热插拔技术在确保服务器系统可用性已显得越来越重要了,已成为服务器的标准技术。尽管不同档次的服务器所支持的热插拔配件并不完全一样,但对于像硬盘、电源和风扇的热插拔技术支持已成为比较常见的服务器配置了。不过要实现内存的热插拔,问题就不是几句话能扯得清楚的。上面提到的风扇啊硬盘啊电源什么的,从原理上讲,还是与PCI相关的总线技术有关。但是内存要实现热插拔,就远不止这么简单。于是那些不安分的巨头服务器商就开始了自己的内存热插拔技术的研究,相继出台了这样和那样的技术,不过比起比起传统的ECC技术来说,性能是提高了不少。但是很多时候是整个内存条子损坏,那么前面的努力也就白费了。所以是不是也需要想硬盘一样,用条子做成内存备份、内存镜像来支持内存的热插拔呢?

答案是肯定的,但道路是曲折的。

在线内存备份是一种高级别的内存保护技术,需要注意的是必须成对安装双列直插式内存模块(Dual In-line Memory Module,DIMM)的内存条。每个DIMM必须是同一型号的,而且容量相同,这一点似乎和硬盘区别不大,否则内存系统的性能会受到影响。如果一共有三组内存条组,把C组作为在线备份内存,其内存容量总合要是A、B两组的容量总合之和。进行内存热备时,做热备份的内存在正常情况下是不使用的,也就是说在系统里是看不到C内存容量的。每个内存通道中有一个DIMM不被使用,预留为备份内存。芯片组中设置有内存校验错误次数的阈值, 即每单位时间发生错误的次数。当工作内存的故障次数达到这个"容错阈值",系统开始进行双重写动作,一个写入主内存,一个写入热备内存,当系统检测到两个内存数据一致后,热备内存就代替主内存工作,故障内存被禁用,这样就完成了热备内存接替故障内存工作的任务,有效避免了系统由于内存故障而导致数据丢失或系统宕机。这个做热备的内存容量应大于等于所在通道的最大内存条的容量,以满足内存数据迁移的最大容量需求。也就是象硬盘的RAID。

内存备份

另一种方式就是服务器内存镜像。在线备份内存模式只能对发生单比特错误的数据提供保护,像镜像内存方式还可以用来保护发生多bit错误的数据。正因为如此,内存镜像和内存热备份很适合于商业应用,因为它除了正常维护之外,不需要在内存检修上花费额外的时间。这种技术的出现,是由于随着服务器系统总线提高,内存传输的数据陪增,会出现不知什么原因遇到了许多内存保护和修复技术都不能完全修复的情况。诸如其热更换热添加、热插拔RAID内存,这些就相对好理解一些,不过需要注意的一点是,许多企业实际上实现的只是有限的内存热插拔,只能拔掉特定的内存条,而不能随意拔掉其他内存条。

内存镜像是将内存数据做两个拷贝,分别放在主内存和镜像内存中。系统工作时会向两个内存中同时写入数据,因此使得内存数据有两套完整的备份。由于采用通道间交叉镜像的方式,所以每个通道都有一套完整的内存数据拷贝。

内存镜像有效避免了由于内存故障而导致数据丢失。从下图中可看出,镜像内存和主内存互成对角线分布,如果其中一个通道出现故障不能继续工作,另一个通道仍然具有故障通道的内存数据,有效防止了由于内存通道故障导致的数据丢失,极大提升了服务器可靠性。镜像内存的容量要大于等于主内存容量,当系统工作时,镜像内存不会被系统识别。因此在投资方面,做内存镜像数据保护的投资是没有内存保护功能的一倍。

内存备份

热备和内存镜像是内存热插拔的必要条件,从理论上和技术上完全能够实现,那么,内存的热插拔相信也是以后服务器的发展必然。

当然,说了怎么多,有的知识也是借鉴了别人的,呵呵,如果你知道了,那么,就当是温故知新吧。记得聊斋里面有一篇文章记载,人的大脑也是可以更换的。那么,我就想,是不是服务器的CPU在运行的时候,也可以更换呢?还有主板上的电容?这个问题留给聪明的你来回答……….