作者:杨子夜
Intel 存储软件开发工程师
主要从事SPDK软件开发工作
SPDK (Storage performance development kit[1][2][3]) 在2016年7月发布了第一款NVMe-oF target的代码,遵循了NVMe over fabrics 相关的规范 (specification) 。NVMe-oF target 是NVMe协议在不同传输网络 (transport) 上面的延伸。NVMe协议制定了本机高速访问PCIe SSD的规范,相对于SATA,SAS, AHCI等协议,NVMe协议在带宽, 延迟,IOPS等方面占据了极大的优势,当然在价格上目前相对还是比较贵一些。不过无可否认的是,配置PCIe SSD 的服务器已经在各种应用场景中出现,已经成为了业界的趋势。
此外为了把本地高速访问的优势暴露给远端应用, 诞生了NVMe-oF 协议。 NVMe-oF 协议中的 transport 可以多种多样, 诸如 Ethernet, Fibre Channel,Infiniband等。当前比较流行的transport实现是基于RDMA的Ethernet transport, Linux Kernel 和SPDK的NVMe-oF target 都支持, 另外对于FC的transport, Netapp基于SPDK NVMe-oF target的代码,实现了基于FC的transport[3]。
在这篇文章中,我们首先会讨论以下两个问题:
NVMe-oF target 是否一定是需要,有什么相应的替代品;
为什么要使用SPDK的NVMe-oF target, 和内核提供的实现相比有什么优势?
NVMe-oF target 是否是必须品
NVMe-oF target严格来讲不是必需品,在没有该软件的时候,我们可以使用iSCSI target 或者其他解决方案替换。由于iSCSI target 比较成熟和流行,我们有必要进行一下相应的对比,如表1所示。