No.
42018年2月February2018服务器系统故障的远程调试方法王志德,祝永新*(上海交通大学微电子学院,上海201100)摘要:研究利用一种通过服务器的基板管理控制器(baseboardmanagementcontroller,BMC)系统和平台环境式控制接口(platformenvironmentcontrolinterface,PECI),在不影响服务器本身系统资源且不破坏其运用环境的基础上,实现不需要额外的外部专业系统硬件或软件调试工具,只需要通过服务器带外的网络连接BMC系统,即可远程获取服务器出现故障时的系统处理器和系统平台控制单元(platformcontrollerhub,PCH)芯片组的内部芯片级寄存器以及相关服务器系统内关键设备或部件的数据或状态信息.
通过这些专业的数据信息,服务器系统管理人员就能够快速分析出服务器出现故障的真正故障点,对服务器的维护或维修做出快速且准确的判断或指令.
该设计有效加快了服务器系统的维护速度,降低了服务器的运行维护成本,提高了服务器的运行性能和效率.
关键词:信息处理技术;故障调试;服务器;平台环境式控制接口(PECI);基板管理控制器(BMC)中图分类号:TN919文献标识码:A文章编号:1674-2850(2018)04-0405-08RemotedebuggingmethodofserversystemfailureWANGZhide,ZHUYongxin(SchoolofMicroelectronics,ShanghaiJiaoTongUniversity,Shanghai201100,China)Abstract:Thispaperutilizesserverbaseboardmanagementcontroller(BMC)systemandplatformenvironmentcontrolinterface(PECI)toremotelyachievedataandstatusinformationofsystemprocessor,platformcontrollerhub(PCH)chipsetinternalchiplevelregisterandkeydevicesorcomponentswithinrelatedserversystemwhentheseverappearsfailurethroughserverout-of-bandnetworkconnectionwithBMCsystemwithoutadditionalprofessionalsystemhardwareorsoftwaredebuggingtoolsundernoinfluenceonsevers'ownsystemresourceandapplicationenvironment.
Theserversystemadministratorscouldquicklyanalyzetheserverfailure,findouttherootcause,andgivetheaccuratemaintenancejudgmentandactionsthroughtheprofessionaldataandinformation.
Thisdesigneffectivelypromotesthemaintenancerateofserversystem,decreasestheoperationalmaintenancecostofserver,andimprovestheoperationperformanceandefficiency.
Keywords:informationprocessingtechnology;failuredebugging;server;platformenvironmentcontrolinterface(PECI);baseboardmanagementcontroller(BMC)0引言随着现代社会的信息数据、移动终端及云服务的发展和壮大,越来越多的服务器运用于各行各业,如传统的银行、政府、电信行业和各种新兴的网络运营(网络金融、网络游戏、网络超市等).
2016年3月市场调研机构IDC称,上一年度阿里巴巴采购的X86服务器数量与巴西差不多,腾讯采购的服务器数量比韩国还多,百度采购的数量与新西兰出货量相当,奇虎360采购量与土耳其相当[1].
随着越来越多的服务器被运用,服务器的故障维护和故障分析将越来越重要.
传统的服务器管理方式存在时效性差、服务器宕机无法查找原因、严重占用服务器资源等问题[1],这不仅关系到服务器运行的正确性,更是涉及作者简介:王志德(1978—),男,硕士研究生,主要研究方向:嵌入式系统通信联系人:祝永新,副教授,主要研究方向:计算机系统结构、嵌入式系统、芯片系统级设计.
E-mail:zhuyongxin@sjtu.
edu.
cn第11卷第4期2018年2月中国科技论文在线精品论文406服务器运营客户的体验感,以及商业利益和发展.
传统的故障诊断是由系统管理人员在故障现场根据经验诊断故障原因[2],随着BMC在服务器的应用,虽然系统管理人员渐渐可以利用网络来获取服务器的事件日志和传感器的数据记录并进行分析,通过确认服务器的系统故障,再进行有针对性的恢复,但对一些比较棘手的顽症,例如系统宕机、蓝屏、自动重启等故障就不得不采用最为原始的传统方式,迫使系统管理人员或专业维护人员,带着相关的调试诊断工具赶至或送至故障服务器现场进行现场调试、诊断分析,即便如此,由于时差或环境因素,现场很多数据也没有办法很好地收集和保存.
表1为传统服务器故障调试方法和本文研究的故障调试分析方法的总结和比较.
表1系统故障专业分析方式比较Tab.
1Comparisonofanalysismethodsonsystemfailure性能传统调试方法本文调试分析方法操控性难,需打开系统外盖,热插拔外部调试诊断工具,类似ITP/XDP易,直接页面或命令行读取时效性不可控,某些时候需要等待数小时甚至1~2d只要网络具备就可以随时随地进入调试诊断理解性难,需要专业工程人员解读较难,重点部分重点解析,只需要专业工程人员协助解读远程操作不能可以硬件支持系统主机板需要配备或预留调试接口、专业XDP工具和软件及相应配置文件,特定设备价格昂贵需要系统支持BMC和PECI完整性故障环境容易被破坏;不同配置文件或权限读取结果不同,系统周边设备数据的获取相对完整可以保持问题的原有故障环境;根据特定设计和要求读取主要部分本文利用BMC在原有调试分析的基础上,重点研究如何能够使服务器维护工程人员在即使一些服务器棘手的顽疹发生时或极短的时间内也可以不通过额外的外接设备或专业设备,准确、快速地收集服务器的系统故障信息,使系统管理人员在故障发生的第一时间就可以通过BMC进行远程调试和分析.
1基本技术综述1.
1PECIPECI是由Intel提供的一种常用数字接口,只需要使用一根线就可以实现自身时钟与数据的传输,不需要任何其他的控制信号线[3].
PECI最早主要是为获取处理器的温度而设计的,PECI通过处理器中的数字温度传感器(digitalthermalsensor,DTS)获取处理器的核心温度.
随着PECI的优化和使用,其不仅与Intel的CPU相连接,也与Intel的一些芯片或芯片组相连接,并广泛地运用在一路或多路系统中.
只需要一根信号线的数据传输特性,使其在计算机系统主机板上类处理器和芯片组附近拥挤的线路设计中,灵活布设的优势突显.
PECI采用主从结构,接口支持的传输速度范围介于2kbit/s~2Mbit/s,而且指令简化;支持循环冗余校验(cyclicredundancycheck,CRC)位元组进行错误检验;每个传输信息开始都会同步最小化设备的时间要求.
自Intel酷睿CPU成功应用此项新技术后,PECI现已被普遍应用于服务器笔记本和台式机中.
本课题将通过PECI获取处理器核心温度、Intel处理器和芯片组的内部信息.
1.
2BMCBMC是一个在智能平台管理接口(intelligentplatformmanagementinterface,IPMI)标准规范下提供服务器系统智能管理的控制器[4].
实际上,BMC是一个独立系统,有自己独立的运算器、控制器、存储器、输入输出设备以及可在该系统上运行的各种应用程序.
BMC一般采用高阶精简指令集机器(advancedRISCmachine,ARM)的芯片组和相应的嵌入式操作系统,以Linux居多.
BMC系统通过IPMI管理服务器,为服务器管理实时状态监控、远程服务、系统日志记录和故障预警等一系列智能化功能.
Vol.
11No.
4February2018王志德等:服务器系统故障的远程调试方法4072系统故障调试分析2.
1系统故障调试工作原理服务器系统故障调试分析系统设计的硬件基础是服务器需要支持PECI和独立的服务器BMC系统.
通过服务器的BMC系统,利用其支持的PECI与服务器硬件系统中所支持的PECI设备相互连接,从而使BMC系统可以通过PECI访问到服务器系统中相应的关键设备或部件,例如CPU和PCH芯片组.
如图1所示,在BMC系统中新增一个服务器故障调试分析模块,BMC系统可以通过此故障调试分析模块获取和分析服务器系统中的一些主要部件或设备的实时运行数据,再通过客制化的IPMI命令调用、返回相应的数据.
这样服务器系统运维人员或服务器专业服务工程师就可以通过BMC系统得到故障服务器相应的一些关键系统信息,如CPU内部特殊模块寄存器(modelspecificregister,MSR)[5]数据、系统外部部件互连接口(peripheralcomponentinterconnect,PCI)设备设定信息等.
注:CLI—命令行接口(commandlineinterface);COM—串行通讯接口(clustercommunicationport);IPMB—智能平台管理总线(intelligentplatformmanagementBUS)图1系统故障调试分析结构示意图Fig.
1Schematicofsystemfailuredebugginganalysisstructure2.
2系统故障调试分析模块设计思路服务器系统故障调试分析系统分为软件和硬件两部分.
本文主要设计和讨论软件部分.
如图2所示,服务器故障调试分析系统软件由故障调试分析模块、IPMI控制模块和PECI驱动三部分组成,均集成在服务器主板控制管理系统BMC中.
IPMI控制模块是负责对外沟通的窗口;故障调试分析模块负责通过PECI具体执行和分析服务器系统中关键设备或部件的状态信息;PECI驱动则是故障调试分析模块通过PECI访问硬件设备的中间件.
总结来看,故障调试分析模块是整个系统中最为关键的部分,故障调试分析模块的设计有3个主要功能:1)服务器系统状态信息的收集;2)服务器系统错误信息的收集和分析;3)CPU内部介质访问控制层(mediaaccesscontrol,MCA)数据的收集和分析.
图2系统故障调试分析模块架构示意图Fig.
2Schematicofsystemfailuredebugginganalysismodule第11卷第4期2018年2月中国科技论文在线精品论文4083系统故障调试分析模块的实现与测试3.
1系统故障调试实现流程服务器主板控制管理系统通过PECI直接访问系统CPU和PCH等主要芯片,获取这些关键系统部件芯片级的内部运行状态数据.
在整个系统中有两种工作模式,一种是终端用户手动获取服务器当前状态下的服务器信息;另一种是BMC系统自动读取服务器系统中的系统信息.
终端用户获取服务器故障调试信息,可以通过网络、BMC命令行指令或BMC串口对BMC进行访问,IPMI控制模块解析到终端用户需要对系统进行故障调试分析,以便BMC调用故障调试分析模块.
如图3所示,系统故障调试分析模块工作流程如下:1)首先检测相应的PECI是否正常.
2)如果出现错误,直接报告PECI出错,结束故障调试分析;如果检测结果均正确,故障调试分析模块会解析IPMI控制模块传过来的调试指令.
3)解析出的调试指令如果是获取系统状态信息或解析系统错误信息,可直接首先通过PECI读取所有设备的状态信息或关键数据;如果是读取解析CPU的MCA信息,则直接通过PECI获取CPU内的MCA信息,再解析出来.
4)根据调试指令传递的用户访问方式,对获取的系统信息、解析的系统错误信息或CPU的MCA信息作为不同的返回方式,如果用户是以BMCWebUI的方式获取系统的信息,则最终将以文档的方式由网络存储,再下载传递,如果是以BMC的命令行或COM接口为访问方式获取系统的信息,将以命令行或字符串显示的方式输出希望获取的信息.
图3系统故障调试分析模块实现流程图Fig.
3Systemfailuredebugginganalysismoduleworkingflow当BMC收到服务器系统端发送的当前服务器出现非常严重的系统错误时,BMC将主动读取服务器系统的信息.
在本课题中,如果发生CPU内部错误(internalerror,IERR)[6]和内存控制器的不可纠正错误这两种情况,BMC会主动读取服务器的系统信息,并保存为对应时间的零时文档,以防服务器发生自动重启而破坏故障系统环境,避免无法知悉发生故障时的具体系统状态.
3.
2系统故障调试分析模块的设计与实现服务器系统故障调试分析模块功能的实现主要有三部分,以三个主函数实现,分别为SysDump()、Vol.
11No.
4February2018王志德等:服务器系统故障的远程调试方法409SysErrors()和MCADecoder().
3.
2.
1SysDump()函数SysDump()函数能够实现获取服务器系统中软硬件配置信息、处理器和PCH设备的运行状态、内部寄存器信息以及与它们相连的内外部PCI-E设备的相关信息.
SysDump()函数的部分代码截取如下:SYS_STATUSSysDump(VOID){…//--DumpCPUinformationandstatusfor(intCpu_Index=0;Cpu_Index
log临时文档中,返回函数读取运行状态.
PCH_Dump()函数:获取PCH内部设备接口如SATA、USB和PCI-E总线以及连接PCI-E设备相关信息记录在一个TPCH_info.
log文件中,返回函数读取运行状态.
3.
2.
2SysErrors()函数SysErrors()函数通过SysDump()函数读取系统信息,解析其中所有出错的信息并单独显示出来.
SysErrors()函数的部分代码截取如下:SYS_STATUSSysErrors(VOID){//--AnalysisCPUsErrorinformationfor(intCpu_Index=0;Cpu_Index
log文档,分析CPU内部相关的错误状态信息,针对CPU内部寄存器的状态值,例如处理器的IERR、MCERR以及集成在处理器芯片内的PCI-E总线的错误状态,保存能够解析的错误信息进入TCPU_err.
log临时文档中,返回函数处理第11卷第4期2018年2月中国科技论文在线精品论文410过程的状态值.
PCH_Errors()函数:通过解析利用SysDump()函数获取TPCH_info.
log文档,分析PCH相关的各种内部接口错误信息,例如SATA控制接口、PCI-E总线的错误信息等,保存能够解析的错误信息进入TPCH_err.
log临时文档中,返回函数处理过程的状态值.
3.
2.
3MCADecoder()函数MCADecoder()函数直接读取指定系统中CPU的MCA值,并做出相应的解析.
MCADecoder()函数的部分代码截取如下:SYS_STATUSMCADecoder(intCPU_index,intMCA_Max){inti=0;do{Status=RdMSR(CPU_index,MCA_ADD[i]);Decoder_MCA_Errors();i++;}while(i<=MCA_Max);}MCADecoder()函数直接读取指定系统中CPU的MCA值,并做出相应的解析.
目前实现的主要MCA如下:#DEFINEIA32_MC0_CTL0X400#DEFINEIA32_MC0_STATUS0X401#DEFINEIA32_MC0_ADDR0X402#DEFINEIA32_MC0_MISC0X403#DEFINEIA32_MC0_MISC20X280#DEFINEIA32_MC1_CTL0X404#DEFINEIA32_MC1_STATUS0X405#DEFINEIA32_MC1_ADDR0X406#DEFINEIA32_MC1_MISC0X407#DEFINEIA32_MC1_MISC20X2813.
3系统故障调试功能测试与验证本课题测试验证以IntelSkylakeX86的两路服务器为开发测试平台,此服务器主机板上集成了AST2500的服务器BMC芯片控制器.
测试验证的思路和方法:IntelSkylakeX86服务器为被测试的HOST主机,一台安装Linux操作系统的笔记本为测试终端,将X86服务器的BMC网络接口和笔记本接入同一网络,通过测试终端连接服务器的BMC,X86服务器的BMC软件被烧录为支持服务器系统故障调试分析系统.
通过利用IPMITOOL工具和操作系统的网络浏览器分别对系统故障调试分析系统做BMC的命令行和Web窗口登录及访问测试.
图4为通过IPMITOOL在Linux操作系统内,获取服务器系统当前处理器的标识信息,0X050652表示Intel(R)SkyLakeB-0版本的处理器,符合实际IntelCPU的标识信息.
实际上此功能可通过Intel支持PECIrdpkgconfig指令中的CPUIDread获取.
该测试的目的为验证故障调试分析模块的PECI、PECI驱动及BMC命令行的模式运行状态.
Vol.
11No.
4February2018王志德等:服务器系统故障的远程调试方法411图4系统故障调试分析模块命令行接口模式功能测试Fig.
4SystemfailuredebugginganalysismoduleCLImodefunctiontesting图5为通过IPMITOOL在Linux操作系统内,获取当前服务器系统中MCA的错误状态.
返回值0xE00000表示当前服务器系统有发生MCA错误.
图5系统故障调试分析模块命令行接口模式MCA错误检测功能测试Fig.
5SystemfailuredebugginganalysismoduleCLImodeMCAerrorcheckingfunctiontesting以上两个测试是测试终端通过网络使用IPMITOOL工具和客制化的IPMI命令,验证故障调试分析系统的功能是否正常.
由测试结果可以看出,通过PECI读取的处理器内部标识信息和检测MCA出错数据信息均正确.
但很明显,通过这种方式操作繁琐,解析也不容易.
与IntelCPU专业测试工具ITP/XDP读取和解析难度相近,唯一不同的是节省了专业工具的实物接入和时间,同时具有远程操作的便利性.
图6为系统故障调试分析网页登录后的显示,按功能有4个选择项分别选择下载不同的文档,最终文档以XML文件保存.
SystemLog实现的功能是保存和分析服务器系统中已关注的处理器、PCH等一系列的数据;SystemErrorLog实现的功能是保存和分析服务器系统中已出错的数据和信息;MCALog实现的功能是保存和分析系统中处理器内MCA的已出错信息;LastSystemLog实现的功能是保存和分析服务器在自动重启前的系统数据和信息.
图6系统故障调试分析模块网页模式功能Fig.
6Webmodefunctionofsystemfailuredebugginganalysismodule图7为SystemLog选项的XML文件保存显示,可下载的XML文档分为调试数据存档开始时间、服务器系统SMBIOS数据表[7]、处理器内部寄存器数据和其他状态值以及PCH芯片组和PCI-E设备配置信息.
测试终端访问BMC网页端的结果显示,在通过网络从BMC网页界面的窗口来看,服务器故障调试分析的特点明显,不仅可以读取服务器内部的处理器、PCH、PCI-E设备的数据,而且可以读取服务器系统配置信息中的SMBIOS表,并保存解析到同一个XML文件中,使整个故障数据的收集简单明了.
通过规范的整理和分析可知,这种方式操作简单、解析方便,服务器系统管理人员和设计人员只需要通过网络做按键操作就能够与IntelCPU专业测试工具获取相同的服务器主要芯片组的核心数据,并做出分析.
既节省了专业工具和时间,又可以远程操作,便捷性强.
第11卷第4期2018年2月中国科技论文在线精品论文412图7系统故障调试分析模块网页模式下载的系统信息文件Fig.
7SystemlogfileofsystemfailuredebugginganalysismodulebyWebmodedownloading4结论本文研究了服务器系统故障调试分析方法,基于服务器现在或传统的调试分析方法,充分利用服务器自带的BMC系统和PECI,研究和实现了只需要通过服务器自身的硬件和软件,不需要再通过一些昂贵的专业硬件工具和软件,就可以直接对服务器故障进行远程的相对专业的调试和分析,不仅充分利用了服务器自身的软件和硬件,突出自身性能价值,还节省了通过外部专业设备调试和分析的软件、硬件、时间及其他费用,更重要的是只要有网络就可以随时随地进行调试分析,快捷、实效性好.
本文实现了故障调试分析系统对服务器系统信息的获取、系统错误信息的解析、处理器内部MCA的专业解析和关键错误系统自动重启系统状态信息保存等方面的设计,为服务器管理人员提供了方便的调试分析方式,为整个服务器的系统故障调试和分析提供了有力帮助,加快了服务器的维护速度,提高了服务器的运行性能和效率.
[参考文献](References)[1]王栩浩.
基于IPMI的服务器管理系统的实现[D].
上海:东华大学,2016.
WANGXH.
ImplementationofservermanagementsystembasedonIPMI[D].
Shanghai:DonghuaUniversity,2016.
(inChinese)[2]童燕.
基于IPMI的智能平台管理系统的实现[D].
上海:东华师范大学,2008.
TONGY.
ImplementationofintelligentplatformmanagementsystembasedonIPMI[D].
Shanghai:EastChinaNormalUniversity,2008.
(inChinese)[3]Intel.
Platformenvironmentcontrolinterface.
PECI3.
1[R/OL].
2015[2015-05-20].
https://cdrd.
intel.
com/v1/dl/getContent/554767.
[4]IntelHewlett-PackardNECDell.
IntelligentplatformmanagementinterfacespecificationV2.
0Rev1.
1[R/OL].
2013[2013-10-1].
https://www.
intel.
com/content/www/us/en/servers/ipmi/ipmi-v2-rev1-1-spec-errata-6-markup.
html.
轻云互联怎么样?轻云互联,广州轻云网络科技有限公司旗下品牌,2018年5月成立以来,轻云互联以性价比的价格一直为提供个人,中大小型企业/团队云上解决方案。本次轻云互联送上的是美国圣何塞cn2 vps(免费50G集群防御)及香港沙田cn2 vps(免费10G集群防御)促销活动,促销产品均为cn2直连中国大陆线路、采用kvm虚拟技术架构及静态内存。目前,轻云互联推出美国硅谷、圣何塞CN2GIA云服务器...
今天有网友提到自己在Linux服务器中安装VNC桌面的时候安装都没有问题,但是在登录远程的时候居然有出现灰色界面,有三行代码提示"Accept clipboard from viewers,Send clipboard to viewers,Send primary selection to viewers"。即便我们重新登录也不行,这个到底如何解决呢?这里找几个可以解决的可能办法,我们多多尝试。...
目前,我们都在用哪个FTP软件?喜欢用的是WinSCP,是一款免费的FTP/SFTP软件。今天在帮助一个网友远程解决问题的时候看到他用的是FlashFXP FTP工具,这个工具以前我也用过,不过正版是需要付费的,但是网上有很多的绿色版本和破解版本。考虑到安全的问题,个人不建议选择破解版。但是这款软件还是比较好用的。今天主要是遇到他的虚拟主机无法通过FTP连接主机,这里我就帮忙看看到底是什么问题。一...