游戏服务器可用性问题的简单分析
作为信息化建设中硬件架构不可或缺的游戏服务器一直以来都备受关注,同时,游戏服务器的更新换代也在见证着世界领先科技的发展历程,不论是最初的16位处理,还是后来红极一时的32位处理器,甚至包括如今同时支持的32位、64位的处理器以及即将到来的纯64位处理器年代,游戏服务器虽然历经千变万化,但有一点一直是永恒不变的主题,那就是游戏服务器的可用性。一台游戏服务器如果连最基本的可用性都无法保障,它将无法登上时代的大舞台。
究竟什么是游戏服务器的可用性?它包括哪些内容?为什么如此受到大家的关注?下面我们将一一作答。
游戏服务器的可用性(Usability)其实就是要求游戏服务器具有高的可靠性、高稳定性、易于管理维护,不要时不时死机、出故障,尽量少出现停机待修现象。因为多数情况下游戏服务器是要求连续不间断工作的,所以它的性能稳定、可靠是非常重要,如果是普通的PC死机了重启,最多时会丢失一些本台电脑上的文档信息、少量的数据,不会造成巨大的经济损失。但是如果游戏服务器出现死机的情况,后果将不堪设想。因为许多重要的数据、资料、信息、记录都保存在游戏服务器上,尤其是许多网络服务都在游戏服务器上运行,一旦游戏服务器发生故障,将会造成大量数据丢失、许多重要业务停顿,如代理上网、安全验证、电子邮件服务等都将失效,如果是需要计费的网络,将无法提供准确的计费数据,不但无法实现安全运营,严重的将造成整个网络的瘫痪,其损失是难以估量的。而易于管理和维护就不必说了,对于非专业的用户而言能够用最简单的管理去维护网内的所有设备是他们很开心的事情。所以综上所述,高可靠性、高稳定性和易于管理维护是游戏服务器可用性的具体体现。
但是仅仅提供了硬件不见得冗余是远远不够的,还需要一些硬件在线诊断技术的配合,才能使游戏服务器的可用性发挥至极致。比如热插拔技术,就是指有些部件可以在系统带电的情况下对部件进行插、拨操作。这非常重要,因为当我们发现一些部件已损坏,但因为提供了硬件冗余,所以系统仍能继续保持良好运行。我们需要把损坏的设备更换下来,如果没有热插拔技术,就必须关闭游戏服务器的电源才能进行,这样就会造成人为的游戏服务器停机。随意在航天联志的游戏服务器产品,绝大多数都采用了支持硬件热插拔的功能,比如在电源、硬盘、风扇、内存、网卡等。
在这里我们还需要提到内存纠错技术----ChipKill内存技术,这是一种新的ECC内存保护标准。随着基于Intel处理器架构的游戏服务器的CPU性能在以几何级的倍数提高,而硬盘驱动器的性能同期只提高了5倍,因此为了获得足够的性能。游戏服务器需要大量的内存来临时保存在CPU上读取的数据,这样大的数据访问量就导致单一内存芯片上每次访问时通常要提供4(32位)或8(64位)比特以上的数据。一次性读取这么多数据,出现多位数据错误的可能性会大大地提高,而ECC又不能纠正双比特以上的错误,这样就很可能造成全部比特数据的丢失,系统就很快崩溃了。
但是在游戏服务器的硬件架构的设计上如何来保障可用性呢?关键是要做到硬件冗余和硬件在线诊断技术。其中常见的硬件冗余包括:磁盘冗余、电源冗余和风扇冗余,另外还有一些RAM冗余、PCI适配器冗余和网卡冗余等;而硬件在线诊断技术则需要包括:热插拔技术、内存保护技术、内存检查和纠错技术、内存镜像技术、内存热添加/交换技术、活动PCI技术、活动诊断技术等。
硬件冗余比较容易理解,就是对硬件的组成部件采用冗余备份的方式来保障因部分部件损坏引起的硬件系统的瘫痪,但是出于对设备成本考虑,所以不能做所有部件的冗余,一般都是对其中一些关键部件的冗余,比如说磁盘冗余技术,就是人们常说的RAID(磁盘阵列)技术,即:把多块独立的硬盘(物理硬盘)按不同方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据冗余的技术。在现在的游戏服务器产品中,基本上都采用了此项技术,支持RAID0、RAID1,使游戏服务器可以充分利用总线的带宽完成数据的操作,显著提高磁盘整体存取性能,最大限度的保证用户数据的可用性。同时现在的游戏服务器产品有些已经可以提供双电源和双风扇的冗余备份,还可以支持热插拔技术,这就给电源和风扇创造了一个轻松负荷的工作状态,减少了因电源或风扇的损坏而出现的系统内部问题,从根本上避免了游戏服务器的工作不稳定和停机。 #p#page_title#e#
内存镜像有效避免了由于内存故障而导致数据丢失。镜像内存和主内存互成对角线分布,如果其中一个通道出现故障不能继续工作,另一个通道仍然具有故障通道的内存数据,有效防止了由于内存通道故障导致的数据丢失,极大提升了游戏服务器可靠性。镜像内存的容量要大于等于主内存容量,当系统工作时,镜像内存不会被系统识别。因此在投资方面,做内存镜像数据保护的投资是没有内存保护功能的一倍。
内存热备(Sparing)进行内存热备时,做热备份的内存在正常情况下是不使用的,也就是说系统是看不到这部分内存容量的。每个内存通道中有一个DIMM不被使用,预留为热备内存。芯片组中设置有内存校验错误次数的阈值, 即每单位时间发生错误的次数。当工作内存的故障次数达到这个“容错阈值”,系统开始进行双重写动作,一个写入主内存,一个写入热备内存,当系统检测到两个内存数据一致后,热备内存就代替主内存工作,故障内存被禁用,这样就完成了热备内存接替故障内存工作的任务,有效避免了系统由于内存故障而导致数据丢失或系统宕机。这个做热备的内存容量应大于等于所在通道的最大内存条的容量,以满足内存数据迁移的最大容量需求。
现在一个游戏服务器上安装的内存逐渐增多,在系统中发生与内存有关的错误的可能性也在增大。所以在保障游戏服务器产品可靠性上,不单单采用了Chipkill修复技术,还包括内存保护、内存镜像和热交换性能等一些纯硬件方法,以及内存热添加技术等一些软件方法全方位的保障设备的可靠性,使整个系统的可用性得到了最大的体现。
内存镜像是将内存数据做两个拷贝,分别放在主内存和镜像内存中。系统工作时会向两个内存中同时写入数据,因此使得内存数据有两套完整的备份。由于采用通道间交叉镜像的方式,所以每个通道都有一套完整的内存数据拷贝。
在系统芯片组中设置有 “容错阈值”。如果任意内存达到了“容错阈值”,其所在通道就被标示出来,另一个通道单独工作。但仍然保持双通道的内存带宽。
众所周知,系统过热是影响游戏服务器稳定最主要的原因,怎样保证了游戏服务器在恶劣环境下长时间满负荷运转的温度正常?比如说采用了前进风的方式,与侧进风的方式不同,这种进风方式保证了用户实际应用过程中,让安装在机架上的游戏服务器能够有完全通畅的风源。冗余风扇只是提供了保证当一个散热风扇出现故障不能起到散热作用时另一个风扇会马上工作,保证了一定的散热能力。
现在有些游戏服务器产品更增加了独特的导风通路,可以集中并控制风流的方向。散热问题的解决在提高了系统的可靠性的同时,有效延长部件的寿命。