メニュー
Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

ブロックデバイスマッピング

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

ルートデバイスボリュームの詳細については、「永続的ルートデバイスボリュームへの変更」を参照してください。

ブロックデバイスマッピングの概念

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

  • インスタンスストアボリューム (基盤となるハードウェアがインスタンスのホストコンピュータに物理的にアタッチされている仮想デバイス)

  • EBS ボリューム (リモートストレージデバイス)

ブロックデバイスマッピングでは、インスタンスにアタッチするブロックデバイス (インスタンスストアボリュームと EBS ボリューム) を定義します。ブロックデバイスマッピングは、AMI 作成プロセスの一環として、AMI から起動されるすべてのインスタンスによって使用されるように指定できます。また、インスタンスの起動時にブロックデバイスマッピングを指定することもできます。起動したインスタンスの AMI ですでに指定されているマッピングは、このマッピングによって上書きされます。インスタンスタイプによってサポートされるすべての NVMe インスタンスストアボリュームが、インスタンスの起動時に自動的に追加されます。AMI またはインスタンスのブロックデバイスマッピングに手動でボリュームを追加する必要はありません。

ブロックデバイスマッピングのエントリ

ブロックデバイスマッピングを作成するとき、インスタンスにアタッチする必要があるブロックデバイスごとに以下の情報を指定します。

  • Amazon EC2 内で使用されるデバイス名。インスタンスのブロックデバイスドライバーは、ボリュームのマウント時に実際のボリューム名を割り当てますが、この割り当てられた名前は、Amazon EC2 が推奨する名前とは異なる可能性があります。詳細については、「Linux インスタンスでのデバイスの名前付け」を参照してください。

  • [インスタンスストアボリューム] 仮想デバイス: ephemeral[0-23]。インスタンスで使用できるインスタンスストアボリュームの数とサイズは、インスタンスタイプによって異なります。

  • [NVMe インスタンスストアボリューム] これらのボリュームは /dev/nvme[0-7]n1 として自動的にマッピングされます。ブロックデバイスマッピングで、インスタンスタイプによってサポートされている NVMe ボリュームを指定する必要はありません。

  • [EBS ボリューム] ブロックデバイスを作成するときに使用するスナップショットの ID (snap-xxxxxxxx)。ボリュームサイズを指定する場合、この値はオプションです。

  • [EBS ボリューム] ボリュームのサイズ (GiB 単位)。指定されたサイズは、指定されたスナップショットのサイズ以上である必要があります。

  • [EBS ボリューム] インスタンス終了時にボリュームを削除するかどうか (true または false)。デフォルト値は、ルートデバイスボリュームでは true、アタッチされたボリュームでは false です。AMI を作成するときは、そのブロックデバイスマッピングがインスタンスからこの設定を継承します。インスタンスを起動するときに、AMI からこの設定を継承します。

  • [EBS ボリューム] ボリュームタイプとして、gp2 (汎用 SSD)、io1 (プロビジョンド IOPS SSD)、st1 (スループット最適化 HDD)、sc1 (Cold HDD)、または standard (マグネティック) を指定します。デフォルト値は、gp2 (Amazon EC2 コンソールの場合) または standard (AWS SDK および AWS CLI の場合) です。

  • [EBS ボリューム] ボリュームがサポートする 1 秒あたりの入力/出力オペレーションの数 (IOPS)。(gp2st1sc1standard ボリュームの場合は使用されません。)

ブロックデバイスマッピングのインスタンスストアの警告

ブロックデバイスマッピングでインスタンスストアボリュームがある場合は、インスタンスを AMI から起動すると、いくつかの警告が表示されます。

  • インスタンスタイプによって中に含まれるインスタンスストアボリューム数が異なり、インスタンスストアボリュームがまったく含まれないインスタンスタイプもあります。単一インスタンスストアボリュームのみをサポートするインスタンスタイプで、AMI が 2 つのインスタンスストアボリュームにマッピングされている場合、インスタンスは単一のインスタンスストアボリュームのみで起動します。

  • インスタンスストアボリュームをマッピングできるのは、起動時のみに限られます。インスタンスストアボリュームのないインスタンスを停止することはできません (t2.micro など)。インスタンスストアボリュームをサポートするインスタンスに変更し、インスタンスストアボリュームを含めて再起動します。ただし、AMI をインスタンスから作成し、インスタンスストアボリュームをサポートするインスタンスタイプで起動して、インスタンスストアボリュームをインスタンスにマッピングすることは可能です。

  • インスタンスストアボリュームをマッピングしたインスタンスを起動し、インスタンスを停止して、インスタンスストアボリュームの少ないインスタンスタイプに変更して再開すれば、最初の起動からマッピングしたインスタンスストアボリュームもインスタンスのメタデータに表示されます。ただし、インスタンスに使用できるのは、そのインスタンスタイプでサポートされているインスタンスストアボリュームの最大数までです。

    注記

    インスタンスが停止されると、インスタンスストアボリュームのデータはすべて失われます。

  • 起動時のインスタンスストア容量によっては、M3 インスタンスが AMI インスタンスストアブロックデバイスのマッピングを (起動時に指定されていない限り) 無視します。インスタンスの起動時にインスタンスストアボリュームを使用するには、起動する AMI ボリュームに AMI でインスタンスストアボリュームがマッピングされていたとしても、起動時にインスタンスストアブロックデバイスのマッピングを指定する必要があります。

ブロックデバイスマッピングの例

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

 インスタンス、インスタンスストアボリューム、および EBS ボリュームの間の関係。

このブロックデバイスマッピングの例は、このトピックのコマンドおよび API の例で使用されています。ブロックデバイスマッピングを作成するコマンドおよび API の例については、「AMI 用のブロックデバイスマッピングの指定」および「インスタンスの起動時にブロックデバイスマッピングを更新する」を参照してください。

オペレーティングシステムでデバイスを使用できるようにする方法

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

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

AMI ブロックデバイスマッピング

各 AMI にブロックデバイスマッピングがあります。このブロックデバイスマッピングは、AMI からのインスタンスの起動時にそのインスタンスにアタッチするブロックデバイスを指定します。Amazon が提供する AMI には、ルートデバイスのみが含まれます。追加のブロックデバイスを AMI に追加するには、独自の AMI を作成する必要があります。

AMI 用のブロックデバイスマッピングの指定

AMI を作成する場合に、ルートボリュームに加えて、ボリュームを指定するには、2 つの方法があります。インスタンスから AMI を作成する前に、実行中のインスタンスにすでにボリュームをアタッチしている場合、AMI のブロックデバイスマッピングにそれらの同じボリュームが含まれます。EBS ボリュームの場合、既存のデータが新しいスナップショットに保存され、それがブロックデバイスマッピングで指定される新しいスナップショットになります。インスタンスストアボリュームの場合、データは維持されません。

EBS-backed AMI の場合、ブロックデバイスマッピングを使用して、EBS ボリュームとインスタンスストアボリュームを追加できます。instance store-backed AMI の場合、イメージの登録時にイメージマニフェストファイルでブロックデバイスマッピングエントリを変更して、インスタンスストアボリュームのみを追加できます。

注記

M3 インスタンスの場合、インスタンスのブロックデバイスマッピングで起動時にインスタンスストアボリュームを指定する必要があります。AMI のブロックデバイスマッピングで指定したインスタンスストアボリュームは、インスタンスブロックデバイスマッピングの一部として指定されていない場合、M3 インスタンスを起動した際に無視される可能性があります。

To add volumes to an AMI using the console

  1. Open the Amazon EC2 console.

  2. In the navigation pane, choose Instances.

  3. Select an instance and choose Actions, Image, Create Image.

  4. In the Create Image dialog box, choose Add New Volume.

  5. Select a volume type from the Type list and a device name from the Device list. For an EBS volume, you can optionally specify a snapshot, volume size, and volume type.

  6. Choose Create Image.

コマンドラインを使用して AMI にボリュームを追加するには

EBS-Backed AMI のブロックデバイスマッピングを指定するには、-create-image AWS CLI コマンドを使用します。Instance Store-Backed AMI のブロックデバイスマッピングを指定するには、register-image AWS CLI コマンドを使用します。

次のパラメータを使用してブロックデバイスマッピングを指定します。

--block-device-mappings [mapping, ...]

インスタンスストアボリュームを追加するには、次のマッピングを使用します。

Copy
{ "DeviceName": "/dev/sdf", "VirtualName": "ephemeral0" }

空の 100 GiB マグネティック ボリュームを追加するには、次のマッピングを使用します。

Copy
{ "DeviceName": "/dev/sdg", "Ebs": { "VolumeSize": 100 } }

スナップショットに基づいた EBS ボリュームを追加するには、次のマッピングを使用します。

Copy
{ "DeviceName": "/dev/sdh", "Ebs": { "SnapshotId": "snap-xxxxxxxx" } }

デバイスのマッピングを省略するには、次のマッピングを使用します。

Copy
{ "DeviceName": "/dev/sdj", "NoDevice": "" }

または、次のコマンド (AWS Tools for Windows PowerShell) で -BlockDeviceMapping パラメータを使用することもできます。

AMI ブロックデバイスマッピングの EBS ボリュームの表示

AMI のブロックデバイスマッピングの EBS ボリュームを簡単に列挙できます。

To view the EBS volumes for an AMI using the console

  1. Open the Amazon EC2 console.

  2. In the navigation pane, choose AMIs.

  3. Choose EBS images from the Filter list to get a list of EBS-backed AMIs.

  4. Select the desired AMI, and look at the Details tab. At a minimum, the following information is available for the root device:

    • Root Device Type (ebs)

    • Root Device Name (for example, /dev/sda1)

    • Block Devices (for example, /dev/sda1=snap-1234567890abcdef0:8:true)

    If the AMI was created with additional EBS volumes using a block device mapping, the Block Devices field displays the mapping for those additional volumes as well. (Recall that this screen doesn't display instance store volumes.)

コマンドラインを使用して AMI の EBS ボリュームを表示するには

describe-images (AWS CLI) コマンドまたは Get-EC2Image (AWS Tools for Windows PowerShell) コマンドを使用して、AMI のブロックデバイスマッピング内の EBS ボリュームを列挙します。

インスタンスブロックデバイスマッピング

デフォルトでは、起動するインスタンスには、そのインスタンスを起動した AMI のブロックデバイスマッピングで指定されたストレージデバイスが含まれます。インスタンスを起動するときに、インスタンスのブロックデバイスマッピングへの変更を指定できます。この変更は AMI のブロックデバイスマッピングを上書きするか、このブロックデバイスマッピングに統合されます。

制限

  • ルートボリュームの場合、変更できるのはボリュームサイズ、ボリュームタイプ、および [Delete on Termination] フラグのみです。

  • EBS ボリュームを変更する場合、そのサイズを小さくすることはできません。そのため、指定するスナップショットのサイズは、AMI のブロックデバイスマッピングで指定されたスナップショットのサイズ以上であることが必要です。

インスタンスの起動時にブロックデバイスマッピングを更新する

インスタンスの起動時に、EBS ボリュームとインスタンスストアボリュームをインスタンスに追加できます。インスタンスのブロックデバイスマッピングを更新しても、そのインスタンスが起動された AMI のブロックデバイスマッピングは完全には変更されないことに注意してください。

To add volumes to an instance using the console

  1. Open the Amazon EC2 console.

  2. From the dashboard, choose Launch Instance.

  3. On the Choose an Amazon Machine Image (AMI) page, select the AMI to use and choose Select.

  4. Follow the wizard to complete the Choose an Instance Type and Configure Instance Details pages.

  5. On the Add Storage page, you can modify the root volume, EBS volumes, and instance store volumes as follows:

    • To change the size of the root volume, locate the Root volume under the Type column, and change its Size field.

    • To suppress an EBS volume specified by the block device mapping of the AMI used to launch the instance, locate the volume and click its Delete icon.

    • To add an EBS volume, choose Add New Volume, choose EBS from the Type list, and fill in the fields (Device, Snapshot, and so on).

    • To suppress an instance store volume specified by the block device mapping of the AMI used to launch the instance, locate the volume, and choose its Delete icon.

    • To add an instance store volume, choose Add New Volume, select Instance Store from the Type list, and select a device name from Device.

  6. Complete the remaining wizard pages, and choose Launch.

コマンドラインを使用してボリュームをインスタンスに追加するには

run-instances AWS CLI コマンドを使用して、インスタンスのブロックデバイスマッピングを指定します。

次のパラメータを使用してブロックデバイスマッピングを指定します。

--block-device-mappings [mapping, ...]

たとえば、EBS-backed AMI が、次のブロックデバイスマッピングを指定するとします。

  • /dev/sdb=ephemeral0

  • /dev/sdh=snap-1234567890abcdef0

  • /dev/sdj=:100

この AMI から起動したインスタンスに /dev/sdj がアタッチされないようにするには、次のマッピングを使用します。

Copy
{ "DeviceName": "/dev/sdj", "NoDevice": "" }

/dev/sdh のサイズを 300 GiB に増やすには、次のマッピングを指定します。デバイス名を指定することでボリュームを特定できるので、/dev/sdh のスナップショット ID を指定する必要はありません。

Copy
{ "DeviceName": "/dev/sdh", "Ebs": { "VolumeSize": 300 } }

追加インスタンスストアボリューム /dev/sdc をアタッチするには、次のマッピングを指定します。インスタンスタイプが複数のインスタンスストアボリュームをサポートしていない場合、このマッピングは効果がありません。

Copy
{ "DeviceName": "/dev/sdc", "VirtualName": "ephemeral1" }

または、New-EC2Instance コマンド (AWS Tools for Windows PowerShell) で -BlockDeviceMapping パラメータを使用することもできます。

実行中のインスタンスのブロックデバイスマッピングの更新

次の modify-instance-attribute AWS CLI コマンドを使用して、実行中のインスタンスのブロックデバイスマッピングを更新できます。この属性を変更する前に、インスタンスを停止する必要はありません。

Copy
aws ec2 modify-instance-attribute --instance-id i-1a2b3c4d --block-device-mappings file://mapping.json

たとえば、インスタンスの終了時にルートボリュームを保持するには、mapping.json で以下を指定します。

Copy
[ { "DeviceName": "/dev/sda1", "Ebs": { "DeleteOnTermination": false } } ]

または、Edit-EC2InstanceAttribute コマンド (AWS Tools for Windows PowerShell) で -BlockDeviceMapping パラメータを使用することもできます。

インスタンスブロックデバイスマッピングの EBS ボリュームの表示

インスタンスにマッピングされた EBS ボリュームを簡単に列挙できます。

注記

2009 年 10 月 31 日 API のリリース以前に起動されたインスタンスについては、AWS では、ブロックデバイスマッピングを表示できません。AWS がブロックデバイスマッピングを表示できるようにするには、ボリュームをデタッチしてから再アタッチする必要があります。

To view the EBS volumes for an instance using the console

  1. Open the Amazon EC2 console.

  2. In the navigation pane, choose Instances.

  3. In the search bar, type Root Device Type, and then choose EBS. This displays a list of EBS-backed instances.

  4. Select the desired instance and look at the details displayed in the Description tab. At a minimum, the following information is available for the root device:

    • Root device type (ebs)

    • Root device (for example, /dev/sda1)

    • Block devices (for example, /dev/sda1, /dev/sdh, and /dev/sdj)

    If the instance was launched with additional EBS volumes using a block device mapping, the Block devices field displays those additional volumes as well as the root device. (Recall that this dialog box doesn't display instance store volumes.)

    
              Block devices for an instance.
  5. To display additional information about a block device, select its entry next to Block devices. This displays the following information for the block device:

    • EBS ID (vol-xxxxxxxx)

    • Root device type (ebs)

    • Attachment time (yyyy-mmThh:mm:ss.ssTZD)

    • Block device status (attaching, attached, detaching, detached)

    • Delete on termination (Yes, No)

コマンドラインを使用してインスタンスの EBS ボリュームを表示するには

describe-instances (AWS CLI) コマンドまたは Get-EC2Instance (AWS Tools for Windows PowerShell) コマンドを使用して、インスタンスのブロックデバイスマッピングで EBS ボリュームを列挙します。

インスタンスストアボリュームのインスタンスブロックデバイスマッピングの表示

インスタンスのブロックデバイスマッピングを表示した場合、EBS ボリュームのみが表示され、インスタンスストアボリュームは表示されません。インスタンスメタデータを使用すると、完全なブロックデバイスマッピングに対してクエリを実行できます。インスタンスメタデータのすべてのリクエストの基本 URI は http://169.254.169.254/latest/ です。

まず、実行中にインスタンスに接続します。インスタンスからこのクエリを使用して、そのブロックデバイスマッピングを取得します。

Copy
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/block-device-mapping/

レスポンスには、インスタンスのブロックデバイスの名前が含まれます。たとえば、instance store-Backed m1.small インスタンスの出力は次のようになります。

ami
ephemeral0
root
swap

ami デバイスは、インスタンスによって判断されるルートデバイスです。インスタンスストアボリュームの名前は ephemeral[0-23] です。swap デバイスはページファイル用です。EBS ボリュームもマップした場合、そのボリュームは、ebs1ebs2 のように表示されます。

ブロックデバイスマッピングの個別のブロックデバイスの詳細を確認するには、ここで示すように、前のクエリにブロックデバイスの名前を追加します。

Copy
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0

詳細については、「インスタンスメタデータとユーザーデータ」を参照してください。