APP下载

U.2 NVMe SSD热插拔导致服务器蓝屏死机的解决方案

2019-11-18王爱梅胡泽志郑洪涛

电子技术与软件工程 2019年18期
关键词:蓝屏插拔死机

文/王爱梅 胡泽志 郑洪涛

1 前言

随着U.2 NVMeSSD固态硬盘的普及,如何能够实现方便地插拔硬盘而不会导致拔除硬盘的信号干扰CPU的正常工作而导致服务器蓝屏或死机,成为行业发展的需求。特别是针对数据中心业务,在服务器运行过程中,需要频繁的拔除或者安装硬盘,而为了保证业务的持续运行,服务器不能关机。如果不能很好的解决热插拔问题将严重影响数据中心的持续稳定运行。本文将探讨一种避免蓝屏死机的方案。我们先来认识下何为U.2 NVMe SSD固态硬盘,U.2 NVMe SSD固态硬盘指的是采用U.2接口支持NVMe协议的固态硬盘,而U.2是一种硬盘的接口形式,如图1和图2所示。U.2的接口相比其它的M.2/SATA/SAS接口插拔比较方便。

2 U.2 NVMe SSD接口插拔的优势

图1

图2

随着U.2 NVMe SSD的普及,为了插拔硬盘操作的方便性,NVMe SSD可以插在机箱的前面板安装有背板的槽位中,因此U.2需要像以前SATA/SAS硬盘一样方便地插拔,也就是要求支持热插拔功能。另外由于硬盘位于服务器机箱前面板上,数据线比较长,随着数据线的增长,信号传递过程中会衰减,这时候需要解决信号增强问题,retimer和switch都具有增强信号的功能。而由于硬盘位于前面板上,为了能够方便地拔除,需要有支持热插拔的功能。目前有支持热插拔同时能增强信号的方案是采用NVMeswitch卡,但是NVMeswitch卡的价格非常昂贵,限制了该方案的普及。而目前采用便宜的retimer卡对信号进行增强的方案又存在热插拔的局限性,因为retimer卡的方案不支持surprise hotplug,只能支持software managed hot plug,surprise hotplug是通过硬件管理的方式实现的热插拔;而software managed hot plug是通过软件管理方式,需要通过人为干预,首先需要通过操作应用软件完成reject,才能进行热插拔操作。如果热插拔都需要先进行软件操作的reject步骤,之后才能拔除硬盘的操作过程,又限制了操作的便捷性。而本文是致力于寻找一种采用便宜的retime卡来增强和调节信号,但又能支持surprise hotplug的方案。

3 避免U.2 NVMe SSD热插拔导致服务器蓝屏死机的解决方案

下面我们来介绍下该方案的实现原理和过程。

众所周知PCIe作为高速信号,随着链路长度的增加,信号中的高频分量会急剧损耗,这会导致信号幅度和上升沿的退化、信号带宽的降低,引起码间干扰从而导致眼图的闭合及抖动增加,最终在接收端产生误码,而安装链接retimer卡可以解决信号传输质量下降的问题,retimer卡是内部具有CDR(数据时钟恢复)的IC,实现数据的恢复之后再按照串行通道把信号发送出去,这样可以减轻信号的抖动。retimer 卡可有效提高数据吞吐量和扩展性,适用于数据密集型应用。其信号在经过retimer的时候,通过内部的时钟重构信号,使其信号传输能量增加,然后再继续传输。而且,retimer卡价格便宜,利于普及。

NVMe SSD作为一种新的高性能SSD极大地提升了存储介质的读写速度,同时缩短了CPU与存储介质之间的访问时间。对于U.2的NVMeSSD在提供热插拔的时候带来了使用上的方便,但是目前支持NVMeSSD的热插拔方案有两大类,一类是基于IntelPurleyCPU的VMD模块的;一类是基于CPUBios的。基于IntelVMD的方式虽然使用上相对比较简单,但是热插拔灵活性上却需要受IntelVMDdrive和操作系统驱动的限制,有很多自定义的功能和方式就很难实现。

图3

基于CPUBios的方式相对比较灵活,主要是通过SMbus管理来实现NVMeSSD的热插拔,这种方式在实现模式上主要是通过NVMe背板和主板CPU之间搭建直连的SMbus通道来实现。但是通过通用的PCIeslot实现比较麻烦,因为PCIeslot上的SMbus总线不是直接连到CPU上的,这样时效性上会有限制。另外,基于CPU Bios的热插拔方案还存在的问题是NVMeSSD的突然热插拔需要CPU在很短的时间内知道是否需要释放PCIe资源,如果在一定时间内没有释放,而且这时候又发生了NVMeSSD的突然拔出,很可能导致PCIe的中断干扰CPU的正常工作而出现服务器蓝屏或死机现象。

针对上述热插拔方案的问题,我们下面来探讨一种新的方案。还是基于CPUBios实现热插拔的方式,我们尝试对主板电路进行修改,通过在主板上设计PCIeSlot和CPU之间的直接SMbus总线,从而方便实现NVMeSSD的热插拔的管理。实现方式是在主板上增加一个I2C mux一分二的开关,其中一路还是通向BMC,作为默认路径,插入普通卡的时候就是用这个通道。当PCIe插槽上插入retimer卡时热插拔的信号则经过FPGA通往CPU,而一分二开关在不同模式下的切换通过FPGA的IO来控制。如图3所示。

图3展示的热移除过程是:当U2NVMe SSD从机箱背板上拔除时,拔除信号通过I2C信号线传递给Retimer卡,通过一分二的控制开关传递到FPGA,FPGA将拔除信号告知CPU这个信号只是发生了热移除,无需CPU进行处理,从而避免热拔除硬盘的信号不能被CPU及时处理,而大量信号的堆积容易导致CPU处理不过来,而出现蓝屏或死机的情况。

而文章开头时提到的采用NVMe Switch卡来实现热插拔的方案,相比retimer卡只有对信号提供增强不能对信号进行处理功能的限制,switch卡本身具有处理信号的能力,因此硬盘被热移除的信号,可以被switch卡处理掉,不会将干扰信号传递给CPU。但是缺点是switch卡的成本很高,是采用普通retimer卡的方案的10倍以上,因此难于被普及。

4 结语

本文提供了一种价格便宜,简单易行,便与普及的实现服务器U.2 NVMe SSD固态硬盘热插拔的方案,希望对U.2 NVMe SSD热插拔方案在服务器上的应用推广起到一定的帮助。

猜你喜欢

蓝屏插拔死机
电脑死机时在干什么
提醒
国产2 000 m级水下插拔电连接器问世
如何鉴别正版Windows
基于插拔手感需求的插套设计方法研究
基于插拔力试验的汽车插座端子模具优化设计
自作聪明
新汉 前插拔CoreTM-i系列无风扇工控机