Amazon EC2 インスタンスのルートデバイスボリューム - Amazon Elastic Compute Cloud

Amazon EC2 インスタンスのルートデバイスボリューム

インスタンスを起動するときは、ルートデバイスボリュームに格納されているイメージを使用してインスタンスがブートされます。Amazon EC2 のサービス開始当初は、すべての AMI が「Amazon EC2 インスタンスストア backed」でした。つまり、AMI から起動されるインスタンスのルートデバイスは、Amazon S3 に格納されたテンプレートから作成されるインスタンスストアボリュームです。Amazon EBS の導入後は Amazon EBS を基にした AMI も導入されました。つまり、AMI から起動されるインスタンスのルートデバイスが、Amazon EBS スナップショットから作成される Amazon EBS ボリュームであるということです。

お客様は、「Amazon EC2 インスタンスストア backed」の AMI と「Amazon EBS backed」の AMI から選択できます。推奨されるのは「Amazon EBS backed」です。この AMI は起動が高速であり、永続的ストレージを使用しているからです。

重要

インスタンスストアボリュームをルートデバイスとしてサポートするインスタンスタイプは C3、D2、G2、I2、M3、R3 のみです。

Amazon EC2 でルートボリュームに使用するデバイス名の詳細については、「Linux インスタンス上のデバイス名」を参照してください。

ルートデバイスストレージの概念

instance store-backed AMI または Amazon EBS-backed AMI のどちらからでもインスタンスを起動できます。AMI の説明にはそのタイプが含まれており、場所によってルートデバイスが ebs (Amazon EBS-Backed の場合) または instance store (Instance store-Backed の場合) と表示されます。各タイプの AMI を使用して実行できることには大きな違いがあるため、タイプを区別できることは重要です。違いについての詳細は ルートデバイスのストレージ を参照してください。

Instance store-Backed インスタンス

インスタンスストアをルートデバイスに使用するインスタンスでは自動的に、インスタンスストアボリュームを利用できるようになり、そのボリュームの 1 つがルートデバイスボリュームとなります。インスタンスを起動すると、インスタンスのブートに使用されるイメージがルートボリュームにコピーされます。インスタンスタイプによっては、オプションで追加のインスタンスストアボリュームを使用できることに注意してください。

インスタンスストアボリュームのデータはインスタンスが実行している間は維持されますが、インスタンスが終了すると (Instance store-Backed インスタンスは [Stop] アクションをサポートしていません)、またはインスタンスが失敗すると (基盤となるドライブに問題がある場合など)、削除されます。


     Amazon EC2 instance store-backed インスタンスのルートデバイス

障害が発生したり終了されたりした instance store-backed インスタンスは復元できません。Amazon EC2 instance store-backed インスタンスの使用を予定している場合は、インスタンスストアのデータを複数のアベイラビリティーゾーンにまたがって分散させることを強くお勧めします。また、インスタンスストアボリュームからの重要データは永続的ストレージに定期的にバックアップする必要があります。

詳細については、「Amazon EC2 インスタンスストア」を参照してください。

Amazon EBS-backed インスタンス

Amazon EBS をルートデバイスに使用するインスタンスには自動的に、Amazon EBS ボリュームがアタッチされます。Amazon EBS Backed インスタンスを起動するときに、AMI で参照されている Amazon EBS スナップショットごとに 1 つの Amazon EBS ボリュームが作成されます。インスタンスタイプによっては、Amazon EBS ボリュームまたはインスタンスストアボリュームをオプションで使用できます。


     Amazon EBS-backed インスタンスのルートデバイスボリュームおよびその他の Amazon EBS ボリューム

Amazon EBS-backed インスタンスは、停止後に再起動できます。アタッチされているボリュームに格納されているデータに影響を及ぼすこともありません。Amazon EBS-backed インスタンスが停止状態にあるときは、インスタンスおよびボリューム関連の様々なタスクを実行できます。たとえば、インスタンスのプロパティの変更、そのサイズの変更、あるいは使用しているカーネルを更新できます。また、デバッグなどの目的で別の実行中インスタンスにルートボリュームをアタッチすることもできます。

Amazon EBS-backed インスタンスに障害が発生した場合は、以下のいずれかの方法によってセッションを復元できます。

  • 停止して再起動します (最初にこの方法を試してください)。

  • 関連するすべてのボリュームのスナップショットを自動的に作成し、新しい AMI を作成します。詳細については、「Amazon EBS-backed Linux AMI を作成する」を参照してください。

  • 以下の手順に従って、ボリュームを新しいインスタンスにアタッチします。

    1. ルートボリュームのスナップショットを作成します。

    2. 作成したスナップショットを使用して新しい AMI を登録します。

    3. 新しい AMI から新しいインスタンスを起動します。

    4. 残りの Amazon EBS ボリュームを古いインスタンスからデタッチします。

    5. Amazon EBS ボリュームを新しいインスタンスに再アタッチします。

詳細については、「Amazon EBS ボリューム」を参照してください。

ルートデバイスタイプによる AMI の選択

インスタンスの起動時に指定する AMI によって、インスタンスのルートデバイスボリュームのタイプが決まります。次のいずれかの方法で、AMI をルートデバイスタイプ別に表示できます。

Console

コンソールを使用して Amazon EBS-Backed AMI を選択するには

  1. Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで [AMIs] を選択します。

  3. フィルタの一覧から、イメージタイプ ([Public images] など) を選択します。検索バーで、[Platform] を選択してオペレーティングシステム ([Amazon Linux] など) を選択し、[Root Device Type] をクリックして [EBS images] を選択します。

  4. (オプション) 選択の参考になる追加情報を表示するには、[Show/Hide Columns] アイコンを選択し、表示する列を更新して、[Close] を選択します。

  5. AMI を選択し、その AMI ID を記録します。

コンソールを使用して instance store-backed AMI を選択するには

  1. Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで [AMIs] を選択します。

  3. フィルタの一覧から、イメージタイプ ([Public images] など) を選択します。検索バーで、[プラットフォーム] を選択してオペレーティングシステム ([Amazon Linux] など) を選択し、[ルートデバイスタイプ] を選択して [インスタンスストア] を選択します。

  4. (オプション) 選択の参考になる追加情報を表示するには、[Show/Hide Columns] アイコンを選択し、表示する列を更新して、[Close] を選択します。

  5. AMI を選択し、その AMI ID を記録します。

AWS CLI

コマンドラインを使用して AMI のルートデバイスボリュームの種類を確認するには

次のいずれかのコマンドを使用できます。これらのコマンドラインインターフェイスの詳細については、Amazon EC2 へのアクセス を参照してください。

インスタンスのルートデバイスタイプの判別

New console

コンソールを使用してインスタンスのルートデバイスタイプを判別するには

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [Instances] を選択し、インスタンスを選択します。

  3. [Storage (ストレージ)] タブの [Root device details (ルートデバイスの詳細)] で、[Root device type (ルートデバイスタイプ)] の値を次のように確認します。

    • 値が EBS の場合は Amazon EBS-Backed インスタンスです。

    • 値が INSTANCE-STORE の場合、これは Instance store-Backed インスタンスです。

Old console

コンソールを使用してインスタンスのルートデバイスタイプを判別するには

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [Instances] を選択し、インスタンスを選択します。

  3. 次のように、[Description (説明)] タブで [Root device type (ルートデバイスタイプ)] の値を確認します。

    • 値が ebs の場合は Amazon EBS-Backed インスタンスです。

    • 値が instance store の場合、これは Instance store-Backed インスタンスです。

AWS CLI

コマンドラインを使用してインスタンスのルートデバイスタイプを判別するには

次のいずれかのコマンドを使用できます。これらのコマンドラインインターフェイスの詳細については、「Amazon EC2 へのアクセス」を参照してください。

永続的ルートボリュームへの変更

デフォルトでは、Amazon EBS-backed AMI のルートボリュームは、インスタンスを終了すると削除されます。インスタンスの終了後もボリュームが永続化するように、デフォルトの動作を変更できます。デフォルトの動作を変更するには、ブロックデバイスマッピングを使用して、DeleteOnTermination 属性を false に設定します。

インスタンスの起動時に永続化するためのルートボリュームの設定

Amazon EC2 コンソールまたはコマンドラインツールを使用して、インスタンスの起動時に永続化するようにルートボリュームを設定できます。

Console

コンソールを使用してインスタンスの起動時に永続化するようにルートボリュームを設定するには

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [Instances (インスタンス)]、[Launch instances (インスタンスの作成)] の順に選択します。

  3. [Choose an Amazon Machine Image (AMI)] ページで、使用する AMI を選択し、[Select] を選択します。

  4. ウィザードにしたがって [Choose an Instance Type] ページと [Configure Instance Details] ページを設定します。

  5. [Add Storage] ページで、ルートボリュームの [Delete On Termination] の選択を解除します。

  6. ウィザードの残りのページを完了した後、[Launch ] を選択します。

AWS CLI

AWS CLI を使用してインスタンスの起動時に永続化するようにルートボリュームを設定するには

run-instances コマンドを使用して、DeleteOnTermination 属性を false に設定するブロックデバイスマッピングを含めます。

$ aws ec2 run-instances --block-device-mappings file://mapping.json ...other parameters...

mapping.json で、以下を指定します。

[ { "DeviceName": "/dev/sda1", "Ebs": { "DeleteOnTermination": false } } ]
Tools for Windows PowerShell

Tools for Windows PowerShell を使用してインスタンスの起動時に永続化するようにルートボリュームを設定するには

New-EC2Instance コマンドを使用して、DeleteOnTermination 属性を false に設定するブロックデバイスマッピングを含めます。

C:\> $ebs = New-Object Amazon.EC2.Model.EbsBlockDevice C:\> $ebs.DeleteOnTermination = $false C:\> $bdm = New-Object Amazon.EC2.Model.BlockDeviceMapping C:\> $bdm.DeviceName = "dev/xvda" C:\> $bdm.Ebs = $ebs C:\> New-EC2Instance -ImageId ami-0abcdef1234567890 -BlockDeviceMapping $bdm ...other parameters...

既存のインスタンスで永続化するためのルートボリュームの設定

コマンドラインツールのみを使用して、実行中のインスタンスで永続化するようにルートボリュームを設定できます。

AWS CLI

AWS CLI を使用して、既存のインスタンスで永続化するようにルートボリュームを設定するには

DeleteOnTermination 属性を false に設定するブロックデバイスマッピングを指定して modify-instance-attribute コマンドを使用します。

aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --block-device-mappings file://mapping.json

mapping.json で、以下を指定します。

[ { "DeviceName": "/dev/xvda", "Ebs": { "DeleteOnTermination": false } } ]
Tools for Windows PowerShell

AWS Tools for Windows PowerShell を使用して、既存のインスタンスで永続化するようにルートボリュームを設定するには

DeleteOnTermination 属性を false に設定するブロックデバイスマッピングを指定して Edit-EC2InstanceAttribute コマンドを使用します。

C:\> $ebs = New-Object Amazon.EC2.Model.EbsInstanceBlockDeviceSpecification C:\> $ebs.DeleteOnTermination = $false C:\> $bdm = New-Object Amazon.EC2.Model.InstanceBlockDeviceMappingSpecification C:\> $bdm.DeviceName = "/dev/xvda" C:\> $bdm.Ebs = $ebs C:\> Edit-EC2InstanceAttribute -InstanceId i-1234567890abcdef0 -BlockDeviceMapping $bdm

ルートボリュームが永続化するように設定されていることの確認

Amazon EC2 コンソールまたはコマンドラインツールを使用して、ルートボリュームが永続化するように設定されていることを確認できます。

New console

Amazon EC2 コンソールを使用してルートボリュームが永続化するように設定されていることを確認するには

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [インスタンス] を選択してから、インスタンスを選択します。

  3. [Storage (ストレージ)] タブの [Block devices (ブロックデバイス)] で、ルートボリュームのエントリを見つけます。[Delete on termination (合わせて削除)] が No の場合、ボリュームは永続化するように設定されます。

Old console

Amazon EC2 コンソールを使用してルートボリュームが永続化するように設定されていることを確認するには

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで [インスタンス] を選択してから、インスタンスを選択します。

  3. [Description (説明)] タブで、[ルートデバイス] のエントリを選択します。[Delete on termination (合わせて削除)] が False の場合、ボリュームは永続化するように設定されます。

AWS CLI

AWS CLI を使用してルートボリュームが永続化するように設定されていることを確認するには

describe-instances コマンドを使用して、DeleteOnTermination レスポンス要素の BlockDeviceMappings 属性が false に設定されていることを確認します。

$ aws ec2 describe-instances --instance-id i-1234567890abcdef0
... "BlockDeviceMappings": [ { "DeviceName": "/dev/sda1", "Ebs": { "Status": "attached", "DeleteOnTermination": false, "VolumeId": "vol-1234567890abcdef0", "AttachTime": "2013-07-19T02:42:39.000Z" } } ...
Tools for Windows PowerShell

AWS Tools for Windows PowerShell を使用してルートボリュームが永続化するように設定されていることを確認するには

Get-EC2Instance コマンドを使用して、DeleteOnTermination レスポンス要素の BlockDeviceMappings 属性が false に設定されていることを確認します。

C:\> (Get-EC2Instance -InstanceId i-i-1234567890abcdef0).Instances.BlockDeviceMappings.Ebs

ルートボリュームの初期サイズの変更

デフォルトでは、ルートボリュームのサイズはスナップショットのサイズによって決まります。次のようにインスタンスのブロックデバイスマッピングを使用して、ルートボリュームの初期サイズを増やすことができます。

  1. AMI ブロックデバイスマッピングの EBS ボリュームの表示 の説明に従って、AMI で指定されているルートボリュームのデバイス名を決定します。

  2. Amazon EBS スナップショットに関する情報の表示 の説明に従って、AMI ブロックデバイスマッピングで指定されたスナップショットのサイズを確認します。

  3. インスタンス起動時のブロックデバイスマッピングの更新 の説明に従って、インスタンスブロックデバイスマッピングを使用してルートボリュームのサイズを上書きし、スナップショットサイズよりも大きいボリュームサイズを指定します。

例えば、インスタンスブロックデバイスマッピングの次のエントリは、ルートボリュームのサイズ /dev/xvda を 100 GiB に増やします。スナップショット ID は AMI ブロックデバイスマッピングで既に指定されているため、インスタンスブロックデバイスマッピングでスナップショット ID を省略できます。

{ "DeviceName": "/dev/xvda", "Ebs": { "VolumeSize": 100 } }

詳細については、「ブロックデバイスマッピング」を参照してください。