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

インスタンスの休止

インスタンスを休止すると、オペレーティングシステムに休止を実行するように合図します (ディスクの停止)。これにより、内容がインスタンスのメモリ (RAM) から Amazon EBS ルートボリュームに保存されます。インスタンスの Amazon EBS ルートボリュームとアタッチされた Amazon EBS データボリュームは保持されます。インスタンスを再開すると、Amazon EBS ルートボリュームは以前の状態に復元され、RAM の内容が再ロードされて、過去にインスタンスで実行されていたプロセスが再開されます。以前にアタッチされたデータボリュームは再アタッチされ、インスタンスはそのインスタンス ID を保持します。

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

インスタンスまたはアプリケーションが、ブートストラップし、メモリフットプリントを構築して完全に生産性を発揮するのに時間がかかる場合は、休止を使用してインスタンスを事前ウォーミングできます。インスタンスを事前ウォーミングするには、インスタンスを起動し、目的の状態にしてから、休止します。これにより、必要に応じて同じ状態で再開できるようになります。

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

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

重要

現在、休止は Windows インスタンスではサポートされていません。

休止の概要

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


    			休止フローの概要

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

  • 休止プロセスを開始すると、インスタンスは stopping 状態に移行します。オペレーティングシステムに休止を実行するように合図します (ディスクの停止)。これにより、すべての処理をフリーズし、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 未満)。*.metal インスタンスでは休止はサポートされません。

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

  • Amazon マシンイメージ (AMI) - AMI は、休止をサポートする HVM AMI である必要があります。休止は次の AMI でサポートされています。独自の AMI が休止をサポートするように設定するには、「休止をサポートするように既存の AMI を設定する」を参照してください。

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

    • Ubuntu 18.04 LTS - Bionic* AMI (シリアル 20190722.1 移行でリリース)

      * KASLR の無効化: Ubuntu 18.04 LTS - Bionic で新しく起動されたインスタンスで休止を使用するには、KASLR (Kernel Address Space Layout Randomization) を無効化するようお勧めします。Ubuntu 18.04 LTS では、デフォルトで KASLR が有効になっています。詳細については、「インスタンスでの KASLR の無効化 (Ubuntu のみ)」を参照してください。

  • ルートボリュームタイプ - インスタンスのルートボリュームは、インスタンスストアボリュームではなく 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 のコピー」を参照してください。

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

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

制約事項

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

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

  • 休止が有効にされているインスタンスからスナップショットまたは 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 は、休止をサポートするように事前に設定されています。

Amazon LinuxUbuntu
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. インスタンスを再起動します。

  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 CLI
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

 

ConsoleAWS CLI
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 }

インスタンスでの 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 CLI
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

 

ConsoleAWS CLI
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" }

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

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

ConsoleAWS CLI
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

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

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

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

インスタンスを起動した後、休止しようとするのが早すぎる場合、エラーが発生します。

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