Amazon NVMe 驱动程序 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon NVMe 驱动程序

基于 Nitro 的实例上,Amazon EBS 卷和实例存储卷显示为 NVMe 块储存设备。要为作为 NVMe 块设备公开的卷充分利用 Amazon EBS 功能的性能和功能,实例必须安装了 Amazon NVMe 驱动程序。所有当前一代 Amazon Windows AMI 都默认安装了 Amazon NVMe 驱动程序。

有关 EBS 和 NVMe 的更多信息,请参阅《Amazon EBS 用户指南》中的 Amazon EBS 和 NVMe。有关 SSD 实例存储和 NVMe 的更多信息,请参阅适用于 EC2 实例的 SSD 实例存储卷

以下 AMI 包含所需的 NVMe 驱动程序:

  • Amazon Linux 2

  • Amazon Linux AMI 2018.03

  • Ubuntu 14.04 或更高版本(采用 linux-aws 内核)

    注意

    Amazon 基于 Graviton 的实例类型需要 Ubuntu 18.04 或更高版本(采用 linux-aws 内核)

  • Red Hat Enterprise Linux 7.4 或更高版本

  • SUSE Linux Enterprise Server 12 SP2 或更高版本

  • CentOS 7.4.1708 或更高版本

  • FreeBSD 11.1 或更高版本

  • Debian GNU/Linux 9 或更高版本

确认实例具有 NVMe 驱动程序

您可以使用以下命令确认您的实例是否具有 NVMe 驱动程序。

  • Amazon Linux、RHEL、CentOS 和 SUSE Linux Enterprise Server

    $ modinfo nvme

    如果实例具有 NVMe 驱动程序,则该命令将返回有关该驱动程序的信息。

  • Amazon Linux 2 和 Ubuntu

    $ ls /sys/module/ | grep nvme

    如果实例具有 NVMe 驱动程序,该命令将返回已安装的驱动程序。

更新 NVMe 驱动程序

如果您的实例具有 NVMe 驱动程序,您可以使用以下过程将驱动程序更新到最新版本。

  1. 连接到您的 实例。

  2. 更新程序包缓存以获取必需程序包更新,如下所示。

    • 对于 Amazon Linux 2、Amazon Linux、CentOS 和 Red Hat Enterprise Linux:

      [ec2-user ~]$ sudo yum update -y
    • 对于 Ubuntu 和 Debian:

      [ec2-user ~]$ sudo apt-get update -y
  3. Ubuntu 16.04 及更高版本包含 linux-aws 程序包,该程序包包含基于 Nitro 的实例所需的 NVMe 和 ENA 驱动程序。升级 linux-aws 程序包以接收最新版本,如下所示:

    [ec2-user ~]$ sudo apt-get install --only-upgrade -y linux-aws

    对于 Ubuntu 14.04,您可以安装最新的 linux-aws 程序包,如下所示:

    [ec2-user ~]$ sudo apt-get install linux-aws
  4. 重启实例以加载最新内核版本。

    sudo reboot
  5. 重启之后重新连接到实例。

PowerShell

如果您使用的不是 Amazon 提供的最新 Amazon Windows AMI,请使用以下过程安装最新的 Amazon NVMe 驱动程序。您应该在方便重新引导实例的时候执行该更新。安装脚本将重新引导实例,或者您必须在最后一步中重新引导实例。

先决条件

PowerShell 3.0 或更高版本

下载并安装最新 Amazon NVMe 驱动程序
  1. 如果需要回滚更改,我们建议您按如下方式创建 AMI 作为备份。

    1. 当您停止某个实例时,任何实例存储卷上的数据都将被擦除。在停止实例之前,请确认您是否已将所需数据从实例存储卷复制到持久性存储,例如 Amazon EBS 或 Amazon S3。

    2. 在导航窗格中,选择实例

    3. 选择需要升级驱动程序的实例,然后依次选择 Instance state (实例状态)Stop instance (停止实例)

    4. 实例停止后,选择实例,依次选择 Actions (操作) Image and templates (映像和模板),然后选择 Create image (创建映像)

    5. 依次选择实例状态启动实例

  2. 连接到您的实例并以本地管理员身份登录。

  3. 使用以下选项之一下载并解压实例的驱动程序:

    • 使用浏览器:

      1. 将最新驱动程序包下载到实例。

      2. 提取 zip 存档。

    • 使用 PowerShell:

      Invoke-WebRequest https://s3.cn-north-1.amazonaws.com.cn/ec2-windows-drivers-downloads-cn/NVMe/Latest/AWSNVMe.zip -outfile $env:USERPROFILE\nvme_driver.zip Expand-Archive $env:userprofile\nvme_driver.zip -DestinationPath $env:userprofile\nvme_driver
      注意

      如果您在下载文件时收到错误,并且正在使用 Windows Server 2016 或更早的版本,则可能需要为 PowerShell 终端启用 TLS 1.2。可以使用以下命令为当前 PowerShell 会话启用 TLS 1.2,然后重试:

      [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
  4. 通过运行 nvme_driver 目录 (.\install.ps1) 中的 install.ps1 PowerShell 脚本,将驱动程序安装到您的实例中 如果出现错误,请确保您使用的是 PowerShell 3.0 或更高版本。

    1. (可选)从 Amazon NVMe 版本 1.5.0 开始,Windows Server 2016 及更高版本支持小型计算机系统接口(SCSI)永久预留。此功能增加了对带有共享 Amazon EBS 存储的 Windows Server 故障转移集群的支持。默认情况下,安装期间不启用此功能。

      在运行 install.ps1 脚本以安装驱动程序时,您可以通过指定值为 $trueEnableSCSIPersistentReservations 参数来启用该功能。

      PS C:\> .\install.ps1 -EnableSCSIPersistentReservations $true

      在运行 install.ps1 脚本以安装驱动程序时,您可以通过指定值为 $falseEnableSCSIPersistentReservations 参数来禁用该功能。

      PS C:\> .\install.ps1 -EnableSCSIPersistentReservations $false
    2. 从 Amazon NVMe 1.5.0 开始,install.ps1 脚本始终安装带有驱动程序的 ebsnvme-id 工具。

      (可选)对于版本 1.4.01.4.11.4.2install.ps1 脚本允许您指定 ebsnvme-id 工具是否应与驱动程序一起安装。

      1. 如需安装 ebsnvme-id 工具,请指定 InstallEBSNVMeIdTool ‘Yes’

      2. 如果不希望安装此工具,请指定 InstallEBSNVMeIdTool ‘No’

        如果您未指定 InstallEBSNVMeIdTool,且 C:\ProgramData\Amazon\Tools 中已存在该工具,则软件包将默认升级该工具。如果该工具不存在,则 install.ps1 将默认不升级该工具。

        如果您不想将该工具作为软件包的一部分进行安装,而想稍后再安装,则可以在驱动程序包中找到最新版本或该工具。或者,您可以从 Amazon S3 下载版本 1.0.0

        下载 ebsnvme-id 工具。

  5. 如果安装程序没有重新引导实例,请重新引导该实例。

Distributor

您可以使用分发服务器(Amazon Systems Manager 的一项功能)一次性安装 NVMe 驱动程序包,也可以使用计划更新来安装。

安装最新的 Amazon NVMe 驱动程序
  1. 有关如何使用分发服务器安装 NVMe 驱动程序包的说明,请参阅《Amazon EC2 Systems Manager 用户指南》中的安装或更新软件包

  2. 安装类型中,选择卸载并重新安装

  3. 名称中,选择 AWSNVMe

  4. (可选)在其他参数,中,通过指定值来自定义安装。必须使用有效的 JSON 语法来格式化这些值。有关如何为 aws configure 软件包传递其他参数的示例,请参阅命令文档插件参考

    1. 从 Amazon NVMe 1.5.0 开始,该驱动程序支持 Windows Server 2016 及更高版本的 SCSI 永久预留。默认情况下,安装期间不启用此功能。

      • 要启用此功能,请指定 {"SSM_EnableSCSIPersistentReservations": "true"}

      • 如果您不想启用此功能,请指定 {"SSM_EnableSCSIPersistentReservations": "false"}

    2. 从 Amazon NVMe 1.5.0 开始,install.ps1 脚本将始终安装 ebsnvme-id 工具。

      (可选)对于版本 1.4.01.4.11.4.2install.ps1 脚本允许您指定 ebsnvme-id 工具是否应与驱动程序一起安装。

      • 要安装 ebsnvme-id 工具,请指定 {"SSM_InstallEBSNVMeIdTool": "Yes"}

      • 如果不希望安装此工具,请指定 {"SSM_InstallEBSNVMeIdTool": "No"}

        如果您未指定 Additional Arguments(其它参数)为 SSM_InstallEBSNVMeIdTool,且 C:\ProgramData\Amazon\Tools 中已存在该工具,则软件包将默认升级该工具。如果该工具不存在,则软件包将默认不升级该工具。

        如果您不想将该工具作为软件包的一部分进行安装,而想稍后再安装,则可以在驱动程序包中找到该工具的最新版本。或者,您可以从 Amazon S3 下载版本 1.0.0

        下载 ebsnvme-id 工具。

  5. 如果安装程序没有重新引导实例,请重新引导该实例。

为 Windows 实例配置 SCSI 永久预留

安装 Amazon NVMe 驱动程序版本 1.5.0 或更高版本后,您可以使用适用于 Windows Server 2016 及更高版本的 Windows 注册表启用或禁用 SCSI 永久预留。您必须先重启数据库实例,然后这些注册表更改才会生效。

您可以使用以下命令启用 SCSI 永久预留,该命令将 EnableSCSIPersistentReservations 的值设置为 1

PS C:\> $registryPath = "HKLM:\SYSTEM\CurrentControlSet\Services\AWSNVMe\Parameters\Device" Set-ItemProperty -Path $registryPath -Name EnableSCSIPersistentReservations -Value 1

您可以使用以下命令禁用 SCSI 永久预留,该命令将 EnableSCSIPersistentReservations 的值设置为 0

PS C:\> $registryPath = "HKLM:\SYSTEM\CurrentControlSet\Services\AWSNVMe\Parameters\Device" Set-ItemProperty -Path $registryPath -Name EnableSCSIPersistentReservations -Value 0