2. Pure Storage硬件架构解析
Pure Storage全闪存阵列的硬件架构与传统“SSD装进盘位”的思路有本质区别。它并不是把标准NVMe SSD插入服务器背板,而是把闪存介质、控制器节点和内部互联作为一个整体来设计。理解这套架构,关键在于看清四个层次:介质层(DirectFlash模块与NVMe闪存颗粒)、控制层(控制器节点)、连接层(内部互联结构)以及冗余层(无单点故障的容错设计)。
DirectFlash模块:把闪存从“盘”变成“直连介质”
传统全闪存阵列使用商用SSD,每个SSD内部都有自己的FTL(闪存转换层)、DRAM缓存和垃圾回收逻辑。阵列控制器只能通过SCSI或NVMe命令看到“逻辑块”,无法直接管理底层闪存页。这带来两个问题:一是写放大和垃圾回收由SSD自行决定,阵列无法全局优化;二是SSD的寿命、延迟和性能波动对阵列不可见。
DirectFlash模块(DFM)改变了这一点。它本质上是把闪存颗粒、通道和基础电气接口封装成可热插拔的模块,但去掉了传统SSD中独立的FTL和复杂缓存,把闪存管理权上交给阵列控制器。控制器直接以闪存页/块为单位进行读写、擦除和垃圾回收,实现全局磨损均衡和更精确的I/O调度。从外观上看,DFM类似一块高密度闪存板卡,插入机箱后通过内部高速通道与控制器节点相连。
这种设计带来的直接效果是:写放大更低、延迟更稳定、寿命预测更准确。因为控制器知道每个闪存块的真实状态,可以在全局范围内决定把写入放到哪个模块、哪个通道、哪个die上,而不是被单个SSD的内部策略牵着走。
NVMe闪存介质与内部数据通路
DFM内部使用NVMe协议与控制器通信,但这里的NVMe是作为内部介质访问协议使用的,而不是对外主机协议。控制器节点通过PCIe通道连接到DFM,每个DFM内部再通过多通道并行访问闪存颗粒。典型结构是:控制器 → PCIe Switch → DFM → 多通道闪存控制器 → NAND颗粒。
这种层次化并行是性能的关键。单个NAND die的读写延迟在微秒级,但带宽有限;通过多通道、多die并行,可以把带宽叠加起来。Pure Storage的架构中,控制器会同时向多个DFM、多个通道发起I/O,形成高度并行的数据通路。对外表现为稳定的低延迟和高IOPS,对内则是精细的闪存页管理和调度。
需要强调的是,NVMe在这里承担的是“命令与队列”角色。控制器通过NVMe队列向DFM下发读写命令,DFM内部再转换为对NAND的页操作。由于FTL上移,地址映射、垃圾回收和磨损均衡都由控制器统一完成,DFM更像一个“闪存访问前端”,而不是一个独立智能盘。
控制器节点:双活与对称架构
Pure Storage阵列通常采用双控制器节点设计,两个节点同时在线、同时服务I/O,而不是主备模式。每个控制器节点拥有自己的CPU、内存、PCIe通道和NVMe队列,对外通过前端端口(FC、iSCSI或NVMe-oF)接收主机I/O,对内通过PCIe Switch访问所有DFM。
双活架构的关键在于“对称访问”。两个控制器都能访问全部DFM,而不是各自绑定一半介质。这样做的目的是:当任一控制器故障时,另一个控制器可以立即接管全部I/O,不需要重新映射或切换介质归属。代价是控制器之间需要高速同步缓存和元数据,通常通过专用互联链路完成。
控制器内存中保存着全局FTL映射表、写缓存和垃圾回收状态。两个控制器通过一致性协议保持映射表同步,确保任一节点都能正确解析任意逻辑地址到物理闪存页的映射。这种设计让故障切换时间极短,通常对主机表现为I/O短暂重试而非连接中断。
内部互联与冗余设计
内部互联是这套架构的“骨架”。控制器节点与DFM之间通过PCIe Switch Fabric连接,形成多条独立路径。典型冗余策略包括:
- 双控制器冗余:两个节点同时在线,任一节点故障时另一节点接管全部I/O。
- 双路径互联:每个DFM通过两条独立PCIe路径分别连接到两个控制器,避免单条链路或单个Switch故障导致介质不可达。
- 介质级冗余:数据以RAID或纠删码方式跨DFM分布,任一DFM故障后可通过其他模块重建数据。
- 电源与散热冗余:双电源、冗余风扇,保证单点电气故障不影响整机运行。
这些冗余不是简单堆叠,而是与数据布局协同设计。例如,数据条带会跨多个DFM分布,同时考虑控制器归属和PCIe路径,使任一控制器故障后,剩余控制器仍能通过另一条路径访问所有数据条带。这种“路径感知”的数据布局是Pure Storage架构中比较独特的部分。
实际部署中的观察点与判断依据
在实际部署或运维中,判断硬件架构是否健康,可以关注几个可观察点。第一,控制器节点状态:两个节点是否都处于Active状态,缓存同步是否正常。第二,DFM识别状态:所有DFM是否被两个控制器同时识别,是否存在“单路径可见”的模块。第三,内部互联错误计数:PCIe链路是否有可纠正或不可纠正错误增长。第四,冗余重建进度:当某个DFM被更换后,数据重建是否按预期速率推进。
例如,在更换一个DFM后,系统会进入重建状态。此时可以通过管理界面观察重建速率和剩余时间。如果重建速率明显低于预期,可能意味着内部互联带宽被其他I/O挤占,或者新模块的通道数未达到预期。这些判断依据都来自对硬件架构层次的理解,而不是单纯看“是否报错”。
总结来说,DirectFlash模块负责把闪存颗粒以最直接的方式暴露给控制器;NVMe作为内部命令协议,承担队列和命令传输;控制器节点负责全局FTL、缓存和I/O调度;内部互联提供双路径冗余;冗余设计则贯穿控制器、链路、介质和供电。这五者共同构成Pure Storage全闪存阵列的硬件基础,也是后续讨论数据服务、复制和扩展性的前提。