文档

NVMe协议介绍

更新时间:

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

基本概念

基本概念

说明

优势

NVMe

NVMe为基于PCIe的SSD定义了丰富的命令集和功能集,目标是提高性能和效率,同时让广泛的企业级系统和客户端系统实现互操作。

NVMe专为SSD设计,它利用高速接口进行CPU和SSD间的数据通信,相比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共享盘

在创建ESSD云盘时,可以为云盘开启多重挂载功能,开启了多重挂载功能的NVMe云盘称为NVMe共享盘。更多信息,请参见开启多重挂载功能

NVMe共享盘可以帮助应用实现高可用、高并发、可扩展的业务,可以帮助基于传统SAN的业务无缝上云,共享盘常见的应用场景包括数据共享、高可用故障转移、分布式缓存加速、机器模型训练等。

image
  • 数据共享

    NVMe最简单的应用场景为数据共享,当数据被写入云盘后,其他节点均可以访问该数据,从而有效节省成本并提升读写性能。例如云上容器镜像场景,同一套系统的镜像通常类似,这样一份镜像可以被多个不同实例读取加载。

    image
  • 高可用故障转移

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

    例如数据库场景,当主库故障时迅速切换到备库对外提供服务,实例切换后,可以通过NVMe PR命令释放旧实例的写入权限,从而确保旧实例不再写入数据影响数据一致性。如图所示,故障转移流程说明如下:

    1. 数据库主实例1宕机,业务停止。

    2. 下发NVMe PR命令,禁止数据库实例1继续写入数据,允许数据库实例2写入数据。

    3. 数据库实例2通过日志回放等方式恢复到和数据库实例1一致的状态。

    4. 切换数据库实例2为主实例,继续对外提供服务。

    image
  • 分布式缓存加速

    NVMe共享云盘具备很高的性能、IOPS和吞吐,可以为其他中低速的存储系统提供性能加速能力。例如数据湖场景,数据湖通常基于OSS搭建,可同时被多个客户端访问,同时具备很高的顺序读吞吐、和追加写吞吐能力,但是其顺序读写吞吐和延迟很差,其随机读写性能较差。通过在计算和存储之间加速NVMe共享云盘作为缓存加速,可以极大地提升数据湖等场景的访问性能。

    image
  • 机器学习

    机器学习是另一个共享盘典型应用场景,在将样本标注写入后,会将数据拆分给多个节点进行神经网络的分布式计算,特别是在以GPU为计算资源的高性能机器学习场景,慢速存储很可能成为整个系统的瓶颈,此时利用NVMe共享云盘的高性能,能有效地加速整个机器模型训练的性能。

    image
  • 本页导读 (1)