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 ボリューム」を参照してください。
制限
st1
または sc1
EBS ボリュームをルートボリュームとして使用することはできません。
インスタンスの障害
Amazon EBS-backed インスタンスに障害が発生した場合は、以下のいずれかの方法によってセッションを復元できます。
-
停止して再起動します (最初にこの方法を試してください)。
-
関連するすべてのボリュームのスナップショットを自動的に作成し、新しい AMI を作成します。詳細については、Amazon EBS-backed Linux AMI を作成するを参照してください。
-
以下の手順に従って、ボリュームを新しいインスタンスにアタッチします。
-
ルートボリュームのスナップショットを作成します。
-
作成したスナップショットを使用して新しい AMI を登録します。
-
新しい AMI から新しいインスタンスを起動します。
-
残りの Amazon EBS ボリュームを古いインスタンスからデタッチします。
-
Amazon EBS ボリュームを新しいインスタンスに再アタッチします。
Instance store-Backed インスタンス
インスタンスストアをルートデバイスに使用するインスタンスでは、自動的に 1 つまたは複数のインスタンスストアボリュームを利用できるようになり、そのボリュームの 1 つがルートボリュームとして機能します。インスタンスを起動すると、インスタンスのブートに使用されるイメージがルートボリュームにコピーされます。インスタンスタイプによっては、オプションで追加のインスタンスストアボリュームを使用できることに注意してください。
インスタンスストアボリュームのデータはインスタンスが実行している間は維持されますが、インスタンスが終了すると (Instance store-Backed インスタンスは [Stop] アクションをサポートしていません)、またはインスタンスが失敗すると (基盤となるドライブに問題がある場合など)、削除されます。詳細については、「Amazon EC2 インスタンスストア」を参照してください。
要件
インスタンスストアボリュームをルートボリュームとしてサポートするインスタンスタイプは C3、D2、I2、M3、R3 のみです。
インスタンスの障害
障害が発生したり終了されたりした instance store-backed インスタンスは復元できません。Amazon EC2 instance store-backed インスタンスの使用を予定している場合は、インスタンスストアのデータを複数のアベイラビリティーゾーンにまたがって分散させることを強くお勧めします。また、インスタンスストアボリュームからの重要データは永続的ストレージに定期的にバックアップする必要があります。
ルートボリュームタイプによる AMI の選択
インスタンスの起動時に指定する AMI によって、インスタンスのルートデバイスボリュームのタイプが決まります。次のいずれかの方法で、AMI をルートデバイスタイプ別に表示できます。
- Console
-
コンソールを使用して Amazon EBS-backed AMI を選択するには
-
Amazon EC2 コンソールを開きます。
-
ナビゲーションペインで [AMIs] を選択します。
-
フィルタの一覧から、イメージタイプ ([Public images] など) を選択します。検索バーで、[プラットフォーム] を選択してオペレーティングシステム ([Amazon Linux] など) を選択し、[ルートデバイスタイプ] を選択してルートボリュームタイプ ([ebs]) を選択します。
-
(オプション) 選択の参考になる追加情報を表示するには、[設定] アイコンを選択し、表示する列をトグルして、[確認] を選択します。
-
AMI を選択し、その AMI ID を記録します。
コンソールを使用して instance store-backed AMI を選択するには
-
Amazon EC2 コンソールを開きます。
-
ナビゲーションペインで [AMIs] を選択します。
-
フィルタの一覧から、イメージタイプ ([Public images] など) を選択します。検索バーで、[プラットフォーム] を選択してオペレーティングシステム ([Amazon Linux] など) を選択し、[ルートデバイスタイプ] を選択してルートボリュームタイプ ([instance-store]) を選択します。
-
(オプション) 選択の参考になる追加情報を表示するには、[設定] アイコンを選択し、表示する列をトグルして、[確認] を選択します。
-
AMI を選択し、その AMI ID を記録します。
- AWS CLI
-
コマンドラインを使用して AMI のルートデバイスボリュームの種類を確認するには
次のいずれかのコマンドを使用できます。これらのコマンドラインインターフェイスの詳細については、Amazon EC2 へのアクセスを参照してください。
インスタンスのルートデバイスタイプの判別
- Console
-
コンソールを使用してインスタンスのルートデバイスタイプを判別するには
-
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。
-
ナビゲーションペインで [Instances] を選択し、インスタンスを選択します。
-
[Storage (ストレージ)] タブの [Root device details (ルートデバイスの詳細)] で、[Root device type (ルートデバイスタイプ)] の値を次のように確認します。
- AWS CLI
-
コマンドラインを使用してインスタンスのルートデバイスタイプを判別するには
次のいずれかのコマンドを使用できます。これらのコマンドラインインターフェイスの詳細については、「Amazon EC2 へのアクセス」を参照してください。
永続的ルートボリュームへの変更
デフォルトでは、Amazon EBS-backed AMI のルートボリュームは、インスタンスを終了すると削除されます。インスタンスの終了後もボリュームが永続化するように、デフォルトの動作を変更できます。デフォルトの動作を変更するには、ブロックデバイスマッピングを使用して、DeleteOnTermination
属性を false
に設定します。
インスタンスの起動時に永続化するためのルートボリュームの設定
Amazon EC2 コンソールまたはコマンドラインツールを使用して、インスタンスの起動時に永続化するようにルートボリュームを設定できます。
- Console
-
コンソールを使用してインスタンスの起動時に永続化するようにルートボリュームを設定するには
-
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。
-
ナビゲーションペインで [インスタンス]、[インスタンスの作成] の順に選択します。
-
Amazon マシンイメージ (AMI) を選択して、インスタンスタイプ、キーペアの順に選択し、ネットワークを設定します。
-
[ストレージを設定] には [アドバンスト] を選択します。
-
ルートボリュームを拡張します。
-
[終了時に削除] には、[いいえ] を選択します。
-
インスタンスの設定が終了したら、[インスタンスを起動] をクリックします。
- 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 コンソールを使用してルートボリュームが永続化するように設定されていることを確認するには
-
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。
-
ナビゲーションペインで [インスタンス] を選択してから、インスタンスを選択します。
-
[ストレージ] タブの [ブロックデバイス] で、ルートボリュームのエントリを見つけます。[合わせて削除] が 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
ルートボリュームの初期サイズの変更
デフォルトでは、ルートボリュームのサイズはスナップショットのサイズによって決まります。次のようにインスタンスのブロックデバイスマッピングを使用して、ルートボリュームの初期サイズを増やすことができます。
例えば、インスタンスブロックデバイスマッピングの次のエントリは、ルートボリュームのサイズ /dev/xvda
を 100 GiB に増やします。スナップショット ID は AMI ブロックデバイスマッピングで既に指定されているため、インスタンスブロックデバイスマッピングでスナップショット ID を省略できます。
{
"DeviceName": "/dev/xvda",
"Ebs": {
"VolumeSize": 100
}
}
詳細については、「ブロックデバイスマッピング」を参照してください。