为什么需要新的接口规范?
块接口将存储设备抽象为一个连续的逻辑块/页地址空间(一般为4KB粒度),支持随机读写和就地更新。该抽象能够隐藏存储介质特性,简化主机软件的存储管理,而且与传统机械硬盘的介质访问特性相匹配,因此长期以来块接口得到广泛使用。
然而,**SSD 正在替代机械硬盘成为主流存储设备,其存储介质闪存的操作特性与块接口抽象严重背离。**由于闪存具有先擦后写等特性,SSD 内部控制器采用异地更新的数据写策略,需要动态维护主机逻辑页到闪存物理页的地址映射表(4KB 粒度),并定期进行垃圾回收操作。
以上操作不仅会导致 SSD 产生大幅性能波动和写放大(降低寿命),而且需要配置大容量 DRAM 缓存(1GB每TB存储)和过量供应闪存空间(通常是盘容量的7%-28%),显著增加硬件成本。
SSD 接口发展
- 多流(multi-streamed):允许主机软件为写入数据标记生命周期,以便在 SSD 内实现冷热数据分离,提高垃圾回收效率。
- 开放通道(open-channel):将闪存的组织结构和操作接口完全暴露给主机,将 SSD 控制器极简化,而使得主机软件过于复杂,需要实现地址映射、垃圾回收、介质操作等。
- NVMe ZNS 接口:是在开放通道接口基础上发展而来,它的分区抽象与闪存访问特征相契合,能够大幅简化 SSD 控制器和降低 SSD 成本,而且能够向主机隐藏闪存介质特征与操作,便于使用。ZNS SSD 是完全不做 GC 的,并且 Zone 一般要和 SSD Blocks 大小对齐,以获得 0 WAF 收益
- **FDP技术**在multistream和ZNS的基础上提出了一种新的空间分配的方法。FDP将NAND的空间划分为Reclaim Unit(RU)粒度分配给Host的应用使用,Reclaim Unit一般为1个或者多个Erase Block。
ZNS-SSD
ZNS提供了Host更加灵活的空间配分数据,但是,Host需要接管zone空间的管理,包括Zone数据地址的映射,GC以及数据均衡等