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

Linux インスタンスの休止

インスタンスを休止すると、オペレーティングシステムに対して休止の実行 (suspend-to-disk) が指示されます。休止に伴って、インスタンスメモリ (RAM) の内容が Amazon EBS ルートボリュームに保存されます。インスタンスの Amazon EBS ルートボリュームとアタッチされた Amazon EBS データボリュームは保持されます。インスタンスを再起動すると、次のようになります。

  • Amazon EBS ルートボリュームが前の状態に復元されます。

  • RAM の内容が再ロードされます。

  • インスタンスで以前に実行されていたプロセスが再開されます。

  • 以前にアタッチされていたデータボリュームが再アタッチされ、インスタンスがそのインスタンス ID を保持します。

インスタンスは、休止が有効になっており休止の前提条件を満たしている場合のみ、休止状態にすることができます。

インスタンスまたはアプリケーションが、ブートストラップし、メモリフットプリントを構築して完全に生産性を発揮するのに時間がかかる場合は、休止を使用してインスタンスを事前ウォーミングできます。インスタンスを事前ウォーミングするには、次の操作を行います。

  1. 休止を有効にしてインスタンスを起動します。

  2. インスタンスを必要な状態に移行させます。

  3. インスタンスを休止し、必要に応じて同じ状態に回復されるようにします。

インスタンスが stopped 状態にあるときは、休止されているインスタンスの使用料は課金しません。RAM の内容が Amazon EBS ルートボリュームに転送されて、インスタンスが stopping 状態にある間は、インスタンスの使用量に対して課金されます。(この点は、休止せずにインスタンスを停止した場合と異なります。) 使用量はデータ転送料の課金対象外です。ただし、Amazon EBS ボリュームのストレージは、RAM の内容のストレージも含めて、課金対象になります。

インスタンスが必要なくなった場合、stopped (休止) 状態にある場合を含め、いつでも終了することができます。詳細については、「インスタンスの終了」を参照してください。

注記

Windows インスタンスでの休止の使用については、「Windows インスタンスの休止」 (Windows インスタンスの Amazon EC2 ユーザーガイド) を参照してください。

休止の概要

次の図は、休止処理の基本的な概要を示しています。


				休止フローの概要

実行中のインスタンスを休止すると、次の処理が実行されます。

  • 休止プロセスを開始すると、インスタンスは stopping 状態に移行します。オペレーティングシステムに対して休止の実行 (suspend-to-disk) が指示されます。休止に伴ってすべてのプロセスがフリーズされ、RAM の内容が Amazon EBS ルートボリュームに保存されます。その後に、通常のシャットダウンが実行されます。

  • シャットダウンプロセスが完了した後、インスタンスは stopped 状態に移行します。

  • Amazon EBS ボリュームはインスタンスに接続されたままとなり、保存された RAM の内容を含め、データは保持されます。

  • ほとんどの場合、インスタンスは再開時に新しい基盤となるホストコンピュータに移行されます。これは、インスタンスを停止して再開した場合と同じです。

  • インスタンスを再開すると、インスタンスが起動し、オペレーティングシステムが Amazon EBS ルートボリュームから RAM の内容を読み取ります。次に、プロセスのフリーズが解除されて以前の状態が回復されます。

  • インスタンスの休止および再起動時に、インスタンスにはプライベート IPv4 アドレスと任意の IPv6 アドレスが保持されます。インスタンスの再起動時に、パブリック IPv4 アドレスを解放し、新しいアドレスを割り当てます。

  • インスタンスには関連付けられた Elastic IP アドレスが保持されます。休止されているインスタンスに関連付けられた Elastic IP アドレスに対して課金されます。EC2-Classic を利用した場合、インスタンスを休止すると、Elastic IP アドレスとインスタンスの関連付けが解除されます。詳細については、「EC2-Classic」を参照してください。

  • ClassicLink インスタンスを休止すると、今までリンクされていた VPC とのリンクが解除されます。インスタンスを再起動した後に再び VPC にリンクする必要があります。詳細については、「ClassicLink」を参照してください。

休止と再起動、停止、および終了の違いについては、「再起動、停止、休止、終了の違い」を参照してください。

休止の前提条件

インスタンスを休止するには、以下の前提条件を設定する必要があります。

  • サポートされているインスタンスファミリー - C3、C4、C5、M3、M4、M5、R3、R4、および R5

  • インスタンス RAM サイズ - 150 GB 未満である必要があります。

  • インスタンスサイズ - ベアメタルインスタンスにはサポートされていません。

  • サポートされる AMI (休止状態をサポートする HVM AMI である必要があります):

    • Amazon Linux 2 AMI (2019 年 8 月 29 日以降にリリース)

    • Amazon Linux AMI 2018.03 (2018 年 11 月 16 日以降にリリース)

    • Ubuntu 18.04 LTS - Bionic AMI (シリアル 20190722.1 以降でリリース)Ubuntu 18.04 LTS - Bionic を使用するインスタンスでは KASLR を無効にすることをお勧めします。詳細については、「インスタンスでの KASLR の無効化 (Ubuntu のみ)」を参照してください。

    独自の AMI が休止をサポートするように設定するには、「休止をサポートするように既存の AMI を設定する」を参照してください。

    他のバージョンの Ubuntu および他のオペレーティングシステムはまもなくサポートされる予定です。

    Windows のサポートされている AMI の詳細については、「休止の前提条件」 (Windows インスタンスの Amazon EC2 ユーザーガイド) を参照してください。

  • ルートボリュームタイプ - インスタンスストアボリュームではなく、Amazon EBS ボリュームにする必要があります。

  • Amazon EBS ルートボリュームサイズ - RAM の内容を保存し、OS またはアプリケーションなど、予想される使用量に対応できる大きさである必要があります。休止を有効にすると、RAM を保存するために起動時にルートボリュームでスペースが割り当てられます。

  • Amazon EBS ルートボリュームの暗号化 - 休止を使用するには、休止時にメモリにある機密性の高いコンテンツを保護するため、ルートボリュームを暗号化する必要があります。RAM データが Amazon EBS のルートボリュームに移動されるときは、常に暗号化されます。ルートボリュームの暗号化は、インスタンスの起動時に適用されます。ルートボリュームが暗号化された Amazon EBS ボリュームであることを確認するには、次の 3 つのオプションのいずれかを使用します。

    • EBS の「シングルステップ」暗号化: 1 回の run-instances API 呼び出しで、暗号化されていない AMI から暗号化された EBS-Backed EC2 インスタンスを起動し、同時に休止機能を有効にすることができます。詳細については、「EBS-Backed AMI での暗号化の利用」を参照してください。

    • デフォルトでの EBS 暗号化: EBS 暗号化をデフォルトで有効にして、AWS アカウントで作成されたすべての新しい EBS ボリュームを暗号化できます。この方法では、インスタンスの起動時に暗号化のインテントを指定することなく、インスタンスの休止を有効にすることができます。詳細については、「デフォルトでの暗号化」を参照してください。

    • 暗号化された AMI: 暗号化された AMI を使用してインスタンスを起動することで、EBS 暗号化を有効にすることができます。暗号化されたルートスナップショットが AMI にない場合は、それを新しい AMI にコピーして暗号化をリクエストできます。詳細については、「コピー時に暗号化されていないイメージを暗号化する」および「AMI のコピー」を参照してください。

  • 起動時に休止を有効にする - 既存のインスタンス (実行中または停止状態) で休止を有効にすることはできません。詳細については、「インスタンスの休止の有効化」を参照してください。

  • 購入オプション - この機能は オンデマンドインスタンス および リザーブドインスタンス でのみ使用できます。スポットインスタンス では使用できません。詳細については、「中断した スポットインスタンス の休止」を参照してください。

制約事項

  • 以下のアクションは、休止ではサポートされません。

    • 休止したインスタンスのタイプまたはサイズを変更する

    • 休止が有効にされているインスタンスからスナップショットまたは AMI を作成する

    • 休止したインスタンスからスナップショットまたは AMI を作成する

  • instance store-backed インスタンスは停止または休止できません。*

  • RAM が 150 GB を超えるインスタンスを休止することはできません。

  • Auto Scaling グループであるインスタンスまたは Amazon ECS が使用中のインスタンスを休止することはできません。インスタンスが Auto Scalingグループにあり、そのインスタンスを休止しようとしている場合、Amazon EC2 Auto Scaling サービスは停止したインスタンスを異常と判断し、そのインスタンスを終了して代わりのインスタンスを起動する場合があります。詳細については、Amazon EC2 Auto Scaling ユーザーガイドの「Auto Scaling インスタンスのヘルスチェック」を参照してください。

  • 60 日間以上にわたる休止はサポートしていません。60 日より長くインスタンスを保持するには、休止したインスタンスを再起動し、インスタンスを停止して、再起動する必要があります。

  • 当社では、継続的にプラットフォームをアップグレードやセキュリティパッチで更新しており、休止されている既存のインスタンスと競合する可能性があります。シャットダウンまたは再起動を実行して、必要なアップグレードやセキュリティパッチを適用できるように、休止されているインスタンスの再起動が必要な重要な更新については通知します。

*休止が有効にされている C3 および R3 インスタンスには、インスタンスストアボリュームを使用しないでください。

休止をサポートするように既存の AMI を設定する

独自の AMI を使用して起動したインスタンスを休止するには、最初に休止を有効にするように AMI を設定する必要があります。詳細については、「インスタンスソフトウェアの更新」を参照してください。

サポートされている AMI のいずれかを使用する場合、またはサポートされている AMI のいずれかに基づいて AMI を作成する場合は、休止をサポートするように AMI を設定する必要はありません。これらの AMI は、休止をサポートするように事前に設定されています。

Amazon Linux 2Amazon LinuxUbuntu
Amazon Linux 2

Amazon Linux 2 AMI で休止がサポートされるように設定するには

  1. 次のコマンドを使用して、最新のカーネル 4.14.138-114.102 以降に更新します。

    [ec2-user ~]$ sudo yum update kernel
  2. 次のコマンドを使用してリポジトリから ec2-hibinit-agent パッケージをインストールします。

    [ec2-user ~]$ sudo yum install ec2-hibinit-agent
  3. 次のコマンドを実行して、インスタンスを再起動します。

    [ec2-user ~]$ sudo reboot
  4. 次のコマンドを実行して、カーネルバージョンが 4.14.138-114.102 以降に更新されていることを確認します。

    [ec2-user ~]$ uname -a
  5. インスタンスを停止し、AMI を作成します。詳細については、「インスタンスからの Linux AMI の作成」を参照してください。

Amazon Linux

Amazon Linux AMI で休止がサポートされるように設定するには

  1. 次のコマンドを使用して、最新のカーネルを 4.14.77-70.59 以降に更新します。

    [ec2-user ~]$ sudo yum update kernel
  2. 次のコマンドを使用してリポジトリから ec2-hibinit-agent パッケージをインストールします。

    [ec2-user ~]$ sudo yum install ec2-hibinit-agent
  3. 次のコマンドを実行して、インスタンスを再起動します。

    [ec2-user ~]$ sudo reboot
  4. 次のコマンドを実行して、カーネルバージョンが 4.14.77-70.59 以降に更新されていることを確認します。

    [ec2-user ~]$ uname -a
  5. インスタンスを停止し、AMI を作成します。詳細については、「インスタンスからの Linux AMI の作成」を参照してください。

Ubuntu

Ubuntu 18.04 LTS AMI で休止がサポートされるように設定するには

  1. 次のコマンドを使用して、最新のカーネルを 4.15.0-1044 以降に更新します。

    [ec2-user ~]$ sudo apt update [ec2-user ~]$ sudo apt dist-upgrade
  2. 次のコマンドを使用してリポジトリから ec2-hibinit-agent パッケージをインストールします。

    [ec2-user ~]$ sudo apt install ec2-hibinit-agent
  3. 次のコマンドを実行して、インスタンスを再起動します。

    [ec2-user ~]$ sudo reboot
  4. 次のコマンドを実行して、カーネルバージョンが 4.15.0-1044 以降に更新されていることを確認します。

    [ec2-user ~]$ uname -a

インスタンスの休止の有効化

インスタンスを休止するには、最初に休止を有効にする必要があります。休止を有効にするには、インスタンスの起動時に有効にする必要があります。

重要

インスタンスの起動後に、そのインスタンスの休止を有効または無効にすることはできません。

ConsoleAWS CLIAWS Tools for Windows PowerShell
Console

コンソールを使用して休止を有効にするには

  1. インスタンス起動ウィザードを使用してインスタンスを起動する」の手順に従います。

  2. [Amazon マシンイメージ (AMI)] ページで、休止をサポートする AMI を選択します。サポート対象の AMI の詳細については、「休止の前提条件」を参照してください。

  3. [インスタンスタイプの選択] ページで、サポート対象のインスタンスタイプを選択し、[次の手順: インスタンスの詳細の設定] を選択します。サポート対象のインスタンスタイプの詳細については、「休止の前提条件」を参照してください。

  4. [インスタンスの詳細設定] ページの [Stop - Hibernate Behavior (停止 - 休止動作)] で、[Enable hibernation as an additional stop behavior (追加の停止動作として休止を有効にする)] チェックボックスをオンにします。

  5. ウィザードに従って続行します。[Review Instance Launch (インスタンス作成の確認)] ページでオプションの確認が終了したら、[Launch (起動)] を選択します。詳細については、「インスタンス起動ウィザードを使用してインスタンスを起動する」を参照してください。

AWS CLI

AWS CLI を使用して休止を有効にするには

run-instances コマンドを使用して、インスタンスを起動します。休止を有効にするには、--hibernation-options Configured=true パラメータを使用します。

aws ec2 run-instances --image-id ami-0abcdef1234567890 --instance-type m5.large --hibernation-options Configured=true --count 1 --key-name MyKeyPair
AWS Tools for Windows PowerShell

AWS Tools for Windows PowerShell を使用して休止を有効にするには

New-EC2Instance コマンドを使用してインスタンスを起動します。-HibernationOptions_Configured $true パラメータを使用して休止を有効にします。

New-EC2Instance -ImageId ami-0abcdef1234567890 -InstanceType m5.large -HibernationOptions_Configured $true -MinCount 1 -MaxCount 1 -KeyName MyKeyPair

 

ConsoleAWS CLIAWS Tools for Windows PowerShell
Console

コンソールを使用して、インスタンスで休止が有効かどうかを表示するには

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

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

  3. インスタンスを選択し、詳細ペインの [Stop - Hibernation behavior (停止 - 休止動作)] を確認します。[有効] は、インスタンスが休止に対して有効であることを示します。

AWS CLI

AWS CLI を使用して、インスタンスで休止が有効かどうかを表示するには

describe-instances コマンドを使用し、--filters "Name=hibernation-options.configured,Values=true" パラメータを指定して、休止が有効になっているインスタンスをフィルタリングします。

aws ec2 describe-instances --filters "Name=hibernation-options.configured,Values=true"

次の出力フィールドは、インスタンスで休止が有効になっていることを示しています。

"HibernationOptions": { "Configured": true }
AWS Tools for Windows PowerShell

AWS Tools for Windows PowerShell を使用して、インスタンスで休止が有効になっていることを確認するには

Get-EC2Instance コマンドを使用し、-Filter @{ Name="hibernation-options.configured"; Value="true"} パラメータを指定して、休止が有効になっているインスタンスをフィルタリングします。

Get-EC2Instance -Filter @{ Name="hibernation-options.configured"; Value="true"}

休止が有効になっている EC2 インスタンスが出力に一覧表示されます。

インスタンスでの KASLR の無効化 (Ubuntu のみ)

Ubuntu 18.04 LTS - Bionic (シリアル 20190722.1 以降でリリース) で新しく起動されたインスタンスで休止を使用するには、KASLR (Kernel Address Space Layout Randomization) を無効にするようお勧めします。Ubuntu 18.04 LTS では、デフォルトで KASLR が有効になっています。KASLR は、Linux カーネルに対する標準的なセキュリティ機能であり、カーネルのベースアドレス値をランダム化することにより、未知のメモリアクセス脆弱性による露出と影響を軽減するために役立ちます。KASLR が有効になっている場合は、インスタンスを休止後に再開できないこともあります。

KASLR の詳細については、Ubuntu の機能に関する記述を参照してください。

Ubuntu で起動したインスタンスで KASLR を無効にするには

  1. SSH を使用してインスタンスに接続します。詳細については、「SSH を使用した Linux インスタンスへの接続」を参照してください。

  2. 適切なエディタで、/etc/default/grub.d/50-cloudimg-settings.cfg ファイルを開きます。次の例のように、GRUB_CMDLINE_LINUX_DEFAULT 行を編集して、行末に nokaslr オプションを追加します。

    GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0 nvme_core.io_timeout=4294967295 nokaslr"
  3. ファイルを保存し、エディタを終了します。

  4. grub 設定を再構築するには、次のコマンドを実行します。

    [ec2-user ~]$ sudo update-grub
  5. インスタンスを再起動します。

    [ec2-user ~]$ sudo reboot
  6. 次のコマンドの実行時に、nokaslr が追加されていることを確認します。

    [ec2-user ~]$ cat /proc/cmdline

    コマンドの出力には、nokaslr オプションが含まれている必要があります。

インスタンスを休止する

インスタンスは、休止が有効になっており休止の前提条件を満たしている場合に、休止することができます。インスタンスを休止できない場合、通常のシャットダウンが実行されます。

ConsoleAWS CLIAWS Tools for Windows PowerShell
Console

コンソールを使用して Amazon EBS-Backed インスタンスを休止するには

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

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

  3. インスタンスを選択し、[操作]、[インスタンスの状態]、[停止] の順に選択します。[Stop - Hibernate (停止 - 休止)] が無効になっている場合は、インスタンスが既に休止または停止しているか、休止できません。詳細については、「休止の前提条件」を参照してください。

  4. 確認ダイアログボックスで [Yes, Stop - Hibernate (停止する - 休止)] を選択します。インスタンスが休止するまで、数分かかる場合があります。インスタンスが休止に入るとき、インスタンスの状態が [停止中] に変わり、インスタンスが休止すると [停止] になります。

AWS CLI

AWS CLI を使用して Amazon EBS-Backed インスタンスを休止するには

stop-instances コマンドを使用して --hibernate パラメータを指定します。

aws ec2 stop-instances --instance-ids i-1234567890abcdef0 --hibernate
AWS Tools for Windows PowerShell

AWS Tools for Windows PowerShell を使用して Amazon EBS-Backed インスタンスを休止するには

Stop-EC2Instance コマンドを使用して、-Hibernate $true パラメータを指定します。

Stop-EC2Instance -InstanceId i-1234567890abcdef0 -Hibernate $true

 

ConsoleAWS CLIAWS Tools for Windows PowerShell
Console

コンソールを使用して、インスタンスで休止が開始されたかどうかを表示するには

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

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

  3. インスタンスを選択し、詳細ペインの [状態遷移の理由メッセージ] を確認します。Client.UserInitiatedHibernate: User initiated hibernate というメッセージは、インスタンスで休止が開始されたことを示します。

AWS CLI

AWS CLI を使用して、インスタンスで休止が開始されたかどうかを表示するには

describe-instances コマンドを使用して、state-reason-code フィルターを指定し、休止が開始されたインスタンスを確認します。

aws ec2 describe-instances --filters "Name=state-reason-code,Values=Client.UserInitiatedHibernate"

出力の次のフィールドは、そのインスタンスで休止が開始されたことを示しています。

"StateReason": { "Code": "Client.UserInitiatedHibernate" }
AWS Tools for Windows PowerShell

AWS Tools for Windows PowerShell を使用して、インスタンスで休止が開始されたかどうかを確認するには

Get-EC2Instance コマンドを使用し、state-reason-code フィルタを指定して休止が開始されたインスタンスを確認します。

Get-EC2Instance -Filter @{Name="state-reason-code";Value="Client.UserInitiatedHibernate"}

休止が開始された EC2 インスタンスが出力に一覧表示されます。

休止したインスタンスを再開する

休止したインスタンスは、停止したインスタンスを開始するのと同じ方法で開始して、再開します。

ConsoleAWS CLIAWS Tools for Windows PowerShell
Console

コンソールを使用して、休止したインスタンスを再開するには

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

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

  3. 休止したインスタンスを選択し、[操作]、[インスタンスの状態]、[開始] の順に選択します。インスタンスが running 状態になるまで、数分かかる場合があります。この間、インスタンスの ステータスチェック では、インスタンスが再起動するまで、インスタンスは失敗状態にあるように表示されます。

AWS CLI

AWS CLI を使用して、休止したインスタンスを再開するには

start-instances コマンドを使用します。

aws ec2 start-instances --instance-ids i-1234567890abcdef0
AWS Tools for Windows PowerShell

AWS Tools for Windows PowerShell を使用して、休止したインスタンスを再開するには

Start-EC2Instance コマンドを使用します。

Start-EC2Instance -InstanceId i-1234567890abcdef0

休止のトラブルシューティング

次の情報を使用して、インスタンスを休止するときに発生する可能性がある問題の診断や修復を行います。

起動直後に休止できません

インスタンスの起動後にすぐ休止しようとすると、エラーが発生します。

起動後、休止するまで約 2 分待つ必要があります。

stopping から stopped への移行に時間がかかりすぎ、起動後にメモリ状態が復元されません

休止しているインスタンスが stopping 状態から stopped に移行するのに時間がかかり過ぎ、メモリの状態が起動後に復元されない場合は、休止が正しく設定されていない可能性があります。

インスタンスのシステムログをチェックして、休止に関連するメッセージを探します。システムログにアクセスするには、インスタンスに接続するか、get-console-output コマンドを使用します。hibinit-agent からログ行を見つけます。ログ行が失敗を示している場合、またはログ行がない場合、起動時に休止の設定に失敗している可能性が高いと思われます。

たとえば、メッセージ「hibinit-agent: Insufficient disk space. Cannot create setup for hibernation. Please allocate a larger root device.」は、インスタンスのルートボリュームの大きさが十分ではないことを示しています。

hibinit-agent の最後のログ行が hibinit-agent: Running: swapoff /swap である場合、休止は正常に設定されています。

これらのプロセスで何もログが表示されない場合、AMI が休止をサポートしていない可能性があります。サポート対象の AMI の詳細については、「休止の前提条件」を参照してください。独自の AMI を使用した場合は、休止をサポートするように既存の AMI を設定する に関する指示に従っていることを確認します。

インスタンスが stopping 状態で止まりました

インスタンスを休止し、stopping 状態で止まったように見える場合は、インスタンスを強制終了できます。詳細については、「インスタンスの停止に関するトラブルシューティング」を参照してください。