[アップデート]EC2インスタンスのWindows Server 2022、Amazon Linux 2023、RHEL 9は、休止(ハイバネーション)に対応しました

2023.10.05

はじめに

EC2インスタンスのうち、Microsoft Windows Server 2022、Red Hat Enterprise Linux (以降、RHEL) 9、および Amazon Linux 2023は、休止(ハイバネーション)に対応しました。

EC2インスタンスの休止とは、メモリ状態を保管したまま停止し、再開時に停止前と同じ状態で起動する機能です。

サポートされているインスタンスファミリーは、以下の通りです。

  • 汎用: M3、M4、M5、M5a、M5ad、M5d、M6i、M6id、M7i、M7i-flex、T2、T3、T3a
  • コンピューティング最適化: C3、C4、C5、C5d、C6i、C6id
  • メモリ最適化: R3、R4、R5、R5a、R5ad、R5d
  • ストレージの最適化: I3、I3en

休止が可能なEC2インスタンスは、下記などの条件がありますので、ドキュメントをご参考ください

  • EBSのルートボリューム暗号化が必須
  • 起動時に休止状態を有効化する
  • サポートされているOSのみ可能

今回のアップデートで休止に対応したOSのうち、Amazon Linux 2023とWindows Server 2022は、デフォルトで休止が利用できますが、RHEL9は、エージェントの有効化が必要です。

その他のOSに関しては、下記のドキュメントに、インスタンスを休止にするための設定方法がまとめられていますので、ご参考ください。

Amazon Linux 2023を休止してみる

Amazon Linux 2023の場合、インスタンスの起動時に、休止動作を有効化し、EBSを暗号化します。

起動後、インスタンスを休止できます。

15秒ほどで、休止(停止済み)になりました。

RHEL9を休止してみる

RHEL9も同様に、インスタンスの起動時に、休止動作を有効化し、EBSを暗号化します。

ドキュメントでは、エージェントを有効化することで休止できると記載されていましたが、エージェントを有効化していない今の段階で休止してみます。

15分経っても停止中のままでした。

20分後、停止済みになりました。おそらく休止ではなく停止したのだと推測します。

やはり、エージェントの有効化設定が必要だと分かりました。

再度、新しくREHL9のEC2インスタンスを起動します。 EC2インスタンスからインターネットにアクセスできるサブネット上で起動します。

その際、休止動作を有効化とEBSが暗号化に加え、ユーザーデータに以下のスクリプトを登録します。

#!/bin/bash
cd /tmp
sudo dnf --disablerepo="*" install -y https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/latest/linux_amd64/amazon-ssm-agent.rpm
sudo systemctl enable amazon-ssm-agent
sudo systemctl start amazon-ssm-agent

セッションマネージャーを利用したいため、エージェントをインストールするスクリプトです。

下記の記事を参考にしました。

起動後、セッションマネージャーで接続します。

ドキュメント通りにコマンドを実行します。

コマンドの内容は、カーネルを更新し、休止するために、ec2-hibinit-agentをインストールし、有効化しています。

$ sudo yum -y update kernel
$ sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
$ sudo yum -y install ec2-hibinit-agent
$ sudo systemctl enable hibinit-agent.service
Created symlink /etc/systemd/system/multi-user.target.wants/hibinit-agent.service → /usr/lib/systemd/system/hibinit-agent.service.

下記のコマンドで、再起動後、カーネルバージョンが4.18.0-305.7.1.el8_4.x86_64 以降に更新されていることを確認します。

$ sudo reboot
$ uname -a
Linux ip-10-0-0-216.ap-northeast-1.compute.internal 5.14.0-284.11.1.el9_2.x86_64 

$ sudo systemctl  status hibinit-agent.service
● hibinit-agent.service - Initial hibernation setup job
     Loaded: loaded (/usr/lib/systemd/system/hibinit-agent.service; enabled; preset: disabled)
     Active: active (running)

5.14.0-284.11.1.el9_2.x86_64のため、問題ありません。

セッションマネージャを利用しなくても上記のコマンドを一部修正し、ユーザーデータに登録することで、起動後、すくにエージェントを有効化できそうですね。

それでは、休止してみます。

15秒で休止(停止済み)になりました。

最後に

比較的新しいOSのEC2インスタンスが休止できるようになりました。

一部のOSでは、休止するためのエージェントのインストールや有効化が必要ですので、ドキュメントを一読することをおすすめします。

参考