原文: Standardization for a Key-Value Interface underway at NVM Express and SNIA
By: Bill Martin from Samsung
在任何领域,制定规则的永远是赢家。作为SSD行业的领军企业,三星联合SNIA带来了关于Key-Value SSD的更新。
什么是Key-Value:
- 一种存储机制,存储数据时每笔数据都带有一个Key;
- Key可以是任意长度的字节单位;
- 数据也可以是任意长度的字节单位;
为什么需要Key-Value SSD?
传统硬盘和SSD通过块存储接口暴露其存储容量,存储固定大小的块(Block, 通常为512字节或4KB),配合48或64位的LBA地址。key-value可以支持可变大小的数值而不是固定大小的LBA,以及可变大小的值而不是固定的512B或4kB块。将key-value SSD用于key-value数据库,替换原有的软件Key-value方案,能从服务器CPU卸载大量工作负载。而且将key-value接口移动到SSD本身,意味着它可以与SSD的FTL紧密集成,以更低的写入放大率和更高的性能运行。
Key Value 的实现逻辑:
Application:最上层的各种应用
- SINA发布API供上层调用,API中规定了数据结构以及调用方式 目前0版本已经发布,而且同时支持(NVMe,SCSI, SATA)
- https://www.snia.org/tech_activities/standards/curr_standards/kvsapi
- 其中的Iterator功能,支持设备通过匹配指定Pattern并返回一组Key,并支持在这组值里进行List/delete操作。
- KV Wire Protocol: Host和Device之间协同,通过NVMe KV command来实现,目前NVMe工作组正在进行相关标准的制定,预计今年晚些时候发布;
- NVMe KC command暂时只支持长度为16Byte的Key,已经确定的命令包括: Store, Retrieve, Delete, List 和 Exist (与SNIA API中的命令对应)。下一步工作包括增加Key的长度,支持Append命令(将value 追加到 key 原来的值的末尾),Sorted Key等。
- 软件/驱动方面
- SNIA API 将在2个月内发布
- Samsung KV API, Kernel Driver
- Public github: https://github.com/OpenMPDK/KVSSD
- KV userspace driver: https://github.com/OpenMPDK/uNVMe
- KV Ceph: Ceph object storage designed for Samsung Key-Value SSD
- https://github.com/OpenMPDK/KVSSD
- https://www.snia.org/tech_activities/standards/curr_standards/kvsapi
框架搭建起来,下面就等着大家到碗里来了!