我们在使用计算机系统的时候,一个部件损坏如磁盘等,往往就需要断电之后才能操作。断电操作对于个人电脑可能没有什么影响,但是对于大型系统,一旦断电停止运营,影响巨大。这时候热插拔技术就派上用场了。热插拔是何方神圣,能解决能让系统在不断电的情况下完成各种损坏修复操作吗?我们一起来看一下。
所谓热插拔(hot-plugging或Hot Swap)即带电插拔技术,热插拔是允许用户在不关闭系统,不切断电源的情况下取出和更换损坏的硬盘、电源或板卡等部件,从而提高了系统对灾难的及时恢复能力、扩展性和灵活性等,例如一些面向高端应用的磁盘镜像系统都可以提供磁盘的热插拔功能。具体用学术的说法就是:热替换(Hot replacement)、热添加(hot expansion)和热升级(hot upgrade)。
从硬件层面讲,卡槽的 PCIe 引脚 PRSNT2#能够随着外接设备的接入和拔出得到不同的电平,从而触发热插拔事件, 如下图。PCIe3.0 协议规定了多个热插拔事件和热插拔支持功能,如 Attention Button,电源控制(Power Control) 等,各类服务器对热插拔的支持也不相同。最基础的,热插拔卡槽需要具备产生 Presence Status Change 事件的能力。
PCIe Capabilities 寄存器提供了热插拔相关配置和状态信息。在 PBlaze5 PCIe SSD接入系统后,可通过 lspci –t 查看 其对应的 PCIe 卡槽信息,下文中 bus:dev.function 均表示的是热插拔测试中与 PBlaze5 对应的 PCIe 卡槽。
需要指出的是,热插拔事件可以由 BIOS(ACPI)处理,也可以由操作系统处理,Memblaze 推荐由操作系统处理的方式,如果 BIOS 中有 ACPI hot-plug 选项,请选择否。此外,相对于 Linux 原生驱动,Memblaze 提供的驱动进一步完善对 hotplug 的支持,推荐使用。
系统中加入热插拔的好处包括:
1、在硬件电路系统中加入热插拔的第一个好处在于,用户或技术工程师可以在系统开机情况下安全的将损坏的模块移除,还可以在开机情况下做更新或扩充动作而不影响系统操作。这样就为在系统正常运转的情况下完成故障维修而提供了技术支持,不会耽误系统正常运行。
2、在硬件电路系统中加入热插拔技术,还有第二个好处,那就是能够减少故障分析的成本费用。由于目前热插拔零件的可靠度得到大幅度提升,工程师可以将它们用做断电器,而且因为热插拔能够自动恢复,有很多热插拔芯片为系统提供线路供电情况的信号,以便系统做故障分析,因此减少了成本。 正是因为具备了以上两个主要优势,因此热插拔技术近年来在一些需要高可靠度的系统中得到了广泛的应用,国内的通信电源系统基本上都已经具备了这一技术。同时,热插拔技术也同样可以在储存设备的电源供应中得到应用,因此这些设备需要在系统不断电的情况下更换储存设备或更新。
热插拔最早出现在服务器领域,是为了提高服务器易用性而提出的。在我们平时用的电脑中一般都有USB接口,这种接口就能够实现热插拔。如果没有热插拔功能,即使磁盘损坏不会造成数据的丢失,用户仍然需要暂时关闭系统,以便能够对硬盘进行更换。而使用热插拔技术只要简单的打开连接开关或者转动手柄就可以直接取出硬盘,而系统仍然可以不间断地正常运行。
热插拔非常适合用于高可靠度的系统,如通信电源系统、伺服器电源系统等,也可以用于储存设备的电源供应,因此这些设备需要在系统不断电的情况下更换储存设备或更新。热插拔也适合于体积较小但可靠度要求很高的电源系统,包括一些主要的规范,如PCI、PCIe、USB、1394等,因此应用相当广泛。