背景:
SATA/SAS都是机械硬盘时代的产物,其中SAS主要在企业端应用,消费级市场基本少见。SATA/SAS带宽演进缓慢以及瓶颈,SATA 到3.0已经达到带宽极限6Gbit/s,后续发布的3.1-3.5都只是增加新的feature和改善兼容性稳定性等。SAS 带宽比SATA高很多,2019年发布的SAS 4带宽达到24Gbps,再加上SAS可以因为企业应用做冗余的双端口带宽可以翻一倍。
NVMe发展:
2009年Intel牵头Samsung,美光,DELL,Marvell,NetAPP,EMC等90多企业成立NVMe工作组,针对NAND型的固态硬盘制定新的标准。不像SATA/SAS那样从传输层到物理层整套的协议,NVMe只是应用层协议,可以包在很多不同的传输协议,NVMe over PCIe,NVMe over Fabrics,RDMA,TCP,光纤通道等等。
第一块NVMe SSD在2013年上市,出生基本上就从PCIe 3.0开始,流行了七八年。PCIe 3.0 每个lan 带宽8Gbps。最早NVMe出现半高半长(HHHL)形态作为加速卡使用,插在PCIe 插槽上一般是8lan,最大支持16lan。但是受限于PCIe槽位和热插拔等限制,很快就被U.2 (4 lan)接口淹没在洪流中。
2019年基于NVMe 1.4的PCIe 4.0 SSD逐渐开始发力,但是很快就进入PCIe 5.0的替换,只有4年左右过渡期。PCIe 5.0 一般使用2021年发布的NVMe 2.0协议,正好NVMe诞生10周年,增加了一些功能和整体架构的调整。
NVMe 2.0新增功能:
Namespace type: 原来只有block类型的IO command,因为增加了ZNS/KV类型,需要有一个标志来区别IO 类型。一个namespace仅支持1种类型I/O command set。
ZNS specification:
ZNS SSD 由OC(Open Channel)发展而来。核心思想都是把SSD底层接口开放给Host,OC由于要在Host端实现一个复杂的FTL来替代SSD内的FTL,但不同的厂商不同型号的SSD介质特性不同,OC必须要管理这些SSD之间的差异并不断维护,难以实现标准化。
ZNS保留SSD FTL NAND管理/错误处理等存储介质相关的操作,HOST FTL负责IO调度及GC。
1. 消除了盘内GC,相应的OP可以留给用户。
2. 使用Zone粒度进行映射,原来4k粒度映射需要千分之一容量的DRAM (4B 来表示4k的数据),ZNS不需要加载很大的映射表,只需要很少的DRAM来缓存数据,节省很大的成本。
3. sequentially存储在固态硬盘内的zone,从而减少对存储数据的重写和重新排列,减少硬盘的写放大,整体提升SSD的随机写入性能和寿命(life)。
4. 支持根据数据冷热程度进行分区。
KV command set:
传统KV型数据库,kv键值对需要经过文件系统,块设备驱动,再到SSD内部LBA映射到PBA,层层映射带来系统资源的消耗。随着PCIe 迭代,SSD性能的提高,这种消耗相对的就会凸显出来。
为此,三星开发出一套KV存储解决方案,包括KV SSD固件,KV Driver,KVDB。KVDB中的键值对绕过文件系统直接通过KV Driver写入到KVSSD上。同时也消除了Rocksdb LSM结构造成的写放大,提升了Latency/IOPS等性能及SSD寿命。
Endurance Group Management:
根据介质磨损属性进行划分,盘内可以根据CE/Die/Channel/NAND type划分,over fabrics复杂的存储系统下可以按SSD或服务器划分。
具体操作有 创建/删除 EG,创建/删除 NVM sets等。
划分EG/sets等的好处是:随机读写的延时降低并且波动更小,QoS更低并且增加幅度更加平稳。
Multiple Controller Firmware Update: 是对原有协议内容做了修改,更适合over fabrics等复杂存储系统。主要是对Domain的管理,对Domain的某个controller升级固件。
Shutdown enhancements: 也是对Domain的管理,对Domain的所有controller下电操作。
CRC expands the protection information: 原有端到端数据保护中,PI是8字节。(2.7 SSD data path), Guard是用于CRC校验的,2字节,16 bits。在over Fabrics的共享存储环境下,数据传输的更远,传输环境更复杂,受到的干扰更多,因此增加32/64 bits CRC来提供更精确的数据完整性检测。
Lockdown: NVMe 2.0协议中是Optional,可以锁定admin命令,防止用户修改SSD的配置参数,减少数据被破坏的风险。
比如lockdown format命令,SSD就会在收到format命令时不会执行,这样保证了用户数据被删除的风险。NVM subsystem重置,或者lockdown重置后恢复。
Copy: NVMe 2.0协议中是Optional,主要用于ZNS或文件系统发起的垃圾回收,Host把多个LBA区域数据拷贝到一个连续的LBA区域。但是只需要更新L2P映射表,不用数据搬移,也没有写放大,也不会对SSD性能造成影响。
Rotational Media: NVMe 2.0协议中是Optional。添加对HDD的支持,并更新HDD支持所需的功能、管理功能和其他增强功能。
新接口形态:
硬盘的3.5",和后来流行的U.2 (2.5") 其实也都是机械硬盘时代的产物。从PCIe 5.0开始,之前的接口形态受限于性能和功耗等等因素,Intel研究新的接口形态EDSFF,E1.S/L, E3.S/L。之前U.2只能4 lan,新形态增加支持8 lan (E1)/16 lan。Samsung也有主导的接口形态,NGSFF,NF1 (m.3)。这些新的接口形态并不是替换原有的3.5"/2.5",就像NVMe SSD并没有完全取代SATA/SAS一样,会是一种共生状态,并需要一个较长的时间占据主流。
有时间再画图补上。