SmartFTL 固态硬盘研报总结
Google SSD 历史与 SmartFTL 介绍
Google 自 2003 年开始使用 SSD,主要应用于内存卸载搜索场景。早期采用简单 PCIe 固态硬盘,后通过驱动器改进增量卸载功能。第三方 SSD 受益于行业优化,但 Google 发现 GC 效率存在差距,因此开发了 SmartFTL。
Google SSD 趋势与行业差距
Google SSD 发展趋势包括主机卸载储存、ECC、3D NAND、分叉、NAND 复杂性增加、平面生长、独立平面读取、程序挂起、内核旁路等。当前行业架构仅实现 Google 用例的一半,存在无数据位置控制、无应用程序提示群集文件系统、高度并行工作负载等问题,导致更高的 WAF 和因错误而死亡的跨闪存 RAID。传统硬盘命令单一,工作负载优化需要低错误率,标准接口和 Local SSD 并行性较低。
写入放大因子 (WAF) 问题
WAF 是工作负载和闪存供应 (OP) 的函数。例如,使用随机 4KiB 写入,~28% OP 和贪婪 GC 算法,WAF 为 ~2.5。WAF 减半可量化效益,减少 OP / 更高可用容量,节省 18% 资本支出,启用 2x 驱动器大小,7% 资本支出 / 15% 运营储蓄,双有效驱动寿命 0-35% 资本支出节省,启用 2 倍应用程序写入速率。
SmartFTL 解决方案
SmartFTL 目标是基线 SSD 储存,将闪存管理驱动责任和应用责任分离。SmartFTL 体系结构包括标准体系结构、应用程序、SmartFTL 库、SPDK / DPDK、vfio、PCIe、NVMe 驱动程序、主机 GC 模式支持、驱动器定位模式支持、Flash 后端。
SmartFTL 功能
- 将 IO 指令扩展定位至 NVMe
- 主机在 die 级别控制数据位置,访问每个 die 上的多个追加点
- 数据通过 LBA 寻址,无 LBA 限制
- 主机垃圾回收模式:可选的额外控制,包括垃圾回收的选择、目标和时间调整
- 两种新的操作模式:纯定位模式、主机管理的垃圾回收模式
- 可与现有的 NVMe 操作模式共存
SmartFTL 性能配置文件
OP 5% 对应 WAF 2.2,OP 25% 对应 WAF 2.7。应用可在读写性能和 WAF 之间权衡,纯随机 32MB 写操作的 WAF 无法体现 64-128 倍流隔离带来的好处。
SmartFTL 引擎盖下
- 应用程序写入 A、B、C、D、E,预期相同数据生存期
- 写入对象 0、1、n,条纹宽度选择
- 主机 SmartFTL 库压模写入平衡
- SSD 对象 RU 边界跟踪
- 使用 IO 指令写入驱动器
SmartFTL 定位模式写入寿命
定位模式本身有价值,若要使用 WAF 1.0,需要以最佳初始定位实现。
SmartFTL 主机 GC 模式写入寿命
- 应用程序写入
- 主机保持自己的地图
- noGC 信用选择 GC 候选人
- 地图更新问题
- 移动 Cmds
- 主机 CPU 和 DRAM
- writemove 驱动器
RAID 布局不兼容
驱动程序通常在 64 个 die 上以类似 RAID5 条带方式分布数据,写操作必须追加到条带中,无法选择特定块。分配或覆盖 1MiB 数据,释放 64 块中的 0.08%,对 512KiB 到 1GiB 范围内的对象重要,块级别相关生命周期对低 WAF 至关重要。
SmartFTL 适用工作负载
SmartFTL 有用的工作负载:
- 驱动层上方具有擦除编码
- 数据删除大小在 16KiB 和 1GiB 之间相关
- 64KiB 到 100MiB 单对象读取性能不必
- 实现完整的驱动器读取吞吐量,例如集群文件系统工作负载
呼吁采取行动
标准化和启用 SmartFTL,参与 OCP 存储工作组和 SSD 规格,与 SSD 供应商(三星、铠侠和英特尔)共同开发,通过 NVMe 标准化 SmartFTL 接口,开放源代码 SmartFTL 库,提供有用的应用程序挂钩/抽象。希望其他 SSD 用户发现资料有价值,解决常见问题,并希望听到反馈。