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

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

インスタンスを起動すると、インスタンスのルートボリュームが作成されます。ルートボリュームには、インスタンスの起動に使用されるイメージが含まれています。各インスタンスには 1 つのルートボリュームがあります。ストレージボリュームは、インスタンスの起動時または実行後に追加できます。

特定のデバイス名がルートボリューム用に予約されています。詳細については、「Linux インスタンスでのデバイス名」を参照してください。

ルートボリュームタイプ

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

Amazon EBS-backed インスタンス

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

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

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

st1 または sc1 EBS ボリュームをルートボリュームとして使用することはできません。

インスタンスの障害

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

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

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

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

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

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

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

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

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

Instance store-Backed インスタンス

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

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

Amazon EC2 instance store-backed インスタンスのルートボリューム
要件

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

インスタンスの障害

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

ルートボリュームタイプによる AMI の選択

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

Console
コンソールを使用して Amazon EBS-backed AMI を選択するには
  1. Amazon EC2 コンソールを開きます。

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

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

  4. (オプション) 選択の参考になる追加情報を表示するには、[設定] アイコンを選択し、表示する列をトグルして、[確認] を選択します。

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

コンソールを使用して instance store-backed AMI を選択するには
  1. Amazon EC2 コンソールを開きます。

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

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

  4. (オプション) 選択の参考になる追加情報を表示するには、[設定] アイコンを選択し、表示する列をトグルして、[確認] を選択します。

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

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

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

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

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 インスタンスです。

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

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

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

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

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

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

Console
コンソールを使用してインスタンスの起動時に永続化するようにルートボリュームを設定するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

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

  3. Amazon マシンイメージ (AMI) を選択して、インスタンスタイプ、キーペアの順に選択し、ネットワークを設定します。

  4. [ストレージを設定] には [アドバンスト] を選択します。

  5. ルートボリュームを拡張します。

  6. [終了時に削除] には、[いいえ] を選択します。

  7. インスタンスの設定が終了したら、[インスタンスを起動] をクリックします。

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

Console
Amazon EC2 コンソールを使用してルートボリュームが永続化するように設定されていることを確認するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

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

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

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. AMI ブロックデバイスマッピングで指定されたスナップショットのサイズを確認します。

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

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

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

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