2. Pure Storage架构与数据库适配性

数据库对存储的要求与通用文件共享有本质区别:它关心的是小块随机 I/O 的稳定低时延、写入放大带来的寿命损耗、以及节点故障时业务能否无感切换。Pure Storage 的全闪存架构正是围绕这三点设计的。理解它的关键,不是记住几个产品名词,而是看清数据从数据库进程发出后,经过哪条路径落到闪存介质,以及每一层为数据库做了什么取舍。

全闪存架构:从"控制器为中心"到"介质为中心"

传统存储阵列把 SSD 当作更快版本的机械盘,控制器仍需处理复杂的 RAID 校验、缓存镜像和 LUN 映射,随机写路径上存在多次数据搬运。Pure Storage 的 FlashArray 采用双控制器 Active-Active 架构,两个控制器共享同一份全局命名空间,主机通过多路径同时看到两个控制器。任一控制器故障时,另一控制器接管其 I/O,主机侧多路径软件只需切换路径,不需要重新挂载卷。

更关键的是 Purity 操作系统的设计取向:它把闪存当作"必须被善待"的介质,而不是廉价块设备。Purity 在写入前先做数据缩减——全局去重、压缩、模式识别,再以固定大小的元数据块组织写入。对数据库而言,这意味着同一份数据页的多次写入可能被合并,写放大显著降低。下面这张图展示了数据库 I/O 从主机到介质的完整信号链,以及各层承担的核心职责。

数据库 I/O 到闪存介质的信号链与职责分层 数据库主机 Oracle / SQL Server / MySQL 8K 随机读 / 16K 随机写 NVMe over Fabrics FC-NVMe / RoCEv2 多路径 Active-Active Purity 操作系统 全局去重 · 压缩 · 模式识别 · 元数据组织 双控制器共享命名空间 · 写合并 DirectFlash 模块 控制器直连闪存裸片,无 SSD 内部 FTL 转换层 全局磨损均衡 · 可预测时延 · 介质寿命可视 3D NAND 闪存介质 按页读 / 按块擦 · 写前需擦除 数据库关注 随机读 IOPS 写时延 P99 故障切换 架构应对 去重降写放大 直连降时延 双活保可用 数据路径:主机 → 多路径 → 控制器 → Purity 缩减 → DirectFlash → NAND 注:图中时延与 IOPS 为架构示意,实际数值取决于型号与负载

DirectFlash:去掉 SSD 内部那一层"黑盒"

普通 SSD 内部有一个 FTL(Flash Translation Layer),负责逻辑地址到物理页的映射、垃圾回收和磨损均衡。问题在于,这个 FTL 对存储控制器是不透明的:控制器以为自己在顺序写,SSD 内部可能正在做垃圾回收,导致时延尖峰。数据库最怕的就是这种不可预测的 P99 抖动。

DirectFlash 的做法是让控制器直接管理闪存裸片,把 FTL 的职责上移到 Purity 中。控制器知道每个数据块在哪个裸片的哪个页上,可以全局调度写入和垃圾回收。带来的直接好处是:写入时延更平稳,磨损均衡在整阵列范围内进行,而不是每个 SSD 各自为政。对于数据库日志文件这种持续顺序写、又要求低时延的场景,DirectFlash 能避免传统 SSD 在写满后出现的"掉速"现象。

Purity 操作系统:数据缩减与一致性

Purity 是运行在控制器上的存储操作系统,它同时承担数据服务和管理平面。对数据库适配性影响最大的有三点:

  • 全局去重与压缩:数据库常有多份副本(生产、测试、克隆),Purity 在块级去重,相同数据页只存一份。压缩在写入路径上完成,不占用主机 CPU。
  • 写合并与元数据组织:随机小写先进入控制器缓存,按元数据块聚合后再写入闪存,减少对 NAND 的擦写次数。
  • 快照与克隆:基于元数据的写时复制,创建数据库克隆几乎瞬时完成,且不占用额外物理容量,适合开发测试和备份验证。

需要注意的是,去重效果高度依赖数据模式。如果数据库已经做了透明加密或压缩,Purity 的去重率会下降。实际规划时,应先用工具评估数据可缩减比,再决定容量配置。

NVMe over Fabrics:把本地 NVMe 时延延伸到网络

NVMe 协议本身为低时延、高队列深度设计,但最初只用于主机内部 PCIe 总线。NVMe over Fabrics(NVMe-oF)把 NVMe 命令封装到网络传输层,常见两种承载:FC-NVMe 和 RoCEv2(RDMA over Converged Ethernet)。

对数据库而言,NVMe-oF 的价值在于:主机看到的是 NVMe 命名空间,而不是传统的 SCSI LUN,命令路径更短,队列深度更高。在 RoCEv2 环境下,需要配置无损以太网(PFC/ECN),否则丢包重传会抵消低时延优势。一个合理的示例配置是:数据库服务器双口 25GbE RoCEv2,分别接入两台交换机,FlashArray 双控制器各接一台交换机,主机侧启用多路径,路径策略为 round-robin。这样单口或单交换机故障时,I/O 自动切换到另一路径。

NVMe-oF 的时延优势在队列深度较高时更明显。如果数据库并发很低,FC 与 NVMe-oF 的差距可能不大;但高并发随机读场景下,NVMe-oF 的队列深度优势会直接体现为更高的 IOPS。

高可用:从组件冗余到业务无感

数据库高可用不仅要求存储不宕机,还要求故障切换时 I/O 不中断、不丢数据。Pure Storage 的高可用设计分几层:控制器双活、电源与风扇冗余、DirectFlash 模块级冗余、以及 Purity 的介质故障检测。当某个闪存裸片或模块出现异常时,Purity 会把数据重建到备用空间,主机侧通常无感知。

实际运维中,应关注以下检查点:

检查项观察指标判断依据
控制器切换主机多路径状态切换后 I/O 无中断,路径自动恢复
写时延P99 写时延稳定在基线附近,无持续尖峰
去重率数据缩减比与规划评估值偏差不超过 15%
介质寿命剩余寿命百分比按写入量推算,满足生命周期要求

总结来说,Pure Storage 对数据库的适配性不是单一技术带来的,而是全闪存架构、DirectFlash、Purity 和 NVMe-oF 四者协同的结果:DirectFlash 解决介质时延可预测性,Purity 解决写放大和空间效率,NVMe-oF 解决网络时延和队列深度,双活控制器解决可用性。理解这条信号链,才能在数据库部署时做出合理的容量、网络和路径规划。