1.NVMe over PCIe
NVMe over PCIe是一种基于PCIe总线的非易失性存储器(NVM)子系统接口协议。该协议允许主机软件与NVM子系统进行通信,通常作为寄存器级接口连接到PCIe接口。它的实现需要依赖PCIe总线的硬件支持。PCIe总线提供了底层的数据传输功能,而NVMe协议则定义了主机与NVM子系统之间的通信方式和命令集。NVMe SSD在PCIe接口上使用NVMe协议,实现了更高的性能和更低的延迟,成为了现代高性能存储系统的主流选择。
2.NVMe over Fabric
NVMe over Fabrics(简称NVMe-oF)是一个相对较新的协议规范,它使用NVMe通过网络结构将主机连接到存储。该协议定义了使用各种通用的传输层协议来实现NVMe功能的方式。NVMe-oF的出现旨在解决NVMe本身的局限性,通过网络无缝连接闪存,释放性能优势,并取代传统的以磁盘为中心的存储区域网络(SAN)技术,如iSCSI和光纤通道。
NVMe-oF的协议模型继承了NVMe over PCIe的模型,包括Subsystem、Controller、Namespace等几个主要的概念。通过使用Fabrics(如RDMA或光纤通道)代替PCIe,NVMe-oF可以帮助主机访问节点外的NVMe SSD资源,从而极大地增强了灵活性和扩展性,将NVMe的低延时、高并发等特性从服务器级别扩展到整个数据中心级别。
3.为什么出现NVMe over Fabric
a.performance较高同时capacity更大的存储硬件,可以用于多个主机共享;
b.继续提高存储的performance,需要更快的Fabrics;
4.两者的区别
NVMe over PCIe和NVMe over Fabrics(NVMe-oF)之间的主要区别在于它们使用的传输层和连接机制。
a.传输层协议:NVMe over PCIe直接在PCIe总线上运行,使用PCIe协议进行数据传输。而NVMe-oF则使用网络Fabric(如InfiniBand、Ethernet(RoCE、iWARP)、FC等)作为传输层,将NVMe命令和响应在网络上进行传输。
b.连接机制:NVMe over PCIe的连接是点对点的,每个NVMe设备都直接连接到PCIe总线。而NVMe-oF则支持将NVMe映射到多个Fabrics传输选项,允许多个主机和存储设备通过Fabric网络进行通信。
c.中断机制:NVMe over PCIe通常使用PCIe中断来通知主机有命令完成或需要处理。而NVMe-oF则不使用中断机制,而是使用基于消息的模型在主机和目标存储设备之间进行通信。
d.命令和响应映射:NVMe over PCIe通过PCIe接口协议将命令和响应映射到主机中的共享内存。而NVMe-oF则使用基于消息的模型,将命令和响应封装在消息中通过网络进行传输。