你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在虚拟机上启用 NVMe 和 SCSI 接口

注意

本文引用了 CentOS,这是一个接近生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。 有关详细信息,请参阅 CentOS 生命周期结束指南

NVMe 代表非易失性快速存储器,它是一种通信协议,可促进服务器和存储系统之间更快、更高效的数据传输。 使用 NVMe,可以以最高吞吐量和最快的响应时间传输数据。 Azure 现在支持 Ebsv5 和 Ebdsv5 系列上的 NVMe 接口,为所有 GP v5 VM 系列中的远程磁盘存储提供最高的 IOPS 和吞吐量性能。

SCSI(小型计算机系统接口)是用于在计算机和外围设备之间进行物理连接和传输数据的旧标准。 尽管 Ebsv5 VM 大小仍支持 SCSI,但我们建议切换到 NVMe 以提高性能优势。

先决条件

VM 配置中添加了一项新功能,称为 DiskControllerType,它允许客户选择其首选控制器类型 NVMe 或 SCSI。 如果客户未指定 DiskControllerType 值,则平台将根据 VM 大小配置自动选择默认控制器。 如果 VM 大小默认配置 SCSI 并且支持 NVMe,则除非更新为 NVMe DiskControllerType,否则将使用 SCSI。

若要启用 NVMe 接口,必须满足以下先决条件:

  • 选择支持 NVMe 的 VM 系列。 请务必注意,Intel v5 代 VM 中只有 Ebsv5 和 Ebdsv5 VM 大小才配备 NVMe。 请确保选择该系列之一,即 Ebsv5 或 Ebdsv5 VM。
  • 选择标记有 NVMe 支持的操作系统映像
  • 通过在 Azure 门户或 ARM/CLI/Power Shell 模板中选择 NVMe 磁盘控制器类型,选择加入 NVMe。 有关分步说明,请参阅此处
  • 仅支持 Gen2 映像
  • 选择其中一个启用了 NVMe 的 Azure 区域

通过满足上述五个条件,你将能够即时在支持的 VM 系列上启用 NVMe。 请遵循上述条件,使用 NVMe 成功创建 VM 或调整其大小,而不会造成任何复杂情况。 有关 NVMe 启用的信息,请参阅常见问题解答

支持的 OS 映像

Linux

分发 映像
Almalinux 8.x(当前为 8.7) almalinux: almalinux:8-gen2: latest
Almalinux 9.x(当前为 9.1) almalinux: almalinux:9-gen2: latest
Debian 11 Debian: debian-11:11-gen2: latest
CentOS 7.9 openlogic: centos:7_9-gen2: latest
RHEL 7.9 RedHat: RHEL:79-gen2: latest
RHEL 8.6 RedHat: RHEL:86-gen2: latest
RHEL 8.7 RedHat: RHEL:87-gen2: latest
RHEL 9.0 RedHat:RHEL:90-gen2:latest
RHEL 9.1 RedHat: RHEL:91-gen2: latest
Ubuntu 18.04 Canonical:UbuntuServer:18_04-lts-gen2:latest
Ubuntu 20.04 Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:latest
Ubuntu 22.04 Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:latest
Oracle 7.9 Oracle:Oracle-Linux:79-gen2:latest
Oracle 8.5 Oracle: Oracle-Linuz:ol85-lvm-gen2:latest
Oracle 8.6 Oracle: Oracle-Linux:ol86-lvm-gen2:latest
Oracle 8.7 Oracle: Oracle-Linux:ol87-lvm-gen2:latest
Oracle 9.0 Oracle: Oracle-Linux:ol9-lvm-gen2:latest
Oracle 9.1 Oracle: Oracle-Linux:ol91-lvm-gen2:latest
SLES-for-SAP 15.3 SUSE:sles-sap-15-sp3:gen2:latest
SLES-for-SAP 15.4 SUSE:sles-sap-15-sp4:gen2:latest
SLES 15.4 SUSE:sles-15-sp4:gen2:latest
SLES 15.5 SUSE:sles-15-sp5:gen2:latest

Windows

使用 NVMe 接口启动 VM

在 VM 创建期间,可以使用各种方法(例如:Azure 门户、CLI、PowerShell 和 ARM 模板)启用 NVMe。 若要创建 NVMe VM,必须先在 VM 上启用 NVMe 选项,并为 VM 选择 NVMe 控制器磁盘类型。 请注意,如果 VM 大小支持 NVMe,则可以在创建期间启用 NVMe diskcontrollertype,或者在 VM 停止并解除分配时将其更新为 NVMe。

Azure 门户视图

  1. 添加磁盘控制器筛选器。 若要查找符合 NVMe 条件的大小,请选择“查看所有大小”,选择“磁盘控制器”筛选器,然后选择“NVMe”:

    为 NVMe 接口添加磁盘控制器筛选器的说明屏幕截图。

  2. 通过访问“高级”选项卡启用 NVMe 功能。

    启用 NVMe 接口功能的说明屏幕截图。

  3. 转到“查看并创建”来验证功能是否已启用。

    查看和验证功能启用的说明屏幕截图。

ARM 模板示例



{
    "apiVersion": "2022-08-01",
    "type": "Microsoft.Compute/virtualMachines",
    "name": "[variables('vmName')]",
    "location": "[parameters('location')]",
    "identity": {
        "type": "userAssigned",
        "userAssignedIdentities": {
            "/subscriptions/ <EnterSubscriptionIdHere> /resourcegroups/ManagedIdentities/providers/Microsoft.ManagedIdentity/userAssignedIdentities/KeyVaultReader": {}
        }
    },
    "dependsOn": [
        "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
    ],
    "properties": {
        "hardwareProfile": {
            "vmSize": "[parameters('vmSize')]"
        },
        "osProfile": "[variables('vOsProfile')]",
        "storageProfile": {
            "imageReference": "[parameters('osDiskImageReference')]",
            "osDisk": {
                "name": "[variables('diskName')]",
                "caching": "ReadWrite",
                "createOption": "FromImage"
            },
            "copy": [
                {
                    "name": "dataDisks",
                    "count": "[parameters('numDataDisks')]",
                    "input": {
                        "caching": "[parameters('dataDiskCachePolicy')]",
                        "writeAcceleratorEnabled": "[parameters('writeAcceleratorEnabled')]",
                        "diskSizeGB": "[parameters('dataDiskSize')]",
                        "lun": "[add(copyIndex('dataDisks'), parameters('lunStartsAt'))]",
                        "name": "[concat(variables('vmName'), '-datadisk-', copyIndex('dataDisks'))]",
                        "createOption": "Attach",
                        "managedDisk": {
                            "storageAccountType": "[parameters('storageType')]",
                            "id": "[resourceId('Microsoft.Compute/disks/', concat(variables('vmName'), '-datadisk-', copyIndex('dataDisks')))]"
                        }
                    }
                }
            ],
            "diskControllerTypes": "NVME"
        },
        "securityProfile": {
            "encryptionAtHost": "[parameters('encryptionAtHost')]"
        },
                          
        "networkProfile": {
            "networkInterfaces": [
                {
                    "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]"
                }
            ]
        },
        "availabilitySet": {
            "id": "[resourceId('Microsoft.Compute/availabilitySets', parameters('availabilitySetName'))]"
        }
    },
    "tags": {
        "vmName": "[variables('vmName')]",

      "location": "[parameters('location')]",

                "dataDiskSize": "[parameters('dataDiskSize')]",

                "numDataDisks": "[parameters('numDataDisks')]",

                "dataDiskCachePolicy": "[parameters('dataDiskCachePolicy')]",

                "availabilitySetName": "[parameters('availabilitySetName')]",

                "customScriptURL": "[parameters('customScriptURL')]",

                "SkipLinuxAzSecPack": "True",

                "SkipASMAzSecPack": "True",

                "EnableCrashConsistentRestorePoint": "[parameters('enableCrashConsistentRestorePoint')]"

            }

        }

提示

如果使用 PowerShell 或 CLI 工具启动 NVMe 支持的 VM,请使用同一参数 DiskControllerType

后续步骤