在 TITAN 9 系列的型号表里,J960C 的后缀 C 代表透明压缩。它与同系列其他 Gen5 型号共享 PLP、端到端保护、Telemetry 等功能基线,却在数据通路上多了一段主机看不见的流水线:数据在写入 NAND 之前先经过盘内压缩引擎。这段流水线换来什么、付出什么、为什么值得单独立一个型号,是三笔需要分开算的账。
压缩做在 FTL 之下,主机才能真正无感
透明压缩的“透明”,指主机侧不需要任何改动:文件系统、数据库、驱动看到的仍是标准 NVMe 命名空间,逻辑块地址与块大小都不变。实现这一点的关键,是把压缩放在 FTL 之下——主机写入的逻辑块先进入压缩引擎,输出的变长数据段再由 FTL 分配物理位置并记录映射。也就是说,FTL 管理的对象从定长页变成了变长段,L2P 映射除了物理地址,还要记录每个逻辑块压缩后的长度与拼接边界。读路径反向执行:查映射、取出压缩段、解压、按原始块大小返回。整个过程对上层协议栈完全不可见。
收益的两端:有效容量与写放大
第一笔收益直观:同样的物理 NAND 可以承载超过标称容量的逻辑数据,数据可压缩性越好,有效容量放大越多。第二笔收益常被忽略:真正写入 NAND 的物理数据量变少了。写放大的分子是 NAND 实际写入量,压缩直接削减这个分子,垃圾回收需要搬运的有效数据也随之减少——这意味着更低的稳态写放大与更长的介质寿命。对写入密集的负载,这第二笔收益甚至比容量放大更值钱。
代价:流水线延迟、吞吐匹配与容量的不确定性
压缩不是免费的。写路径多了压缩一级,读路径多了解压一级,即便用硬件引擎实现,也要占用延迟预算——这正是低延迟 QoS 敏感的业务需要斟酌的地方。吞吐方面,压缩引擎的处理带宽必须与 Gen5 前端匹配,否则接口再快也会被压缩级卡住。更麻烦的是容量语义:有效容量随数据内容浮动,容量规划从一个确定数字变成一个区间,主机侧需要借助 Telemetry 关注物理空间水位,避免逻辑上还有余量、物理上已经写满的局面。
什么数据压得动,什么压不动
压缩收益完全取决于数据熵。数据库页、日志、文本、遥测记录这类结构化数据通常有可观的压缩比;而已经压缩过的图片、视频、归档包,以及任何在主机侧加密后写入的数据,熵接近上限,盘内压缩引擎几乎无利可图,还白付一遍流水线开销。值得说明的是,盘内加密(如 TCG OPAL)发生在压缩之后,两者并不冲突;冲突的只是主机侧先加密再写入的部署方式。
为什么是独立型号,而不是全线默认
既然收益明确,为什么不把压缩做成全线标配?因为上面几类代价不是所有客户都愿意付。延迟敏感的在线业务不希望数据通路多任何一级;容量必须精确核算的场景接受不了“区间容量”;负载以加密或已压缩数据为主的用户则纯粹承担成本而无收益。把透明压缩收敛到 J960C 一个型号上,让适配的负载——可压缩数据占比高、写入密集、在意每 TB 成本——主动选它,其余型号保持确定的容量语义与更短的数据通路。相比全线默认开启再让用户逐一关闭,这是更诚实的产品划分。
