3. Purity操作系统核心机制
Purity 是 Pure Storage 全闪存阵列的控制器操作系统,它并不是把传统磁盘阵列的 RAID 与缓存逻辑简单搬到闪存上,而是围绕 NAND 闪存的物理特性重新设计了一整套存储管理机制。理解 Purity,关键要抓住一条主线:写入放大是闪存寿命与性能的共同敌人。全局闪存管理、数据缩减、垃圾回收、磨损均衡,本质上都是围绕“减少无效写入、均匀消耗闪存颗粒、维持稳定时延”展开的协同机制,而性能一致性保障则是这些机制共同作用后对外呈现的结果。
一、全局闪存管理:从“卷视角”转向“闪存视角”
传统存储在逻辑卷与物理磁盘之间建立固定映射,一个卷的写入往往落在固定的磁盘区域。Purity 采用全局闪存管理层,把整台阵列所有 SSD 的闪存块纳入统一资源池,逻辑地址到物理闪存页的映射由全局映射表维护。写入时,数据先进入控制器内存中的写缓冲,再以整条方式写入当前活跃的闪存块,而不是原地覆盖旧数据。
这种“始终写新位置、旧位置标记失效”的方式称为异地更新(out-of-place write)。它带来两个直接结果:一是单次写入不会触发闪存块的擦除,避免写放大;二是旧数据页变成“失效页”,需要后续垃圾回收统一处理。全局管理还意味着热数据与冷数据可以动态分布在任意 SSD 上,避免单盘热点,也为磨损均衡提供了全局调度空间。
二、数据缩减:去重、压缩与精简配置的协同
Purity 的数据缩减不是单一功能,而是精简配置(Thin Provisioning)、在线去重(Deduplication)与在线压缩(Compression)的组合。写入数据在进入闪存前会经过一条缩减流水线:先按固定块切分并计算指纹,指纹命中则只记录引用、不重复落盘;未命中的块再经过压缩,压缩后的数据才写入闪存页。
需要强调的是,去重与压缩的收益高度依赖数据特征。以下是一组教学示例参数,用于说明缩减比的计算方式,并非实测结果:
| 数据类型 | 原始容量 | 去重后 | 压缩后 | 综合缩减比 |
|---|---|---|---|---|
| 虚拟机模板与克隆 | 10 TB | 2.5 TB | 1.25 TB | 8:1 |
| 数据库数据文件 | 10 TB | 8 TB | 4 TB | 2.5:1 |
| 已压缩日志归档 | 10 TB | 9.5 TB | 9.5 TB | 约 1.05:1 |
可以看到,已压缩或已加密的数据几乎无法再压缩,去重收益也有限。因此评估缩减效果时,应基于真实业务数据采样,而不是套用厂商标称值。缩减后的数据块在闪存中仍以页为单位存放,缩减比越高,单位物理容量承载的逻辑写入越多,垃圾回收的压力也相应变化。
三、垃圾回收:失效页的回收与写放大控制
随着异地更新不断产生失效页,闪存块中有效页比例逐渐下降。垃圾回收(Garbage Collection,GC)的任务是:选择一个失效页比例较高的闪存块,把其中仍有效的页读出、写入新的活跃块,然后擦除该块并归还到空闲块池。这个过程会额外产生一次有效数据的搬移写入,即写放大。
Purity 通过多项策略控制 GC 开销:优先回收失效比例高的块,减少搬移量;在系统负载较低时提前进行后台回收,避免前台写入被 GC 阻塞;结合数据缩减,使进入闪存的有效数据更少,从源头降低 GC 频率。判断 GC 是否健康,可以观察阵列的写放大系数与空闲块水位:若写放大长期偏高、空闲块持续偏低,说明写入模式或容量水位需要关注。
四、磨损均衡:让每颗闪存颗粒均匀消耗
NAND 闪存的擦写次数有限,磨损均衡的目标是避免个别块被反复擦写而提前失效。Purity 的磨损均衡分为两层:动态磨损均衡在分配新块时优先选择擦写次数较少的块;静态磨损均衡则定期把长期未更新的冷数据从低磨损块搬出,让这些块重新参与轮换,防止冷数据“占着”低磨损块不放。
由于全局闪存管理已经打破卷与盘的固定绑定,磨损均衡可以在整阵列范围内调度,而不是局限在单块 SSD 内部。配合 SSD 自身的 FTL 层磨损均衡,形成控制器层与盘内层的双重保护。实际运维中,可通过阵列健康面板查看各 SSD 的剩余寿命百分比与擦写计数,若某盘寿命消耗明显快于同批盘,应排查是否存在局部热点或盘位异常。
五、性能一致性保障:机制协同后的稳定时延
上述机制如果各自为政,反而会造成时延抖动。Purity 的性能一致性保障体现在几个方面:写入路径上,数据先落控制器写缓冲并快速确认,GC 与磨损均衡在后台按优先级调度,避免前台 I/O 被长时间占用;读取路径上,全局映射表常驻内存,命中后直接定位闪存页,减少额外寻址;当阵列接近容量上限或 GC 压力上升时,系统会通过节流与调度维持可预测的响应,而不是出现断崖式性能下降。
下面这张图把 Purity 的核心机制串成一条数据路径,展示从主机写入到闪存落盘、再到后台回收与均衡的协同关系:
六、运维观察要点
在日常运维中,判断 Purity 这些机制是否处于健康状态,可以关注以下指标:数据缩减比是否与业务数据特征相符;写放大系数是否长期偏高;空闲块水位是否持续下降;各 SSD 的剩余寿命是否均匀;以及阵列在业务高峰期的时延曲线是否平稳。若缩减比突然下降,可能是数据已加密或已压缩;若写放大上升且空闲块偏低,通常意味着容量水位过高或写入模式过于随机,需要评估扩容或调整业务写入策略。