Amazon EC2 インスタンスでのボリュームのブロックデバイスマッピング
起動する各インスタンスには、Amazon EBS ボリューム、またはインスタンスストアボリュームのどちらかのルートデバイスボリュームが関連付けられています。ブロックデバイスマッピングを使用すると、インスタンスの起動時にそのインスタンスにアタッチする追加の EBS ボリュームまたはインスタンスストアボリュームを指定できます。追加する EBS ボリュームは、実行中のインスタンスにアタッチすることもできます。ただし、インスタンスストアボリュームについては、ブロックデバイスマッピングを使用して、インスタンスの起動時にアタッチする以外方法はありません。
ブロックデバイスマッピングの概念
ブロックデバイスは、一連のバイトまたはビット (ブロック) でデータを移動するストレージデバイスです。これらのデバイスはランダムアクセスをサポートし、バッファ付き I/O を使用します。例にはハードディスク、CD-ROM ドライブ、フラッシュドライブが含まれます。ブロックデバイスは物理的にコンピュータにアタッチできます。また、コンピュータに物理的にアタッチされているかのように、リモートでアクセスすることもできます。
Amazon EC2 は、2 種類のブロックデバイスをサポートしています。
-
インスタンスストアボリューム (基盤となるハードウェアがインスタンスのホストコンピュータに物理的にアタッチされている仮想デバイス)
-
EBS ボリューム (リモートストレージデバイス)
ブロックデバイスマッピングでは、インスタンスにアタッチするブロックデバイス (インスタンスストアボリュームと EBS ボリューム) を定義します。ブロックデバイスマッピングは、AMI 作成プロセスの一環として、AMI から起動されるすべてのインスタンスによって使用されるように指定できます。また、インスタンスの起動時にブロックデバイスマッピングを指定することもできます。起動したインスタンスの AMI ですでに指定されているマッピングは、このマッピングによって上書きされます。インスタンスタイプによってサポートされるすべての NVMe インスタンスストアボリュームが自動的に列挙され、インスタンスの起動時にデバイス名が割り当てられることに注意してください。それらをブロックデバイスマッピングに含めます。含めないとインスタンスは効果がありません。
ブロックデバイスマッピングのエントリ
ブロックデバイスマッピングを作成するとき、インスタンスにアタッチする必要があるブロックデバイスごとに以下の情報を指定します。
-
Amazon EC2 内で使用されるデバイス名。インスタンスのブロックデバイスドライバーは、ボリュームをマウントするときに実際のボリューム名を割り当てます。この割り当てられた名前は、Amazon EC2 が推奨する名前とは異なる可能性があります。詳細については、Amazon EC2 インスタンス上のボリュームのデバイス名を参照してください。
インスタンスストアボリュームの場合は、次の情報も指定します。
-
仮想デバイスの名前:
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
ボリュームでのみ使用)
ブロックデバイスマッピングのインスタンスストアの注意事項
ブロックデバイスマッピングでインスタンスストアボリュームがある場合は、インスタンスを AMIs から起動すると、いくつかの警告が表示されます。
-
インスタンスタイプによって中に含まれるインスタンスストアボリューム数が異なり、インスタンスストアボリュームがまったく含まれないインスタンスタイプもあります。単一インスタンスストアボリュームのみをサポートするインスタンスタイプで、AMI が 2 つのインスタンスストアボリュームにマッピングされている場合、インスタンスは単一のインスタンスストアボリュームのみで起動します。
-
インスタンスストアボリュームをマッピングできるのは、起動時のみに限られます。インスタンスストアボリュームのないインスタンスを停止することはできません (
t2.micro
など)。インスタンスストアボリュームをサポートするインスタンスに変更し、インスタンスストアボリュームを含めて再起動します。ただし、AMI をインスタンスから作成し、インスタンスストアボリュームをサポートするインスタンスタイプで起動して、インスタンスストアボリュームをインスタンスにマッピングすることは可能です。 -
インスタンスストアボリュームをマッピングしたインスタンスを起動し、インスタンスを停止して、インスタンスストアボリュームの少ないインスタンスタイプに変更して再開すれば、最初の起動からマッピングしたインスタンスストアボリュームもインスタンスのメタデータに表示されます。ただし、インスタンスに使用できるのは、そのインスタンスタイプでサポートされているインスタンスストアボリュームの最大数までです。
注記
インスタンスが停止されると、インスタンスストアボリュームのデータはすべて失われます。
-
起動時のインスタンスストア容量によっては、M3 インスタンスが AMI インスタンスストアブロックデバイスのマッピングを (起動時に指定されていない限り) 無視します。インスタンスの起動時にインスタンスストアボリュームを使用するには、起動する AMI ボリュームに AMI でインスタンスストアボリュームがマッピングされていたとしても、起動時にインスタンスストアブロックデバイスのマッピングを指定する必要があります。
ブロックデバイスマッピングの例
この図は、EBS-backed インスタンスのブロックデバイスマッピングの例を示しています。この例では、/dev/sdb
を ephemeral0
にマッピングし、2 つの EBS ボリュームを 1 つは /dev/sdh
に、もう 1 つは /dev/sdj
にマッピングします。また、ルートデバイスボリュームである EBS ボリューム、/dev/sda1
も示しています。
このブロックデバイスマッピングの例は、このトピックのコマンドおよび API の例で使用されています。ブロックデバイスマッピングを作成するコマンドおよび API の例については、AMI 用のブロックデバイスマッピングの指定およびインスタンス起動時のブロックデバイスマッピングの更新を参照してください。
オペレーティングシステムでデバイスを使用できるようにする方法
Amazon EC2 では、ブロックデバイスの記述に、/dev/sdh
や xvdh
などのデバイス名が使われます。また、Amazon EC2 では、EC2 インスタンスにアタッチするブロックデバイスを、ブロックデバイスマッピングで指定します。ストレージデバイスにアクセスするには、インスタンスにアタッチしたブロックデバイスが、オペレーティングシステムによって事前にマウントされていなければなりません。ブロックデバイスがインスタンスからデタッチされると、そのデバイスはオペレーティングシステムによってアンマウントされ、ストレージデバイスにアクセスできなくなります。
Linux インスタンス – ブロックデバイスマッピングで指定されたデバイス名は、インスタンスの初回起動時に対応するブロックデバイスにマッピングされます。デフォルトでフォーマットおよびマウントされるインスタンスストアボリュームは、インスタンスタイプによって決まります。インスタンスタイプで使用できるインスタンスストアボリューム数を超えていない場合は、起動時に追加のインスタンスストアボリュームをマウントできます。詳細については、EC2 インスタンス用のインスタンスストアの一時ブロックストレージを参照してください。ボリュームがフォーマットおよびマウントされるときに使用されるデバイスは、インスタンスのブロックデバイスドライバーによって決まります。
Windows インスタンス – ブロックデバイスマッピングで指定されたデバイス名は、インスタンスの初回起動時に対応するブロックデバイスにマッピングされ、Ec2Config サービスによってドライブが初期化されマウントされます。ルートデバイスボリュームは、C:\
:\ としてマウントされます。インスタンスストアボリュームは、Z:\
、Y:\
などとしてマウントされます。EBS ボリュームについては、使用可能な任意のドライブ文字を使用してマウントできます。ただし、ドライブ文字を EBS ボリュームに割り当てる方法を設定することができます。詳細については、「Amazon EC2 Windows インスタンス上の Windows 起動エージェント」を参照してください。