服务器上的移植手术 热插拔技术

我最早接触热插拔这个词,是我在一次连接HDMI接口的时候听到的,当时我正拔一个正在工作的投影仪的HDMI线,于是有人告诉我HDMI不能热插拔,他跟我解释说HDMI连接使用一段时间后会很热,热插拔的话容易损坏接口。所以热插拔在我脑海里一直被理解为是某个动作,但在接触了服务器之后,才知道这犹如外科手术般的技术没我想象中的那么简单。 

什么是热插拔

热插拔指的其实就是“带电插拔”在电脑或者服务器运行的时候,在不关闭系统的情况下插入或拔除支援热插拔的周边装置,而不会导致主机或周边装置烧毁并且能够即时侦测及使用新的装置,这就是热插拔技术。下面我们就从几个主要的热插拔“部位”来说一说。

热插拔部位之硬盘

热插拔这个技术最早出现的地方大概就是SCSI硬盘了。因为那个时候最容易坏的“部位”就是这里,于是就有人提出了热插拔这个革命性的设想。随着热插拔的不断成熟,热插拔硬盘已经成为服务器的标准配备。当然要用好热插拔技术,还是需要在特定的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甚至是服务器上的任何部件都可以实现热插拔。