EC2 の停止・休止・終了の違い ── 休止でメモリの中身ごと止める

目次

概要

使わない期間の EC2 インスタンスを止めておけば、インスタンスの料金はかかりません。ただし通常の「停止」では、メモリ(RAM)の内容は消えます。メモリ上にキャッシュやセッション、処理途中のデータを持つアプリケーションは、次に起動したときに一からやり直しになります。

休止(ハイバネーション)を使うと、インスタンスを止める前に RAM の内容を EBS のルートボリュームに保存し、次に起動したときに読み戻してプロセスを再開できます。ノート PC のふたを閉じて、開けたら作業の続きから始められるのと同じ考え方です。一方で、休止は起動時に有効にしておく必要があり、ルートボリュームの暗号化やサイズなどの条件もあります。

この記事では、EC2 インスタンスを止める方法(停止・休止・終了)で何が残り何が消えるかを比較し、休止の条件を整理します。実践では、休止を有効にしたインスタンスでメモリ上にファイルを置き、休止と停止でその後の結果が変わることを確かめます。

停止・休止・終了で、何が残り何が消えるか
停止・休止・終了で、何が残り何が消えるか
クラウドおさる

猿山の冬ごもりでも、ただ眠るだけだと何を考えていたか忘れてしまうでござる。今日は、頭の中身を帳面に書き残してから眠る「休止」と、ただの「停止」で、起きたときに何が残っているかを確かめるでござるよ。

この記事のメリット

  • 停止・休止・終了(と再起動)で、RAM・ボリューム・IP アドレス・課金がどう変わるかを説明できるようになる
  • 休止の仕組み(RAM の内容を EBS ルートボリュームに保存して読み戻す)が分かる
  • 休止を使うための条件(起動時の有効化・ルートボリュームの暗号化とサイズ・対応インスタンス・RAM の上限)を押さえられる
  • 休止できないケース(Auto Scaling グループのインスタンスなど)と、60 日の上限を把握できる
  • 「メモリの内容を残したまま止めたい」という要件に対して、スナップショットやインスタンスストアではなく休止を選べるようになる

執筆者とキャラクター紹介

執筆者:土肥(とひ)

株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。

土肥

クラウドおさる

クラウドおさる

はじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。

クラウドおさる

基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。

クラウドおさる

猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。

技術解説

インスタンスを止める 4 つの操作

EC2 インスタンスには、止め方・やり直し方が 4 つあります。どれを選ぶかで、残るものが変わります。

項目再起動停止休止終了
RAM(メモリの内容)消える消えるルートボリュームに保存され、起動時に読み戻される消える
ルートボリューム(EBS)残る残る残る既定では削除される
インスタンスストアのデータ残る消える消える消える
プライベート IPv4 アドレス残る残る残るなし
パブリック IPv4 アドレス残る新しいアドレスになる新しいアドレスになるなし
Elastic IP アドレス関連付けが残る関連付けが残る関連付けが残る関連付けが解除される
ホスト同じホスト新しいホストに移ることがある新しいホストに移ることがあるなし
インスタンスの課金続くstopping になった時点で止まるstopping の間は続き、stopped で止まるshutting-down になった時点で止まる

停止中・休止中も、EBS ボリュームのストレージ料金はかかります。休止では、保存した RAM の内容も EBS のストレージとして課金されます。

停止は RAM を捨てる。休止は RAM をルートボリュームに書き出してから止め、起動時に読み戻す
停止は RAM を捨てる。休止は RAM をルートボリュームに書き出してから止め、起動時に読み戻す
クラウドおさる

スナップショットはディスクの写しで、メモリの中身は入らないでござる。インスタンスストアは停止でも休止でも消えるでござる。「メモリの内容を残したまま止める」なら休止、と覚えておくでござるぞ。

休止の仕組み

休止を指示すると、インスタンスは次のように動きます。

  1. インスタンスが stopping 状態になり、EC2 が OS に休止処理(suspend-to-disk)を指示する
  2. すべてのプロセスがフリーズされ、RAM の内容が EBS ルートボリュームに保存される
  3. 通常のシャットダウンが行われ、インスタンスが stopped 状態になる

もう一度起動すると、OS がルートボリュームから RAM の内容を読み取り、プロセスのフリーズが解除されて休止前の状態に戻ります。インスタンス ID も変わりません。OS は起動し直していないため、休止前から動いていたプロセスもそのまま続きます。

休止を使うための条件

休止は、どのインスタンスでも使えるわけではありません。主な条件は次のとおりです。

条件内容
有効にするタイミング起動時に有効にする。実行中・停止中の既存のインスタンスで後から有効にすることはできない
インスタンスファミリー休止に対応したファミリー(汎用なら M5・T3・T3a・T4g など)。ベアメタルは非対応
RAM の大きさLinux は 150 GiB 未満、Windows は 16 GiB 以下。T3・T3a は 1 GiB 以上を推奨
AMI休止に対応した HVM AMI(Amazon Linux 2023 は 2023 年 9 月 20 日以降にリリースされたもの など)
ルートボリュームインスタンスストアではなく EBS(gp2・gp3・io1・io2)。暗号化が必須で、RAM の内容を書き込める大きさが要る

ルートボリュームの暗号化が必須なのは、休止中にディスクへ書き出したメモリの内容に、機密性の高いデータが含まれる可能性があるためです。

休止の制限

休止には、ほかにも制限があります。

  • Auto Scaling グループのインスタンスは休止できない。休止させようとすると、Auto Scaling が停止したインスタンスを異常と判断し、終了して代わりを起動することがある(Amazon ECS で使っているインスタンスも同様)
  • 60 日を超える休止はサポートされない。それより長く置くなら、一度起動してから停止し直す
  • 休止中のインスタンスは、インスタンスタイプなどの属性を変更できない(通常の停止中なら変更できる)
  • インスタンスストアボリューム上のデータは失われる
クラウドおさる

休止は「起動するときに休止の札を付けておく」のが前提でござる。動いているインスタンスに後から札を付けることはできぬので、休止を使いたい用途なら、起動の時点で決めておくのでござるな。

新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方も募集しています。異業種や文系からインフラエンジニアになり活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

実践

ハンズオンガイド5 ステップ画面 7 枚

コンソールの横に開いて、チェックしながら進めましょう。

ガイドを開く

別タブで開きます。チェックはこのブラウザに保存されます。

休止を有効にした EC2 インスタンスを起動し、メモリ上(/dev/shm)にファイルを置きます。休止してから起動するとファイルと稼働時間が残り、停止してから起動すると消えることを確かめます。

/dev/shm は、Linux がメモリ上に用意するファイル置き場(tmpfs)です。ここに置いたファイルはディスクではなく RAM にあるため、メモリの内容が残ったかどうかを目で確かめる目印になります。

前提条件

  • リージョン: ap-northeast-1(東京)
  • EC2・Systems Manager の操作権限を持つ IAM ユーザーまたはロールでコンソールにログイン済みであること

以下のリソースが作成済みであることを前提とします。

まだ用意していない場合は、「作り方の参考」の記事の手順で作れます。リソース名は、この記事の名前に読み替えてください。

リソース種別リソース名内容作り方の参考
VPChib-lab-vpcCIDR 10.0.0.0/16Amazon VPC で仮想ネットワークを構築しサブネットを設定する
パブリックサブネットhib-lab-public-1a10.0.1.0/24(ap-northeast-1a)。インターネットゲートウェイへのルートあり、パブリック IPv4 アドレスの自動割り当て有効同上
セキュリティグループhib-lab-sgインバウンドルールなし(Session Manager で接続するため)同上
IAM ロール / インスタンスプロファイルhib-lab-ssm-role / hib-lab-ssm-profileAmazonSSMManagedInstanceCore をアタッチAWS Systems Manager でインスタンスをリモート管理する

このハンズオンで作成するリソースは以下のとおりです。

リソース種別リソース名内容
EC2 インスタンスhib-lab-instanceAmazon Linux 2023・t3.micro・休止を有効化・ルートボリューム 8 GiB(gp3・暗号化)

休止中・停止中も、EBS ボリュームのストレージ料金はかかります。検証が終わったら必ずインスタンスを終了してください。

手順 1: 休止を有効にしてインスタンスを起動する

AWS マネジメントコンソールにログインし、リージョンが ap-northeast-1(東京)であることを確認します。

上部の検索バーに EC2 と入力し、「EC2」を選択します。左側ナビゲーションの「インスタンス」を選択し、右上の「インスタンスを起動」をクリックします。以下を設定します。

  • 名前: hib-lab-instance
  • アプリケーションおよび OS イメージ: Amazon Linux 2023 AMI(既定のまま)
  • インスタンスタイプ: t3.micro
  • キーペア: キーペアなしで続行 (推奨されません)(接続は Session Manager で行います)
  • ネットワーク設定: 「編集」をクリックし、VPC hib-lab-vpc、サブネット hib-lab-public-1a、パブリック IP の自動割り当て 有効化 を選択。「既存のセキュリティグループを選択する」を選び、「共通のセキュリティグループ」で hib-lab-sg を選択

「ストレージを設定」で右側の「アドバンスト」をクリックし、「ボリューム 1 (AMI ルート)」を展開して、以下のように設定します。

  • サイズ (GiB): 8(既定のまま。t3.micro の RAM は 1 GiB なので、OS と RAM の内容を書き込める)
  • ボリュームタイプ: gp3
  • 暗号化済み: 暗号化済み(既定は 暗号化なし)
  • KMS キー: (デフォルト) aws/ebs(暗号化済みにしても自動では入らないので、一覧から選びます)
ストレージを設定(ルートボリュームを暗号化した状態)
ストレージを設定(ルートボリュームを暗号化した状態)

「高度な詳細」を展開し、以下を設定します。

  • IAM インスタンスプロフィール: hib-lab-ssm-profile
  • 停止 – 休止動作: 有効化(既定は未選択。ルートボリュームが暗号化されている必要がある、という説明が表示されます)
高度な詳細(停止 - 休止動作を有効化した状態)
高度な詳細(停止 – 休止動作を有効化した状態)

その他の項目はデフォルトのままにして、右側の「インスタンスを起動」をクリックします。

インスタンスの一覧で hib-lab-instance を選択し、下部の「詳細」タブを下にスクロールして、「停止 – 休止動作」が 有効 になっていることを確認します。

インスタンスの詳細タブ(停止 - 休止動作が有効)
インスタンスの詳細タブ(停止 – 休止動作が有効)

手順 2: メモリ上にファイルを置く

インスタンスの状態が「実行中」になってから 1〜2 分待ちます。hib-lab-instance を選択して右上の「接続」をクリックし、「Session Manager」タブで「接続」をクリックします。

開いたターミナルで、次のコマンドを実行します。

echo "banana-$(date +%H%M%S)" > /dev/shm/memo.txt
cat /dev/shm/memo.txt
uptime -s

/dev/shm/memo.txt の中身と、OS が起動した時刻(uptime -s の結果)を控えておきます。

Session Manager のターミナル(メモリ上のファイルと起動時刻を表示した状態)
Session Manager のターミナル(メモリ上のファイルと起動時刻を表示した状態)

Session Manager のタブは閉じて構いません。

手順 3: 休止して、もう一度起動する

インスタンスの一覧で hib-lab-instance を選択し、「インスタンスの状態」→「インスタンスを休止」をクリックします。確認画面で「休止」をクリックします。

インスタンスの状態メニュー(インスタンスを休止)
インスタンスの状態メニュー(インスタンスを休止)

インスタンスの状態が「停止中」を経て「停止済み」になったら、「インスタンスの状態」→「インスタンスを開始」をクリックします。状態が「実行中」になったら、手順 2 と同じように Session Manager で接続し、次のコマンドを実行します。

cat /dev/shm/memo.txt
uptime -s

手順 2 で置いたファイルが残っており、OS の起動時刻も手順 2 と同じであることを確認します。メモリの内容が読み戻され、OS は起動し直さずに休止前の続きから動いています。

休止から起動したあとのターミナル(ファイルが残り、起動時刻が変わっていない)
休止から起動したあとのターミナル(ファイルが残り、起動時刻が変わっていない)
クラウドおさる

帳面に書き残してから眠ったので、起きたら書きかけのメモも、眠る前からの稼働時間もそのままでござる。これが休止でござるな。

手順 4: 停止して、もう一度起動する

比べるために、今度は通常の停止を試します。hib-lab-instance を選択し、「インスタンスの状態」→「インスタンスを停止」をクリックします。

インスタンスの状態が「停止済み」になったら「インスタンスを開始」をクリックし、「実行中」になったら Session Manager で接続して同じコマンドを実行します。

cat /dev/shm/memo.txt
uptime -s

cat は「No such file or directory」となり、起動時刻も新しい時刻に変わっていることを確認します。停止では RAM の内容が捨てられ、OS が一から起動し直しています。

停止から起動したあとのターミナル(ファイルが消え、起動時刻が新しくなっている)
停止から起動したあとのターミナル(ファイルが消え、起動時刻が新しくなっている)
クラウドおさる

「止めている間もメモリの内容を残したい」と言われたら休止、「インスタンスタイプを変えたい」なら休止ではなく停止、でござる。休止は起動時に有効にしておく必要がある点も、取り違えやすいところでござるな。

まとめ

やりたいこと選ぶ操作
メモリの内容を残したまま止め、続きから再開したい休止(起動時に有効化が必要)
料金を止めたいが、メモリの内容は捨ててよい停止
インスタンスタイプなどを変更したい停止(休止中は変更できない)
OS だけ再起動したい再起動(課金は続き、IP アドレスもそのまま)
インスタンスを使い終えた終了(ルートボリュームは既定で削除される)
  • 休止は、RAM の内容を EBS ルートボリュームに保存してからシャットダウンし、起動時に読み戻してプロセスを再開する
  • 休止は起動時に有効にする必要があり、ルートボリュームの暗号化と、RAM の内容を書き込めるサイズが要る
  • インスタンスストアのデータは、停止でも休止でも消える。スナップショットにはメモリの内容は入らない
  • Auto Scaling グループのインスタンスは休止できない。休止は 60 日までで、休止中はインスタンスタイプを変更できない
  • 停止・休止中もパブリック IPv4 アドレスは変わり、EBS のストレージ料金はかかる

参照先

キャリア相談
クラウドおさる

独学の先に、AWS の仕事がある ── ジュニアおさるのキャリア相談

CLF には受かったけれど、次に何をすればいいのか分からない。独学で AWS を学ぶジュニアおさるの相談に、株式会社ジェニュイン代表の土肥が答えています。

  • ✓資格はゴールか、CLF の次に何から手を付けるか
  • ✓EC2 の次に作ってみる構成と、IaC・コスト管理
  • ✓実務経験ゼロでも、面接で話せる「これまで」の作り方
新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方も募集しています。異業種や文系からインフラエンジニアになり活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社ジェニュイン(https://genuine-pt.jp)の代表取締役.

2018年〜インフラエンジニアとしてキャリアをスタートし、オンプレミスのネットワーク・サーバ環境で3年半、クラウド環境で4年半の8年間エンジニアとして従事。
2021年に佐藤氏の創業した株式会社Luxyを引き継ぎ、代表に就任。
その後アガルートグループ内の株式会社ジェニュインと合併。
合併後同社代表に就任。

目次