非易失性内存主机控制器接口规范NVMe(Non-Volatile Memory Express)是一个逻辑设备接口规范,它是与AHCI类似的、基于设备逻辑接口的总线传输协议规范。本文为您介绍NVMe协议的基本概念和使用场景。

基本概念

基本概念 说明 优势
NVMe NVMe为基于PCIe的SSD定义了丰富的命令集和功能集,目标是提高性能和效率,同时让广泛的企业级系统和客户端系统实现互操作。 NVMe专为SSD设计,它利用高速接口进行CPU和SDD间的数据通信,相比SCSI、virtio-blk等传统驱动协议速度更快、传输带宽更高。NVMe正在成为数据中心服务器和客户端设备的新行业标准。阿里云ESSD NVMe云盘具备NVMe协议的高性能以及企业特性,当前支持同时挂载到多台支持NVMe协议的ECS实例上,以实现数据共享。
多重挂载 即单个NVMe云盘支持同时挂载到同可用区内的多ECS实例,从而实现多台ECS实例对同一块NVMe云盘的并发读写访问。 多实例间通过共享一份数据,可有效降低存储成本,可在不移动数据的前提下提升业务扩展能力,并提升故障场景下恢复能力。多重挂载可普遍应用于数据库高可用、一写多读、分布式缓存、加速机器学习等场景。
PersistentReservation(PR) 属于NVMe协议的一部分,PR命令可以控制客户端访问云盘的权限,PR主要包括register、acquire、release、report四类命令,分别用于权限注册、权限抢占、权限注销和权限查询,通过配置不同云盘和客户端权限,可以有效的提升数据可靠性和安全性。更多信息,请参见NVMe PR协议 在多重挂载场景下,多个不同客户端同时写入一个云盘可能导致数据被写坏,PR可用精确地控制某个云盘的读写权限,从而确保计算端按照预期写入数据,例如PR能力在故障切换场景能确保失效节点不再写入数据,从而保证新节点上线后写入数据的正确性。
NVMe共享盘 是一种基于NVMe协议的支持多重挂载和PR特性的云盘,允许同时挂载到最多16个ECS实例上。 NVMe共享盘在数据库高可用、一写多读等场景具有广泛的应用价值,能够有效支撑基于传统SAN的高可用业务上云,例如Oracle RAC、SAP Hana、云原生数据库等场景。
共享文件系统 在多重挂载的场景下,保证多个挂载节点看到相同数据的文件系统,共享文件系统能确保写入的数据、创建的文件、修改的元数据能够实时同步到所有挂载节点,从而在文件系统层保证数据的一致性。 传统的ext3、ext4通常会缓存数据、元数据以加速访问性能,导致在一个节点下写入的数据、创建的文件、分配的磁盘空间信息被缓存在本地,无法被其他节点实时感知到,共享文件系统正是为解决该场景而存在,常见的共享文件系统包括 OCFS2、DBFS等。

使用场景

NVMe协议常见的使用场景包括NVMe云盘和NVMe共享盘。

NVMe云盘

NVMe协议正在逐渐成为新一代行业标准,当前越来越多的应用基于NVMe SSD搭建。支持NVMe协议的ESSD云盘称为NVMe云盘,NVMe云盘具备NVMe SSD相同的读写接口,能够无缝对接基于传统NVMe SSD的应用上云,并能充分享受云上的弹性资源、免运维、快照、高性能等特性。更多信息,请参见NVMe云盘概述

NVMe共享盘

支持多重挂载功能的NVMe云盘称为NVMe共享盘。NVMe共享盘可以帮助应用实现高可用、高并发、可扩展的业务,可以帮助基于传统SAN的业务无缝上云,共享盘常见的应用场景包括数据共享、高可用故障转移、分布式缓存加速、机器模型训练等。NVMe共享盘
  • 数据共享
    NVMe最简单的应用场景为数据共享,当数据被写入云盘后,其他节点均可以访问该数据,从而有效节省成本并提升读写性能。例如云上容器镜像场景,同一套系统的镜像通常类似,这样一份镜像可以被多个不同实例读取加载。数据共享
  • 高可用故障转移

    业务高可用是共享盘最常见的应用场景之一,传统基于SAN的数据库,例如Oracle RAC、SAP HANA以及云原生高可用数据库是其中的典范。实际业务使用过程中单点故障是常态,确保故障情况下业务连续性是高可用系统的核心能力,在云上存储和网络具备极高的可用性。而计算节点则经常受断电、宕机、硬件故障等影响,所以业务通常搭建主备模式解决计算的高可用问题。

    例如数据库场景,当主库故障时迅速切换到备库对外提供服务,实例切换后,可以通过NVMe PR命令释放旧实例的写入权限,从而确保旧实例不再写入数据影响数据一致性。如图所示,故障转移流程说明如下:
    1. 数据库主实例1宕机,业务停止。
    2. 下发NVMe PR命令,禁止数据库实例1继续写入数据,允许数据库实例2写入数据。
    3. 数据库实例2通过日志回放等方式恢复到和数据库实例1一致的状态。
    4. 切换数据库实例2为主实例,继续对外提供服务。
    故障转移
  • 分布式缓存加速
    NVMe共享云盘具备很高的性能、IOPS和吞吐,可以为其他中低速的存储系统提供性能加速能力。例如数据湖场景,数据湖通常基于OSS搭建,可同时被多个客户端访问,同时具备很高的顺序读吞吐、和追加写吞吐能力,但是其顺序读写吞吐和延迟很差,其随机读写性能较差。通过在计算和存储之间加速NVMe共享云盘作为缓存加速,可以极大地提升数据湖等场景的访问性能。缓存加速
  • 机器学习
    机器学习是另一个共享盘典型应用场景,在将样本标注写入后,会将数据拆分给多个节点进行神经网络的分布式计算,特别是在以GPU为计算资源的高性能机器学习场景,慢速存储很可能成为整个系统的瓶颈,此时利用NVMe共享云盘的高性能,能有效地加速整个机器模型训练的性能。机器学习