

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon EBS ボリュームを NVMe デバイス名にマッピング
<a name="identify-nvme-ebs-device"></a>

EBS では、シングルルート I/O 仮想化 (SR-IOV) を使用して、NVMe 規格を使用して Nitro ベースのインスタンスにボリュームをアタッチします。これらのデバイスは、オペレーティングシステムの標準 NVMe ドライバーに依存しています。これらのドライバーは、通常、インスタンスのブート時にアタッチ済みのデバイスを検出し、そのデバイスがブロックデバイスマッピングでどのように指定されているかではなく、デバイスが応答する順序に基づいてデバイスノードを作成します。

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

Linux では、NVMe デバイス名は `/dev/nvme<x>n<y>` のパターンに従います。ただし、<x> は列挙順序で、EBS の場合の <y> は 1 です。場合によっては、デバイスは後続のインスタンスの開始時に異なる順序で検出に応答することがあり、デバイス名が変更されます。また、ブロックデバイスドライバーによって割り当てられるデバイス名は、ブロックデバイスマッピングで指定される名前と異なる場合があります。

インスタンス内の EBS ボリュームには、次のいずれかのような安定した識別子を使用することをお勧めします。
+ Nitro ベースのインスタンスでは、ブロックデバイスマッピングは、EBS ボリュームをアタッチしているとき、または `AttachVolume` か `RunInstances` API コールが、NVMe コントローラー ID のベンダー固有のデータフィールドに取り込まれる際に Amazon EC2 コンソールで指定されます。バージョン 2017.09.01 以降の Amazon Linux AMI で、このデータを読み込んでブロックデバイスマッピングへのシンボリックリンクを作成する `udev` ルールを提供します。
+ EBS ボリューム ID とマウントポイントは、インスタンスの状態が変化しても安定しています。NVMe デバイス名は、インスタンスの起動時にデバイスが応答する順序に応じて変化します。一貫性のあるデバイスを識別するには、EBS ボリューム ID とマウントポイントを使用することをお勧めします。
+ NVMe EBS ボリュームには、EBS ボリューム ID がデバイス ID のシリアル番号として設定されています。シリアル番号を一覧表示するには、`lsblk -o +SERIAL` コマンドを使用します。
+ NVMe デバイス名の形式は、EBS ボリュームがインスタンスの起動中または起動後にアタッチされたかどうかによって異なります。インスタンスの起動後にアタッチされたボリュームの NVMe デバイス名には、`/dev/`プレフィクスが含まれますが、インスタンスの起動中にアタッチされたボリュームの NVMe デバイス名には`/dev/`プレフィクスが含まれません。
  + Amazon Linux または FreeBSD AMI の場合、`sudo ebsnvme-id /dev/{{nvme0n1}} -u` コマンドを使用して、一貫した NVMe デバイス名を指定します。
  + その他のディストリビューションでは`sudo nvme id-ctrl -V /dev/{{nvme0n1}}`コマンドを使用して NVMe デバイス名を指定します。`--vendor-specific` コマンドオプションを含める必要がある場合があります。
+ デバイスがフォーマットされると、ファイルシステムの存続期間中、存続する UUID が生成されます。デバイスラベルは同時に指定することができます。詳細については、「[Amazon EBS ボリュームを使用できるようにする](ebs-using-volumes.md) および [間違ったボリュームからの起動](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-booting-from-wrong-volume.html)」を参照してください。

**Amazon Linux AMI**  
AMI Amazon Linux 2017.09.01 以降 (Amazon Linux 2 を含む) では､次のように **ebsnvme-id** コマンドを実行して、NVMe デバイス名をボリューム ID とデバイス名にマップすることができます。

次の例は、インスタンスの起動時にアタッチされたボリュームのコマンドと出力を示しています。NVMe デバイス名には、`/dev/`プレフィクスが含まれないことに注意してください。

```
[ec2-user ~]$ sudo /sbin/ebsnvme-id /dev/nvme{{0}}n1
Volume ID: vol-01324f611e2463981
sda
```

次の例は、インスタンスの起動後にアタッチされたボリュームのコマンドと出力を示しています。NVMe デバイス名に、`/dev/`プレフィクスが含まれることに注意してください。

```
[ec2-user ~]$ sudo /sbin/ebsnvme-id /dev/nvme{{1}}n1
Volume ID: vol-064784f1011136656
/dev/sdf
```

また、Amazon Linux はブロックデバイスマッピング (例えば、`/dev/sdf`) 内のデバイス名から NVMe デバイス名へのシンボリックリンクを作成します。

**FreeBSD AMI**  
FreeBSD 12.2-RELEASE 以降では、上記のように **ebsnvme-id** コマンドを実行することができます。NVMe デバイスの名前 (`nvme0` など) またはディスクデバイス (`nvd0` または `nda0`) を渡します。FreeBSD は、ディスクデバイスへのシンボリックリンク (`/dev/aws/disk/ebs/`{{volume\_id}} など) も作成します。

**その他の Linux AMI**  
カーネルバージョン 4.2 以降では､次のように **nvme id-ctrl** コマンドを実行して、NVMe デバイスをボリューム ID にマップすることができます。最初に、Linux ディストリビューションのパッケージ管理ツールを使用して、NVMe コマンドラインのパッケージ `nvme-cli` をインストールします。他のディストリビューションのダウンロードおよびインストール手順については、ディストリビューションに固有のドキュメントを参照してください。

次の例では、インスタンスの起動時にアタッチされたボリュームのボリューム ID と NVMe デバイス名を取得します｡ NVMe デバイス名には、`/dev/`プレフィクスが含まれないことに注意してください。デバイス名は、NVMe コントローラベンダー固有の拡張子 (コントローラー ID のバイト 384:4095) を介して使用できます。

```
[ec2-user ~]$ sudo nvme id-ctrl -V /dev/nvme{{0}}n1
NVME Identify Controller:
vid     : 0x1d0f
ssvid   : 0x1d0f
sn      : {{vol01234567890abcdef}}
mn      : Amazon Elastic Block Store
...
0000: 2f 64 65 76 2f 73 64 6a 20 20 20 20 20 20 20 20 "{{sda}}..."
```

次の例では、インスタンスの起動後にアタッチされたボリュームのボリューム ID と NVMe デバイス名を取得します｡ NVMe デバイス名には、`/dev/`プレフィクスが含まれることに注意してください。

```
[ec2-user ~]$ sudo nvme id-ctrl -V /dev/nvme{{1}}n1
NVME Identify Controller:
vid     : 0x1d0f
ssvid   : 0x1d0f
sn      : {{volabcdef01234567890}}
mn      : Amazon Elastic Block Store
...
0000: 2f 64 65 76 2f 73 64 6a 20 20 20 20 20 20 20 20 "{{/dev/sdf}}..."
```

**lsblk** コマンドは、使用可能なデバイスとそのマウントポイント (該当する場合) をリストします。これは、使用する正しいデバイス名を決定するのに役立ちます。この例では、`/dev/nvme0n1p1` がルートデバイスとしてマウントされ、`/dev/nvme1n1` はアタッチされていますがマウントされていません。

```
[ec2-user ~]$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme1n1       259:3   0  100G  0 disk
nvme0n1       259:0   0    8G  0 disk
  nvme0n1p1   259:1   0    8G  0 part /
  nvme0n1p128 259:2   0    1M  0 part
```

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

**ebsnvme-id** コマンドを実行して、NVMe デバイスのディスク番号を EBS ボリューム ID およびデバイス名にマッピングできます。デフォルトでは、すべての EBS NVMe デバイスは列挙されません。特定のデバイスの情報を列挙するには、ディスク番号を渡します。`ebsnvme-id` ツールは、AWS で提供されている最新の Windows Server AMI の、`C:\ProgramData\Amazon\Tools` に含まれています。

AWS NVMe ドライバーパッケージの `1.5.0,` 以降では、`ebsnvme-id` ツールの最新バージョンがドライバーパッケージによってインストールされます。最新バージョンはドライバーパッケージでのみ入手可能です。`ebsnvme-id` ツールのスタンドアロンダウンロードリンクにはアップデートが送信されなくなります。スタンドアロンリンクから入手できる最後のバージョンは `1.1.0` です。このバージョンは [ebsnvme-id.zip](https://s3.amazonaws.com/ec2-windows-drivers-downloads/EBSNVMeID/Latest/ebsnvme-id.zip) リンクを使用してコンテンツを Amazon EC2 インスタンスに抽出することでダウンロード可能となり、`ebsnvme-id.exe` にアクセスできるようになります。

```
PS C:\ProgramData\Amazon\Tools> ebsnvme-id.exe
Disk Number: 0
Volume ID: vol-0d6d7ee9f6e471a7f
Device Name: sda1

Disk Number: 1
Volume ID: vol-03a26248ff39b57cf
Device Name: xvdd

Disk Number: 2
Volume ID: vol-038bd1c629aa125e6
Device Name: xvde

Disk Number: 3
Volume ID: vol-034f9d29ec0b64c89
Device Name: xvdb

Disk Number: 4
Volume ID: vol-03e2dbe464b66f0a1
Device Name: xvdc
```

```
PS C:\ProgramData\Amazon\Tools> ebsnvme-id.exe {{4}}
Disk Number: 4
Volume ID: vol-03e2dbe464b66f0a1
Device Name: xvdc
```