2. Pure Storage架构与性能关键路径
要诊断 Pure Storage 的性能瓶颈,必须先建立一张“数据从主机到介质再返回”的完整路径图。Pure Storage 的两条产品线——面向块存储的 FlashArray 与面向文件和对象存储的 FlashBlade——虽然都基于全闪存与 NVMe 介质,但内部架构差异明显,性能瓶颈的落点也不同。本节从核心组件、数据路径、硬件与软件机制三个层面拆解,帮助你在后续监控中快速定位“慢在哪一段”。
一、FlashArray:双控制器 + NVMe 直连的块存储架构
FlashArray 采用双控制器(Controller)高可用架构,两个控制器通过 PCIe 非透明桥(NTB)互联,共享同一组 NVMe 盘位。每个控制器内部包含 CPU、DRAM 缓存、NVRAM 写缓存、PCIe Switch 以及前端主机接口(FC、iSCSI、NVMe-oF)。关键点在于:写操作先落到 NVRAM 并镜像到对端控制器,才向主机确认写入完成,因此 NVRAM 的写入延迟和控制器间 NTB 链路直接决定写性能下限。
数据路径上,主机 I/O 经前端端口进入控制器,由 Purity 操作系统(基于 Linux 的定制内核)处理。Purity 负责卷管理、去重压缩、快照、复制等全部数据服务。读请求若命中 DRAM 缓存则直接返回;未命中则通过 PCIe Switch 访问 NVMe 盘。由于去重与压缩在写入路径上完成,CPU 的压缩/哈希算力会成为高吞吐场景下的隐性瓶颈。
二、FlashBlade:刀片式横向扩展的文件与对象架构
FlashBlade 采用刀片(Blade)横向扩展架构,每个刀片是一块独立的计算+存储单元,内含 CPU、DRAM、NVMe 介质和网络接口。所有刀片通过内部高速 Fabric 互联,由一组 Fabric 模块提供全互联背板。对外呈现为统一的命名空间,支持 NFS、SMB、S3 协议。
与 FlashArray 的双控对称不同,FlashBlade 的数据分布由分布式元数据与数据分片机制决定:文件或对象被切分后分布到多个刀片,元数据由专门的刀片或软件层管理。这意味着性能瓶颈可能出现在三个位置:客户端网络入口、Fabric 内部互联带宽、以及单个刀片的 CPU/内存。当某个刀片负载过高时,整体吞吐会被“最慢刀片”拖累,这是 FlashBlade 排障与 FlashArray 最大的思维差异。
三、性能相关硬件机制:哪些部件真正决定延迟与吞吐
在 FlashArray 上,写路径的确认点由 NVRAM 决定。NVRAM 通常由电池/电容保护的 DRAM 构成,写入延迟在微秒级,但一旦 NVRAM 进入保护模式(如电池故障),写性能会骤降。控制器间 NTB 链路承载写镜像流量,若镜像队列积压,写延迟会同步上升。PCIe Switch 的通道数与 NVMe 盘的队列深度共同决定读未命中时的并发能力。CPU 方面,去重指纹计算、压缩、加密(若启用)都消耗算力,高压缩比场景下 CPU 利用率可能先于磁盘带宽触顶。
在 FlashBlade 上,每个刀片的 CPU 和 DRAM 是本地资源,Fabric 是共享资源。当客户端并发访问大量小文件时,元数据操作会集中到负责元数据的刀片,形成热点;当大文件顺序读时,瓶颈更可能落在 Fabric 或客户端网卡。因此 FlashBlade 的性能监控必须同时看“全局聚合指标”和“单刀片分布指标”,只看平均值会掩盖热点。
四、软件机制:Purity 如何影响性能表现
Purity 操作系统在两条产品线上都承担数据服务,但侧重点不同。FlashArray 的 Purity 强调块级去重、压缩、快照、克隆、ActiveCluster 双活复制。这些功能在写入路径上串联执行:先做指纹计算判断是否重复,再压缩,再写入 NVRAM 和盘。开启去重后,随机写可能因指纹表查找而增加延迟;关闭去重则吞吐更高但空间利用率下降。这是性能与效率的典型权衡。
FlashBlade 的 Purity 更强调文件/对象语义、多协议支持、快照与复制。其数据分布算法决定分片如何落到刀片,若分片不均,会出现“部分刀片忙、部分刀片闲”。此外,FlashBlade 的读缓存策略与 FlashArray 的 DRAM 缓存不同,前者更依赖分布式缓存一致性,后者更依赖本地大缓存。
五、把架构映射到监控指标
理解架构的最终目的是知道“该看什么”。下表给出两条产品线关键路径与对应监控对象的映射,供后续章节采集指标时参考。表中指标为示例性方向,具体阈值需结合型号与业务基线确定。
| 产品线 | 关键路径环节 | 典型监控对象 | 瓶颈信号示例 |
|---|---|---|---|
| FlashArray | NVRAM 写确认 | NVRAM 健康、写延迟 | 写延迟从 <1ms 升至数毫秒 |
| FlashArray | 控制器间 NTB 镜像 | NTB 队列深度、镜像带宽 | 镜像队列持续积压 |
| FlashArray | CPU 数据服务 | CPU 利用率、压缩比 | CPU 接近饱和而盘带宽未满 |
| FlashArray | PCIe → NVMe | 盘队列深度、读未命中率 | 读延迟升高、缓存命中率下降 |
| FlashBlade | 客户端网络入口 | 前端端口吞吐、错误计数 | 端口打满、重传增加 |
| FlashBlade | Fabric 互联 | Fabric 带宽利用率 | 东西向流量接近上限 |
| FlashBlade | 单刀片资源 | 各刀片 CPU/内存/介质 | 个别刀片显著高于均值 |
| FlashBlade | 元数据热点 | 元数据操作延迟、分布 | 小文件场景延迟集中升高 |