灭掉南宋的汉将张弘范在《寄征衣》中说“欲寄君衣君不还,不寄君衣君又寒。寄与不寄间,妾身千万难!”其实在设计SSD的时候,我们也会有这种纠结的心情。
在今年的闪存峰会上,有家新创企业级SSD控制器芯片厂商CNEXLabs介绍了他们的Open Channel SSD概念,尽管他们的芯片还没有正式商用,不过我们先来一探究竟。
妾身千万难,FTL将栖身何处?
我们知道SSD控制器内部算法核心是FTL(Flash Translation Layer),把用户的地址LBA转换为SSD内部Flash芯片的物理地址。一般的消费级SSD控制器内置FTL,因为功能比较简单和统一,消费级市场经过WinTel联盟多年的锤炼,各种接口非常统一,大家的需求也很单一,只要支持Intel主板、Windows操作系统就可以了,大大简化了各种外设的硬件设计。
但是进入了企业级市场,真是群雄并立,有各种各样的客户和存储厂家,大家使用多种多样的操作系统和主板架构,甚至Google、Facebook、BAT都可以自己定义硬件、Linux底层。在这种情况下,FTL放在SSD控制器里面已经难以满足需求了,用户希望能够自定义FTL,根据自己的数据特点设计高效的FTL,比如:
- 搜索引擎可以把索引表和SSD物理地址对应起来;
- 日志数据可以直接流式写入SSD内部Flash通道;
- 数据库希望key-value能对应到SSD物理地址。
这种自定义后面如果有FTL,导致几大缺点:
- latency变长;
- 达不到最优的性能;
- 垃圾回收、磨损平衡等浪费了SSD的存储空间和寿命。
Open-Channel SSD架构
CNEXlabs的SSD控制器把SSD内部的通道开放给用户使用,这样控制器只负责Flash数据传输、ECC、RAID、垃圾回收引擎、错误处理、坏块管理等工作,而FTL层的设计由Host自己根据需求实现。这样也方便用几个控制器组成一个大的SSD,甚至阵列。
如下图,host端多了任务,latency只是稍微增加了一些。
在软件定义存储中的优势
- 可以集中管理多个SSD;
- 软件可定制;
- 根据需求定义FTL;
- FTL可以不断修改;
- 针对不同应用开发不同软件。
如下RocksDB例子,数据以日志形式直接写入Flash的块,有点像百度自己做的SSD。CNEXlabs还提供了Linux驱动,支持NVMe以及NULL Driver做FTL性能测试和Debug。
想要每天看一条SSD文章吗?扫一扫,微信关注我们!或者微信搜索公众号ssdfans关注。