硬盘盒中SSD最早是Fusion-IO推出来的,以闪存卡的形式被互联网公司和数据中心广泛使用。硬盘盒中闪存卡一般作为数据缓存来使用,如果要在服务器中集成更多的SSD,闪存卡的形式就有局限了。闪存卡有以下缺点:
·插在服务器主板的PCIe插槽上,数量有限。
·通过PCIe插槽供电,单卡容量受到限制。
·硬盘盒在使用PCIe插槽上,容易出现由于散热不良导致宕机的问题。

不能热插拔。如果发现硬盘盒中PCIe闪存卡有故障,必须要停止服务,关闭服务器,打开机箱,拔出闪存卡。这对有成百上千台服务器的数据中心来说,管理成本非常高。
所以,硬盘盒PCIe SSD推出了新的硬件形式SFF-8639,又称U.2。U.2PCIe SSD类似于传统的盘位式SATA、SAS硬盘,可以直接从服务器前面板热插拔。
硬盘热插拔示意图

当服务器有很多个可以硬盘盒热插拔的U.2SSD之后,存储密度大为提升,更重要的是,U.2SSD不只可以用作数据缓存,关键数据也可以放在其中。通过多个U.2SSD组成RAID阵列,当某个U.2SSD故障之后,可以通过硬盘盒前面板显示灯确定故障SSD盘位,予以更换。同时,不会造成服务器停止服务或者数据丢失。
目前有很多服务器厂商都发布了有很多U.2SSD盘位的硬盘盒,有的是少数U.2SSD硬盘盒和多数SATA HDD硬盘盒混合,有的甚至是24个纯U.2SSD盘位。配备了高密度SSD的服务器对数据中心来说,可以大幅减少传统服务器的数量,因为很多企业应用对存储容量要求并不高,传统机械硬盘阵列的容量很大,却处于浪费状态。企业对硬盘带宽的要求更高,一台SSD阵列服务器能够支持的用户数是HDD阵列服务器的好几倍,功耗和制冷成本却少了好几倍。目前,房租和土地成本越来越高,能够在有限的数据中心空间中为大量用户提供服务,硬盘盒对电信、视频网站、互联网公司等企业来说非常重要。所以可以预期,随着闪存价格的逐年下降,配备SSD阵列的服务器会越来越普及。
我们来看看PCIe SSD热插拔的技术实现。传统硬盘盒SATA、SAS硬盘通过HBA和主机通信,所以也是通过HBA来管理热插拔。但是,PCIe SSD直接连到CPU的PCIe控制器,热插拔需要驱动直接管理。根据Memblaze公司公众号的介绍,一般热插拔PCIe SSD需要几方面的支持:
·硬盘盒PCIe SSD:一方面需要硬件支持,避免SSD在插盘过程中产生电流波峰导致器件损坏;另一方面,控制器要能自动检测到拔盘操作,避免数据因掉电而丢失。
·硬盘盒服务器背板PCIe SSD插槽:需要通过服务器厂家了解是否支持U.2SSD热插拔。
·操作系统:要确定热插拔是操作系统还是BIOS处理的,也需要咨询服务器主板厂家来确定。
·硬盘盒PCIe SSD驱动:不管是Linux内核自带的NVMe驱动,还是厂家提供的驱动,都需要在各种使用环境中做过大量热插拔稳定性测试,避免在实际操作中因为驱动问题导致系统崩溃。
拔出PCIe SSD的基本流程如下:
1)配置应用程序,停止所有对目标SSD的访问。如果某个程序打开了该SSD中的某个目录,也需要退出;
2)umount目标SSD上的所有文件系统;
3)有些SSD厂家会要求卸载SSD驱动程序,从系统中删除已注册的块设备和disk;
4)拔出硬盘盒SSD。