高效SSD解决方案——FDP实现灵活数据放置
01 NAND寿命,企业级SSD厂商的重要难题
在大规模存储环境中,特别是多应用、多用户场景下,不同生命周期的数据流混合存放,导致SSD的写放大升高,同时频繁GC占用额外NAND写入带宽,会导致SSD写入性能在大幅下降,同时降低SSD的寿命。
为延长SSD寿命,业界一直追求“WAF=~1”的理想目标。近年来,Meta和Google提出的FDP(Flexsible Data Placement)方案证明了这一目标的可行性,NVME标准化组织也在考虑将其纳入标准协议。
02 FDP带来更高效&长寿的SSD
在传统SSD上,当多个应用的数据同时写入时,不同的数据可能混合写在同一个超级块上,每个应用的数据分散在不同的NAND芯片上。当一个应用的数据被删除时,会在超级块上产生碎片。为了重新利用这些空间,SSD需要进行垃圾回收(GC),将超级块上的有效数据搬移。由此我们可以看出,在传统SSD上WAF高的直接原因是不同应用数据被写到同一物理空间上。
如果将不同应用的数据写到独立的物理空间上,当删除一个应用的数据时,只需擦除并回收该应用的相关物理空间,就能减少GC的搬移数据量。FDP正是基于这个原理,提供高效的数据布局方式来减少WAF。
FDP模型引入了RU(回收单元)、RG(回收组)和RUH(回收单元句柄)三个概念。RU是可以独立擦写的物理单元,多个RU组成一个RG,RG之间的性能和可靠性互不影响。RUH是RU的写指针,当一个RU写满后,会切换到另一个RU上。主机可以通过IO命令,将不同应用的数据通过不同的RUH写入RU中,实现数据隔离。
FDP还提供了一些机制,让主机感知盘内写入数据情况,以辅助决定数据的写入和回收策略。例如,通过相关接口获取RU的粒度(RUNS)、当前RU的剩余写入量(RUAMW)、RU的预估更新时间(EARUTR)等信息。盘片还可以通过上报event(Host Events/Controller Events),通知RUH相关的异常情况。
03 大普微FDP解决方案
大普微Haishen5系列SSD支持FDP特性和多种FDP配置,系统可以根据不同业务类型在Namespace上使用不同的RUH,并为RUH配置不同的数据隔离属性。同时支持多Namespace共享RUH,多Namespace上如果业务数据属性相同可以使用同一RUH,方便系统对RUH的管理也节省了RUH资源。
我们用CacheLib测试了Haishen5的FDP功能的效果,测试结果如下:
从测试对比结果可以看出,用kvcache trace模拟真实场景业务,在FDP开启后CacheLib将BigHash和BlockCache业务进行了分流,WAF明显降低并且接近1。
FDP的应用推动了存储管理向更高效发展方向,相信这项技术在超大型数据中心和云服务商能得到普及,并带来可观的收益。