

# AWS NVMe ドライバー
<a name="aws-nvme-drivers"></a>

Amazon EBS ボリュームおよびインスタンスストアボリュームは、[Nitro ベースのインスタンス](instance-types.md#instance-hypervisor-type)で NVMe ブロックデバイスとして公開されます。NVMe ブロックデバイスとして公開されるボリュームで Amazon EBS 機能のパフォーマンスと機能を最大限に活用するには、インスタンスに NVMe AWS ドライバーがインストールされている必要があります。現行世代のすべての AWS Windows AMI には、デフォルトで NVMe ドライバーがインストールされています。AWS

EBS および NVMe の詳細については、「*Amazon EBS ユーザーガイド*」の「[Amazon EBS および NVMe](https://docs.aws.amazon.com/ebs/latest/userguide/nvme-ebs-volumes.html)」を参照してください。SSD インスタンスストアと NVMe の詳細については、「[EC2 インスタンスの SSD インスタンスストアボリューム](ssd-instance-store.md)」を参照してください。

## Linux インスタンス
<a name="install-nvme-driver-linux"></a>

以下の AMI には、必要な NVMe ドライバーが含まれています。
+ Amazon Linux 2
+ Amazon Linux AMI 2018.03
+ `linux-aws` カーネルを搭載した Ubuntu 14.04 以降
**注記**  
AWS Graviton ベースのインスタンスタイプには`linux-aws` カーネル搭載の Ubuntu 18.04 以降が必要です
+ 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. インスタンスに接続します。

1. パッケージのキャッシュを更新し、必要なパッケージの更新を次のように取得します。
   + 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
     ```

1. 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
   ```

1. インスタンスを再起動して、最新のカーネルバージョンを読み込みます。

   ```
   sudo reboot
   ```

1. 再起動後にインスタンスに再接続します。

## Windows インスタンス
<a name="install-nvme-drivers-windows"></a>

------
#### [ PowerShell ]

Amazon が提供する最新の AWS Windows AMI のいずれかからインスタンスを起動しなかった場合は、次の手順を使用してインスタンスに現在の AWS NVMe ドライバーをインストールします。このインストールには再始動が必要です。インストールスクリプトを入力するとインスタンスが再起動されますが、再起動されない場合には、最終段階で再起動する必要があります。

**前提条件**
+ PowerShell バージョン 3.0 以降がインストールされている
+ このセクションに示すコマンドは、PowerShell の 64 ビットバージョンで実行する必要があります。`x86` バージョンの PowerShell を使用しないでください。これはシェルの 32 ビットバージョンで、これらのコマンドではサポートされていません。

**最新の AWS NVMe ドライバーをダウンロードしてインストールするには**

1. 変更を元に戻す必要がある場合に備えて、AMI をバックアップとして作成することをお勧めします。

   1. インスタンスを停止すると、インスタンスストアボリューム上のデータは消去されます。インスタンスを停止する前に、必要なデータをインスタンスストアボリュームから永続的ストレージ (Amazon EBS や Amazon S3 など) にコピーしていることを確認します。

   1. ナビゲーションペインで、[**インスタンス**] を選択してください。

   1. ドライバーのアップグレードが必要なインスタンスを選択し、[**インスタンスの状態**]、[**インスタンスの停止**] の順に選択してください。

   1. インスタンスを停止したら、インスタンスを選択し、[**アクション**]、[**イメージとテンプレート**]、[**イメージの作成**] の順に選択してください。

   1. [**Instance state (インスタンスの状態)**]、[**Start instance (インスタンスの開始)**] の順に選択してください。

1. インスタンスに接続してローカル管理者としてログインします。

1. 次のいずれかのオプションを使用して、インスタンスにドライバをダウンロードします。
   + **ブラウザ** - zip アーカイブを抽出するには、最新のドライバーパッケージをインスタンスに[ダウンロード](https://s3.amazonaws.com/ec2-windows-drivers-downloads/NVMe/Latest/AWSNVMe.zip)します。
   + **PowerShell** – 次のコマンドを実行します。

     ```
     Invoke-WebRequest https://s3.amazonaws.com/ec2-windows-drivers-downloads/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
     ```

1. `install.ps1` ディレクトリ `nvme_driver`から `.\install.ps1` PowerShell スクリプトを実行し、ドライバーをインスタンスにインストールします。エラーが発生した場合は、PowerShell 3.0 以降を使用していることを確認してください。

   1. (オプション) AWS NVMe バージョン `1.5.0` 以降、Windows Server 2016 以降ではスモールコンピュータシステムインターフェイス (SCSI) の永続予約がサポートされます。この機能により、共有 Amazon EBS ストレージによる Windows Server フェイルオーバークラスタリングのサポートが追加されました。デフォルトでは、この機能はインストール中には有効になっていません。

      `install.ps1` スクリプトを実行してドライバーをインストールするときに、`EnableSCSIPersistentReservations` パラメータに `$true` という値を指定すると、この機能を有効にできます。

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

      `install.ps1` スクリプトを実行してドライバーをインストールするときに、`EnableSCSIPersistentReservations` パラメータに `$false` という値を指定すると、この機能を無効にできます。

      ```
      PS C:\> .\install.ps1 -EnableSCSIPersistentReservations $false
      ```

   1. AWS NVMe `1.5.0` 以降、`install.ps1` スクリプトは常に `ebsnvme-id` ツールをドライバーとともにインストールします。

      (オプション) バージョン `1.4.0`、`1.4.1`、および `1.4.2` の場合、`install.ps1` スクリプトを使用して `ebsnvme-id` ツールをドライバーとともにインストールするかどうかを指定できます。

      1. `ebsnvme-id` ツールをインストールするには、`InstallEBSNVMeIdTool ‘Yes’` を指定します。

      1. ツールをインストールしない場合は、`InstallEBSNVMeIdTool ‘No’` を指定します。

         `InstallEBSNVMeIdTool` を指定しない場合で、かつツールが既に `C:\ProgramData\Amazon\Tools` に存在している場合、パッケージはデフォルトでツールをアップグレードします。ツールが存在しない場合は、`install.ps1` は、デフォルトではツールをアップグレードしません。

         ツールをパッケージの一部としてインストールせず、後でインストールする場合は、ドライバーパッケージにツールの最新バージョンがあります。または、Amazon S3 からバージョン `1.0.0` をダウンロードすることもできます。

         `ebsnvme-id` ツールを[ダウンロード](https://s3.amazonaws.com/ec2-windows-drivers-downloads/EBSNVMeID/Latest/ebsnvme-id.zip)します。

1. インストーラがインスタンスを再起動しない場合には、手動でインスタンスを再起動します。

------
#### [ Distributor ]

ディストリビューター (AWS Systems Manager の機能) を使用して、NVMe ドライバーパッケージを 1 回インストールすることも、スケジュールされた更新を使用してインストールすることもできます。

**最新の AWS NVMe ドライバーをインストールする**

1. ディストリビューターを使用して NVMe ドライバーパッケージをインストールする方法については、「*Amazon EC2 Systems Manager ユーザーガイド*」の「[パッケージのインストールまたは更新](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor-working-with-packages-deploy.html)」を参照してください。

1. **[インストールタイプ]** で、**[アンインストールと再インストール]** を選択します。

1. **[名前]** で、**AWSNVMe** を選択してください。

1. (任意) **[追加の引数]** では、値を指定することでインストールをカスタマイズできます。値は有効な JSON 構文を使用した形式にする必要があります。`aws configure` パッケージの追加の引数を渡す方法の例については、「[コマンドドキュメントプラグインリファレンス](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents-command-ssm-plugin-reference.html)」を参照してください。

   1. AWS NVMe `1.5.0` 以降、このドライバーは Windows Server 2016 以降の SCSI 永続予約をサポートしています。デフォルトでは、この機能はインストール中には有効になっていません。
      + この機能を有効にするには、`{"SSM_EnableSCSIPersistentReservations": "true"}` を指定します。
      + この機能を有効にしない場合は、`{"SSM_EnableSCSIPersistentReservations": "false"}` を指定します。

   1. AWS NVMe `1.5.0` 以降、`install.ps1` スクリプトは常に `ebsnvme-id` ツールをインストールします。

      (オプション) バージョン `1.4.0`、`1.4.1`、および `1.4.2` の場合、`install.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` ツールを[ダウンロード](https://s3.amazonaws.com/ec2-windows-drivers-downloads/EBSNVMeID/Latest/ebsnvme-id.zip)します。

1. インストーラがインスタンスを再起動しない場合には、手動でインスタンスを再起動します。

------

## Windows インスタンスの SCSI 永続予約を設定する
<a name="configure-scsi-persistent-reservations"></a>

AWS 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
```