2. Pure Storage硬件与软件栈解析
要理解Pure Storage的性能与容量规划,不能只盯着阵列的标称IOPS或裸容量,而必须把DirectFlash、NVMe over Fabrics、Purity操作系统和Evergreen订阅模式看作一个相互咬合的整体。它们分别决定了介质访问路径、前端接入方式、数据服务逻辑和生命周期成本,任何一项变化都会改变性能上限与容量利用率的计算方式。
DirectFlash:从“盘”到“全局闪存层”
传统全闪存阵列通常把SSD作为独立设备,由控制器通过SAS或NVMe逐个访问,每个SSD内部还有自己的FTL(闪存转换层),控制器无法精确掌握每个闪存块的物理状态。DirectFlash的做法不同:它把闪存介质直接暴露给Purity操作系统,由Purity统一管理全局FTL,控制器知道每个数据块落在哪个闪存die、哪个plane上。
这种架构带来的直接收益有三点。第一,写入放大显著降低,因为Purity可以按闪存擦除块边界组织写入,而不是让每个SSD各自做垃圾回收。第二,磨损均衡在全局范围内进行,不会出现某几块SSD先被写穿的情况。第三,性能一致性更好,因为不存在SSD内部GC导致的尾延迟尖峰。对容量规划而言,DirectFlash意味着不需要为每个SSD预留固定的OP(Over-Provisioning)空间,可用容量更接近裸容量,同时寿命预测可以基于全局写入量而非单盘写入量。
NVMe over Fabrics:前端接入的带宽与延迟
NVMe over Fabrics(NVMe-oF)把NVMe命令通过FC、RoCEv2或TCP扩展到网络,使主机可以像访问本地NVMe盘一样访问远端闪存。Pure Storage支持FC-NVMe和RoCEv2两种主流方式。FC-NVMe适合已有FC交换机的环境,无需改造以太网;RoCEv2则依赖无损以太网(PFC+ECN),单端口可达100Gb甚至更高。
在性能规划中,NVMe-oF的关键参数是队列深度和并发流数量。NVMe协议支持多达64K个队列,每队列64K条命令,远高于SCSI的单一队列模型。这意味着在虚拟化或数据库场景中,多vCPU、多数据库实例可以各自拥有独立队列,减少锁竞争。但网络侧必须保证无损,否则PFC反压会引入微突发延迟。容量规划时,NVMe-oF本身不改变容量,但它决定了前端带宽能否匹配后端DirectFlash的吞吐,避免“后端很快、前端堵住”的错配。
Purity操作系统:数据服务与性能策略
Purity是运行在控制器上的操作系统,负责卷管理、快照、复制、去重、压缩、加密和QoS。它采用全局共享架构,所有控制器都能访问全部闪存,不存在“控制器归属”导致的容量孤岛。Purity的元数据常驻内存,因此控制器内存大小直接影响可管理的卷数量和快照数量。
对性能影响最大的几个Purity特性包括:Always-On QoS可以按卷或按主机限制IOPS和带宽,防止某个租户打满阵列;快照与克隆采用元数据指针,几乎不占额外容量,但大量快照会增加元数据开销;去重与压缩默认开启,实际写入量取决于数据可压缩率。容量规划时,必须区分“逻辑容量”和“物理容量”:逻辑容量是主机看到的卷大小,物理容量是去重压缩后实际占用的闪存空间。如果数据可压缩率为2:1,那么10TB逻辑数据大约占5TB物理空间,但元数据和快照开销需要额外预留。
Evergreen:把容量规划从“一次性买断”变成“持续订阅”
Evergreen是Pure Storage的订阅模式,核心承诺是“控制器和闪存介质可以独立升级,且升级过程不中断业务”。传统存储的规划逻辑是:一次性买够3~5年的容量和性能,到期后整体更换。Evergreen把这种模式拆成两层:Evergreen//Forever包含控制器和软件订阅,Evergreen//Flex则把闪存也纳入订阅,按实际使用量计费。
对容量规划的影响非常直接。在买断模式下,你需要在第一天就预留未来3年的容量增长,导致前期过度采购。在Evergreen//Flex模式下,你可以按当前实际物理用量付费,当用量增长时再扩容,扩容过程通过添加DirectFlash模块完成,不需要数据迁移。性能规划同样受益:当控制器需要升级时,可以单独更换控制器,闪存介质继续保留,避免了“为了换CPU而扔掉闪存”的浪费。
四层联动下的规划示例
假设一个中等规模数据库场景:主机侧有8个数据库实例,每个实例峰值需要15,000 IOPS、平均读写比7:3、数据可压缩率约2.5:1。前端采用双端口100Gb RoCEv2,后端DirectFlash可用物理容量为50TB。
第一步,计算逻辑容量需求:8个实例,每个实例当前数据量2TB,逻辑总量16TB。按2.5:1压缩率,物理占用约6.4TB。加上快照保留30天、每天变化率5%,快照元数据开销约1.2TB。再预留20%的元数据和系统开销,物理容量需求约9.1TB,远低于50TB,说明容量不是瓶颈。
第二步,计算性能需求:8个实例合计峰值120,000 IOPS。Purity的Always-On QoS需要为每个卷设置上限,防止单实例抢占。假设每个卷限制为20,000 IOPS,总限制160,000 IOPS,留出余量。前端RoCEv2双端口200Gb理论带宽约25GB/s,按每个IO 8KB计算,120,000 IOPS对应约0.94GB/s,带宽充足。
第三步,检查Purity内存与元数据:16TB逻辑数据、8个卷、30天快照,元数据量通常在几十GB级别,控制器内存足够。但如果快照数量增加到数百个,就需要重新评估内存和元数据开销。
第四步,Evergreen扩容节奏:当前物理用量6.4TB,按每年数据增长30%计算,第一年结束约8.3TB,第二年约10.8TB。如果采用Evergreen//Flex,可以在用量达到70%时申请扩容,避免一次性购买50TB的浪费。
常见误区与判断依据
第一个误区是把逻辑容量直接当物理容量。Pure Storage的去重压缩是默认开启的,但压缩率取决于数据类型。数据库数据通常2:1到3:1,已经压缩过的媒体文件可能接近1:1。规划时应先用实际样本测试压缩率,再折算物理容量。
第二个误区是忽略NVMe-oF的网络损耗。RoCEv2需要无损以太网,如果PFC配置不当,会出现丢包重传,实际IOPS可能只有理论值的60%~70%。判断依据是查看交换机PFC统计和主机侧NVMe命令超时计数。
第三个误区是认为Evergreen可以无限扩容而不影响性能。扩容闪存模块会增加后端容量和带宽,但控制器CPU和内存是共享的。当卷数量、快照数量或QoS策略数量大幅增加时,需要评估控制器资源。判断依据是Purity的控制器CPU利用率和元数据缓存命中率。
综合来看,DirectFlash决定了后端性能上限和容量利用率,NVMe-oF决定了前端接入带宽和延迟,Purity决定了数据服务开销和QoS边界,Evergreen决定了扩容节奏和成本模型。四者共同作用,才构成完整的性能与容量规划依据。