

# Amazon EC2 インスタンスでのボリュームのブロックデバイスマッピング
<a name="block-device-mapping-concepts"></a>

起動する各インスタンスにはAmazon EBS ボリューム、またはインスタンスストアボリュームのどちらかのルートボリュームが関連付けられています。ブロックデバイスマッピングを使用すると、インスタンスの起動時にそのインスタンスにアタッチする追加の EBS ボリュームまたはインスタンスストアボリュームを指定できます。追加する EBS ボリュームは実行中のインスタンスにアタッチすることもできます。ただし、インスタンスストアボリュームをインスタンスにアタッチする方法は、インスタンスの起動時にブロックデバイスマッピングを使用してボリュームをアタッチする以外方法はありません。

**Topics**
+ [ブロックデバイスマッピングの概念](#block-device-mapping-def)
+ [AMI へのブロックデバイスマッピングの追加](ami-block-device-mapping.md)
+ [Amazon EC2 インスタンスへのブロックデバイスマッピングの追加](instance-block-device-mapping.md)

## ブロックデバイスマッピングの概念
<a name="block-device-mapping-def"></a>

*ブロックデバイス*は一連のバイトまたはビット (ブロック) でデータを移動するストレージデバイスです。これらのデバイスはランダムアクセスをサポートし、バッファ付き I/O を使用します。例にはハードディスク、CD-ROM ドライブ、フラッシュドライブが含まれます。ブロックデバイスは物理的にコンピュータにアタッチできます。また、コンピュータに物理的にアタッチされているかのように、リモートでアクセスすることもできます。

Amazon EC2 は2 種類のブロックデバイスをサポートしています。
+ インスタンスストアボリューム (基盤となるハードウェアがインスタンスのホストコンピュータに物理的にアタッチされている仮想デバイス)
+ EBS ボリューム (リモートストレージデバイス)

*ブロックデバイスマッピング*ではインスタンスにアタッチするブロックデバイス (インスタンスストアボリュームと EBS ボリューム) を定義します。ブロックデバイスマッピングはAMI 作成プロセスの一環として、AMI から起動されるすべてのインスタンスによって使用されるように指定できます。また、インスタンスの起動時にブロックデバイスマッピングを指定することもできます。起動したインスタンスの AMI ですでに指定されているマッピングはこのマッピングによって上書きされます。インスタンスタイプによってサポートされるすべての NVMe インスタンスストアボリュームが自動的に列挙され、インスタンスの起動時にデバイス名が割り当てられることに注意してください。それらをブロックデバイスマッピングに含めます。含めないとインスタンスは効果がありません。

**Topics**
+ [ブロックデバイスマッピングのエントリ](#parts-of-a-block-device-mapping)
+ [ブロックデバイスマッピングのインスタンスストアの注意事項](#instance_store_caveats)
+ [ブロックデバイスマッピングの例](#block-device-mapping-ex)
+ [オペレーティングシステムでデバイスを使用できるようにする方法](#bdm-to-os)

### ブロックデバイスマッピングのエントリ
<a name="parts-of-a-block-device-mapping"></a>

ブロックデバイスマッピングを作成するとき、インスタンスにアタッチする必要があるブロックデバイスごとに以下の情報を指定します。
+ Amazon EC2 内で使用されるデバイス名。インスタンスのブロックデバイスドライバーはボリュームをマウントするときに実際のボリューム名を割り当てます。この割り当てられた名前はAmazon EC2 が推奨する名前とは異なる可能性があります。詳細については[Amazon EC2 インスタンス上のボリュームのデバイス名](device_naming.md)を参照してください。

インスタンスストアボリュームの場合は次の情報も指定します。
+ 仮想デバイスの名前: `ephemeral[0-23]`。インスタンスで使用できるインスタンスストアボリュームの数とサイズはインスタンスタイプによって異なります。

NVMe インスタンスストアボリュームの場合は次の情報も適用されます。
+ これらのボリュームが自動的に列挙され、デバイス名が割り当てられます。それらをブロックデバイスマッピングに含めます。含めないとインスタンスは効果がありません。

EBS ボリュームの場合は次の情報も指定します。
+ ブロックデバイスを作成するときに使用するスナップショットの ID (snap-*xxxxxxxx*)。ボリュームサイズを指定する場合、この値はオプションです。アーカイブされたスナップショットの ID は指定できません。
+ ボリュームのサイズ (GiB 単位) 。指定されたサイズは指定されたスナップショットのサイズ以上である必要があります。
+ インスタンス終了時にボリュームを削除するかどうか (`true` または `false`) デフォルト値はルートボリュームでは `true`、アタッチされたボリュームでは `false` です。AMI を作成するときはそのブロックデバイスマッピングがインスタンスからこの設定を継承します。インスタンスを起動するときに、AMI からこの設定を継承します。
+ ボリュームタイプは汎用 SSD の場合は `gp2` および `gp3`、プロビジョンド IOPS SSD の場合は `io1` および `io2`、スループット最適化 HDD の場合は `st1`、Cold HDD の場合は `sc1`、磁気の場合は `standard` です。
+ ボリュームがサポートする 1 秒あたりの入力/出力オペレーションの数 (IOPS) (`io1` および `io2` ボリュームでのみ使用)
+ 一部のインスタンスタイプは、複数の EBS カードをサポートしています。EBS カードインデックスを指定することで、アタッチするボリュームの EBS カードを選択できます。詳細については、「[EBS カード](ebs_cards.md#ebs_cards.title)」を参照してください。

### ブロックデバイスマッピングのインスタンスストアの注意事項
<a name="instance_store_caveats"></a>

ブロックデバイスマッピングでインスタンスストアボリュームがある場合はインスタンスを AMI から起動すると、いくつかの警告が表示されます。
+ インスタンスタイプによって中に含まれるインスタンスストアボリューム数が異なり、インスタンスストアボリュームがまったく含まれないインスタンスタイプもあります。単一インスタンスストアボリュームのみをサポートするインスタンスタイプで、AMI が 2 つのインスタンスストアボリュームにマッピングされている場合、インスタンスは単一のインスタンスストアボリュームのみで起動します。
+ インスタンスストアボリュームをマッピングできるのは起動時のみに限られます。インスタンスストアボリュームのないインスタンスを停止することはできません (`t2.micro` など)。インスタンスストアボリュームをサポートするインスタンスに変更し、インスタンスストアボリュームを含めて再起動します。ただし、AMI をインスタンスから作成し、インスタンスストアボリュームをサポートするインスタンスタイプで起動して、インスタンスストアボリュームをインスタンスにマッピングすることは可能です。
+ インスタンスストアボリュームをマッピングしたインスタンスを起動し、インスタンスを停止して、インスタンスストアボリュームの少ないインスタンスタイプに変更して再開すれば、最初の起動からマッピングしたインスタンスストアボリュームもインスタンスのメタデータに表示されます。ただし、インスタンスに使用できるのはそのインスタンスタイプでサポートされているインスタンスストアボリュームの最大数までです。
**注記**  
インスタンスが停止されると、インスタンスストアボリュームのデータはすべて失われます。
+ 起動時のインスタンスストア容量によってはM3 インスタンスが AMI インスタンスストアブロックデバイスのマッピングを (起動時に指定されていない限り) 無視します。インスタンスの起動時にインスタンスストアボリュームを使用するには起動する AMI ボリュームに AMI でインスタンスストアボリュームがマッピングされていたとしても、起動時にインスタンスストアブロックデバイスのマッピングを指定する必要があります。

### ブロックデバイスマッピングの例
<a name="block-device-mapping-ex"></a>

この図は EBS-backed インスタンスのブロックデバイスマッピングの例を示しています。この例では`/dev/sdb` を `ephemeral0` にマッピングし、2 つの EBS ボリュームを 1 つは `/dev/sdh` に、もう 1 つは `/dev/sdj` にマッピングします。また、ルートボリュームである EBS ボリューム、`/dev/sda1` も示しています。

![\[インスタンス、インスタンスストアボリューム、および EBS ボリュームの間の関係。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/block_device_mapping_figure.png)


このブロックデバイスマッピングの例はこのトピックのコマンドおよび API の例で使用されています。ブロックデバイスマッピングを作成するコマンドおよび API の例については[AMI 用のブロックデバイスマッピングの指定](ami-block-device-mapping.md#create-ami-bdm)および[インスタンス起動時のブロックデバイスマッピングの更新](instance-block-device-mapping.md#Using_OverridingAMIBDM)を参照してください。

### オペレーティングシステムでデバイスを使用できるようにする方法
<a name="bdm-to-os"></a>

Amazon EC2 ではブロックデバイスの記述に、`/dev/sdh` や `xvdh` などのデバイス名が使われます。また、Amazon EC2 ではEC2 インスタンスにアタッチするブロックデバイスを、ブロックデバイスマッピングで指定します。ストレージデバイスにアクセスするにはインスタンスにアタッチしたブロックデバイスが、オペレーティングシステムによって事前にマウントされていなければなりません。ブロックデバイスがインスタンスからデタッチされると、そのデバイスはオペレーティングシステムによってアンマウントされ、ストレージデバイスにアクセスできなくなります。

**Linux インスタンス** – ブロックデバイスマッピングで指定されたデバイス名はインスタンスの初回起動時に対応するブロックデバイスにマッピングされます。デフォルトでフォーマットおよびマウントされるインスタンスストアボリュームはインスタンスタイプによって決まります。インスタンスタイプで使用できるインスタンスストアボリューム数を超えていない場合は起動時に追加のインスタンスストアボリュームをマウントできます。詳細については[EC2 インスタンス用のインスタンスストアの一時ブロックストレージ](InstanceStorage.md)を参照してください。ボリュームがフォーマットおよびマウントされるときに使用されるデバイスはインスタンスのブロックデバイスドライバーによって決まります。

**Windows インスタンス** – ブロックデバイスマッピングで指定されたデバイス名はインスタンスの初回起動時に対応するブロックデバイスにマッピングされ、Ec2Config サービスによってドライブが初期化されマウントされます。ルートボリュームは `C:\` としてマウントされます。インスタンスストアボリュームは`Z:\`、`Y:\` などとしてマウントされます。EBS ボリュームについては使用可能な任意のドライブ文字を使用してマウントできます。ただし、ドライブ文字を EBS ボリュームに割り当てる方法を設定することができます。詳細については「[Amazon EC2 Windows インスタンス上の Windows 起動エージェント](configure-launch-agents.md)」を参照してください。