

# Amazon EC2 インスタンスの休止
<a name="Hibernate"></a>

インスタンスを休止すると、Amazon EC2 によってオペレーティングシステムに休止の実行 (suspend-to-disk) が指示されます。休止状態に入ると、インスタンスメモリ (RAM) に置かれていた内容が、Amazon Elastic Block Store (Amazon EBS) のルートボリュームに保存されます。インスタンスの EBS ルートボリュームとアタッチされた EBS データボリュームは、Amazon EC2 により保持されます。インスタンスが起動したとき、
+ EBS ルートボリュームは前の状態に復元されます。
+ RAM の内容が再ロードされます。
+ インスタンスで以前に実行されていたプロセスが再開されます。
+ 以前にアタッチされていたデータボリュームが再アタッチされ、インスタンスがそのインスタンス ID を保持します。

インスタンスは、[休止が有効になっており](enabling-hibernation.md)、[休止の前提条件](hibernating-prerequisites.md)を満たしている場合のみ、休止状態にすることができます。

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

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

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

1. 休止状態にして、必要なときにいつでも望ましい状態に回復されるようにします。

インスタンスが `stopped` 状態にある場合の休止状態のインスタンスにも、RAM の内容が EBS ルートボリュームに転送される場合のデータ転送にも、課金はされません。EBS ボリュームのストレージに対しては、RAM の内容のストレージも含めて、料金が発生します。

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

**Topics**
+ [仕組み](instance-hibernate-overview.md)
+ [前提条件](hibernating-prerequisites.md)
+ [Linux AMI で休止がサポートされるように設定する](hibernation-enabled-AMI.md)
+ [インスタンスの休止の有効化](enabling-hibernation.md)
+ [インスタンスでの KASLR の無効化 (Ubuntu のみ)](hibernation-disable-kaslr.md)
+ [インスタンスの休止](hibernating-instances.md)
+ [休止したインスタンスの起動](hibernating-resuming.md)
+ [トラブルシューティング](troubleshoot-instance-hibernate.md)

# Amazon EC2 インスタンスの休止の仕組み
<a name="instance-hibernate-overview"></a>

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

![\[休止フローの概要。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/hibernation-flow.png)


## インスタンスを休止するとどうなるか
<a name="how-instance-hibernation-works"></a>

インスタンスを休止すると、次の処理が実行されます。
+ インスタンスは`stopping`状態に移行します。Amazon EC2 が、オペレーティングシステムに対して休止処理 (suspend-to-disk) を指示します。休止に伴ってすべてのプロセスがフリーズされ、RAM の内容が EBS ルートボリュームに保存されます。その後に、通常のシャットダウンが実行されます。
+ シャットダウンプロセスが完了した後、インスタンスは `stopped` 状態に移行します。
+ EBS ボリュームはインスタンスにアタッチされたままとなり、保存された RAM の内容も含めて、データは保持されます。
+ Amazon EC2 インスタンスストアボリュームはインスタンスにアタッチされたままになりますが、インスタンスストアボリューム上のデータは失われます。
+ 殆どの場合、インスタンスは基盤となる新しいホストコンピュータが起動したときに移行されます。これは、インスタンスを停止して起動した場合と同じです。
+ インスタンスを起動すると、インスタンスのブートアッププロセスが実行され、オペレーティングシステムが EBS ルートボリュームから RAM の内容を読み取ります。次に、プロセスのフリーズが解除されて以前の状態が回復されます。
+ インスタンスのプライベート IPv4 アドレスとすべての IPv6 アドレスは保持されます。インスタンスを起動すると、インスタンスは引き続きプライベート IPv4 アドレスとすべての IPv6 アドレスを保持します。
+ Amazon EC2 はパブリック IPv4 アドレスをリリースします。インスタンスを起動すると、Amazon EC2 は新しいパブリック IPv4 アドレスをインスタンスに割り当てます。
+ インスタンスには関連付けられた Elastic IP アドレスが保持されます。休止状態のインスタンスに関連付けられた Elastic IP アドレスに対して課金されます。

休止と再起動、停止、および終了の違いについては、[インスタンスの状態の違い](ec2-instance-lifecycle.md#lifecycle-differences)を参照してください。

## 制限事項
<a name="instance-hibernate-limitations"></a>
+ インスタンスを休止すると、インスタンスストアボリューム上のデータは失われます。
+ (Linux インスタンス) RAM が 150 GiB を超える Linux インスタンスを休止することはできません。
+ (Windows インスタンス) RAM が 16 GiB を超える Windows インスタンスを休止することはできません。
+ インスタンスが休止されている間にインスタンスを変更することはできません。これは、インスタンスのタイプやサイズなどの特定の属性を変更できる、停止された (休止ではない) インスタンスとは異なります。
+ 休止状態になっている、または休止機能が有効になっているインスタンスからスナップショットまたは AMI を作成した場合、その AMI (あるいは、そのスナップショットから作成した AMI) から起動した新しいインスタンスに接続できないことがあります。
+ (スポットインスタンスのみ) Amazon EC2 がスポットインスタンスを休止した場合、インスタンスを再開できるのは Amazon EC2 のみです。スポットインスタンスを休止状態 ([ユーザー起動の休止](hibernating-instances.md)) にする場合、ユーザーはインスタンスを再開できます。休止したスポットインスタンスは、容量が空いていて、スポット料金が指定した上限料金以下である場合、再開できます。
+ Auto Scaling グループ内のインスタンス、または Amazon ECS が使用しているインスタンスを休止することはできません。インスタンスが Auto Scaling グループにあり、そのインスタンスを休止しようとしている場合、Amazon EC2 Auto Scaling サービスは停止したインスタンスを異常と判断し、そのインスタンスを終了して代わりのインスタンスを起動する場合があります。詳細については、「*Amazon EC2 Auto Scaling ユーザーガイド*」の「[Auto Scaling グループ内のインスタンスのヘルスチェック](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html)」を参照してください。
+ [UEFI Secure Boot](uefi-secure-boot.md) を有効にした状態で、UEFI モードで起動するように設定されたインスタンスを休止することはできません。
+ キャパシティーの予約では、キャパシティ予約で起動されたインスタンスを休止状態にする場合、そのインスタンスを再開しても、休止した時点の状態が維持されることを保証していません。
+ 連邦情報処理標準 (FIPS) モードが有効になっている場合、5.10 未満のカーネルを使用するインスタンスを休止状態にすることはできません。
+ 60 日間以上に及ぶインスタンス休止はサポートしていません。60 日より長くインスタンスを保持するには、休止したインスタンスを起動し、停止して、また起動する必要があります。
+ 当社では、継続的にプラットフォームをアップグレードやセキュリティパッチで更新しており、休止されている既存のインスタンスと競合する可能性があります。シャットダウンまたは再起動を実行して必要なアップグレードとセキュリティパッチを適用できるように、休止されているインスタンスの起動が必要になる重要な更新については、通知を受け取ります。

## スポットインスタンスを休止する場合の注意点
<a name="spot-hibernation-considerations"></a>
+ *ユーザー*がスポットインスタンスを休止した場合、容量が空いていて、スポット料金が、指定した上限料金以下である場合、ユーザーがこれを再開できます。
+ *Amazon EC2* がスポットインスタンスを休止した場合は、
  + インスタンスを再開できるのは Amazon EC2 だけです。
  + Amazon EC2 は、容量が利用可能になり、スポット料金が、指定した上限料金以下である場合、休止したスポットインスタンスを再開します。
  + Amazon EC2 がスポットインスタンスを休止するときは、休止が始まる 2 分前にユーザーに中断通知が届きます。

  詳細については、「[スポットインスタンスの中断。](spot-interruptions.md)」を参照してください。

# EC2 インスタンスの休止の前提条件
<a name="hibernating-prerequisites"></a>

オンデマンドインスタンスまたはスポットインスタンスの休止のサポートは、起動時に有効にすることができます。実行中または停止状態の既存のインスタンスで休止を有効にすることはできません。詳細については、「[インスタンスの休止の有効化](enabling-hibernation.md)」を参照してください。

**Topics**
+ [AWS リージョン](#hibernation-prereqs-regions)
+ [AMI](#hibernation-prereqs-supported-amis)
+ [インスタンスファミリー](#hibernation-prereqs-supported-instance-families)
+ [インスタンスの RAM サイズ](#instance-ram-size)
+ [ルートボリュームタイプ](#hibernation-prereqs-root-volume-type)
+ [ルートボリュームサイズ](#hibernation-prereqs-ebs-root-volume-size)
+ [ルートボリュームの暗号化](#hibernation-prereqs-ebs-root-volume-encryption)
+ [EBS ボリュームタイプ](#hibernation-prereqs-ebs-volume-types)
+ [スポットインスタンスリクエスト](#hibernation-prereqs-spot-request)

## AWS リージョン
<a name="hibernation-prereqs-regions"></a>

すべての AWS リージョンのインスタンスで休止を使用できます。

## AMI
<a name="hibernation-prereqs-supported-amis"></a>

休止をサポートする HVM AMI を使用する必要があります。次の AMI はハイバネーションをサポートします。

### Linux AMI
<a name="hibernation-prereqs-supported-amis-linux"></a>

**Intel および AMD インスタンスタイプの AMI**
+ AL2023 AMI は 2023 年 9 月 20 日以降にリリース¹
+ Amazon Linux 2 AMI (2019 年 8 月 29 日以降にリリース)
+ Amazon Linux AMI 2018.03 (2018 年 11 月 16 日以降にリリース)
+ CentOS バージョン 8 AMI ² ([追加設定](hibernation-enabled-AMI.md#configure-centos-for-hibernation) が必要です)
+ Fedora バージョン 34 以降の AMI ² ([追加設定](hibernation-enabled-AMI.md#configure-fedora-for-hibernation) が必要です)
+ Red Hat Enterprise Linux (RHEL) 9 AMI ² ([追加設定](hibernation-enabled-AMI.md#configure-RHEL-for-hibernation) が必要です)
+ Red Hat Enterprise Linux (RHEL) 8 AMI ² ([追加設定](hibernation-enabled-AMI.md#configure-RHEL-for-hibernation) が必要です)
+ 20230303 以降のシリアル番号でリリースされた Ubuntu 22.04.2 LTS (Jammy Jellyfish) AMI ³
+ 20210820 以降のシリアル番号でリリースされた Ubuntu 20.04 LTS (Focal Fossa) AMI ³
+ 20190722.1 以降のシリアル番号でリリースされた Ubuntu 18.04 LTS (Bionic Beaver) AMI ³ ⁵
+ Ubuntu 16.04 LTS (Xenial Xerus) AMI ³ ⁴ ⁵ ([追加設定](hibernation-enabled-AMI.md#configure-ubuntu1604-for-hibernation) が必要です)

**Graviton インスタンスタイプの AMI**
+ 2024 年 7 月 1 日以降にリリースされた AL2023 AMI (64 ビット Arm) ¹
+ 2024 年 6 月 20 日以降にリリースされた Amazon Linux 2 AMI (64 ビット Arm)
+ 20240701 以降のシリアル番号でリリースされた Ubuntu 22.04.2 LTS (64 ビット Arm) (Jammy Jellyfish) AMI ³
+ 20240701 以降のシリアル番号でリリースされた Ubuntu 20.04 LTS (64 ビット Arm) (Focal Fossa) AMI ³

 

¹ AL2023 最小 AMI の場合、[追加の設定が必要です](hibernation-enabled-AMI.md#configure-AL2023-minimal-for-hibernation)。

² CentOS、Fedora、Red Hat Enterprise Linux の場合、ハイバネーションは Nitro ベースのインスタンスでのみサポートされます。

³ Ubuntu 22.04.2 LTS (Jammy Jellyfish)、Ubuntu 20.04 LTS (Focal Fossa)、Ubuntu 18.04 LTS (Bionic Beaver)、Ubuntu 16.04 LTS (Xenial Xerus) を使用するインスタンスで KASLR を無効にすることをお勧めします。詳細については、「[インスタンスでの KASLR の無効化 (Ubuntu のみ)](hibernation-disable-kaslr.md)」を参照してください。

⁴ Ubuntu 16.04 LTS (Xenial Xerus) AMI の場合、ハイバネーションは `t3.nano` インスタンスタイプでサポートされません。Ubuntu (Xenial Xerus) が 2021 年 4 月にサポートを終了したため、パッチは利用できません。`t3.nano` インスタンスタイプを使用したい場合は、Ubuntu 22.04.2 LTS (Jammy Jellyfish)、Ubuntu 20.04 LTS (Focal Fossa) AMI または Ubuntu 18.04 LTS (Bionic Beaver) AMI にアップグレードすることをお勧めします。

⁵ Ubuntu 18.04 LTS (Bionic Beaver) および Ubuntu 16.04 LTS (Xenial Xerus) のサポートは終了しました。

独自の AMI が休止をサポートするように設定するには、[Linux AMI で休止がサポートされるように設定する](hibernation-enabled-AMI.md)を参照してください。

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

### Windows AMI
<a name="hibernation-prereqs-supported-amis-windows"></a>
+ Windows Server 2022 AMI (2023 年 9 月 13 日以降にリリース)
+ Windows Server 2019 AMI (2019 年 9 月 11 日以降にリリース)
+ Windows Server 2016 AMI (2019 年 9 月 11 日以降にリリース)
+ Windows Server 2012 R2 AMI (2019 年 9 月 11 日以降にリリース)
+ Windows Server 2012 AMI (2019 年 9 月 11 日以降にリリース)

## インスタンスファミリー
<a name="hibernation-prereqs-supported-instance-families"></a>

休止をサポートするインスタンスファミリーを使用する必要があります。ただし、ベアメタルインスタンスはサポートされていません。
+ 汎用: M3、M4、M5、M5a、M5ad、M5d、M6a、M6g、M6gd、M6i、M6id、M6idn、M6in、M7a、M7g、M7gd、M7i、M7i-flex、M8a、M8azn、M8g、M8gb、M8gd、M8gn、M8i、M8i-flex、T2、T3、T3a、T4g
+ コンピューティング最適化: C3、C4、C5、C5d、C6a、C6g、C6gd、C6gn、C6i、C6id、C6in、C7a、C7g、C7gd、C7gn、C7i、C7i-flex、C8a、C8g、C8gb、C8gd、C8gn、C8i、C8i-flex
+ メモリ最適化: R3、R4、R5、R5a、R5ad、R5d、R6a、R6g、R6gd、R6idn、R6in、R7a、R7g、R7gd、R7i、R7iz、R8a、R8g、R8gb、R8gd、R8gn、R8i、R8i-flex、X2gd、X8aedz、X8i
+ ストレージ最適化: I3、I3en、I4g、I7i、I7ie、I8g、I8ge、Im4gn、Is4gen

------
#### [ Console ]

**休止をサポートしているインスタンスタイプを取得するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

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

1. **[オンデマンド休止のサポート] = [true]** でフィルタリングします。

1. (オプション) フィルターを追加して、対象の、特定のインスタンスタイプをさらに絞り込みます。

------
#### [ AWS CLI ]

**休止をサポートしているインスタンスタイプを取得するには**  
[describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/describe-instance-types/.html) コマンドを使用します。使用可能なインスタンスタイプはリージョンごとに異なることに注意してください。

```
aws ec2 describe-instance-types \
    --filters Name=hibernation-supported,Values=true \
    --query "InstanceTypes[*].[InstanceType]" \
    --output text | sort
```

------
#### [ PowerShell ]

**休止をサポートしているインスタンスタイプを取得するには**  
[Get-EC2InstanceType](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceType.html) コマンドレットを使用します。使用可能なインスタンスタイプはリージョンごとに異なることに注意してください。

```
(Get-EC2InstanceType `
    -Filter @{Name="hibernation-supported"; Values="true"}).InstanceType | Sort-Object
```

------

## インスタンスの RAM サイズ
<a name="instance-ram-size"></a>

**Linux インスタンス** – 150 GiB 未満である必要があります。

**Windows インスタンス** – 16 GiB 以下である必要があります。T3 または T3a インスタンスの休止には、最低 1 GiB の RAM をお勧めします。

## ルートボリュームタイプ
<a name="hibernation-prereqs-root-volume-type"></a>

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

## ルートボリュームサイズ
<a name="hibernation-prereqs-ebs-root-volume-size"></a>

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

## ルートボリュームの暗号化
<a name="hibernation-prereqs-ebs-root-volume-encryption"></a>

休止時にメモリ内にある機密性の高いコンテンツを保護するためにルートボリュームを暗号化する必要があります。RAM データを EBS ルートボリュームに移動する場合は、常に暗号化します。ルートボリュームの暗号化は、インスタンスの起動時に適用されます。

ルートボリュームが暗号化された EBS ボリュームであることを確認するには、次の 3 つのオプションのいずれかを使用します。
+ **デフォルトでの EBS 暗号化**: EBS 暗号化をデフォルトで有効にして、AWS アカウントで作成されたすべての新しい EBS ボリュームを暗号化できます。この方法では、インスタンスの起動時に暗号化のインテントを指定することなく、インスタンスの休止を有効にすることができます。詳細については、「[デフォルトで暗号化を有効にする](https://docs.aws.amazon.com/ebs/latest/userguide/encryption-by-default.html)」を参照してください。
+ **EBS の「シングルステップ」暗号化**: 暗号化されていない AMI から暗号化された EBS-Backed EC2 インスタンスを起動し、同時に休止状態を有効にすることができます。詳細については、[EBS-backed AMI での暗号化の利用](AMIEncryption.md)を参照してください。
+ **暗号化された AMI**: 暗号化された AMI を使用してインスタンスを起動することで、EBS 暗号化を有効にすることができます。暗号化されたルートスナップショットが AMI にない場合は、それを新しい AMI にコピーして暗号化をリクエストできます。詳細については、「[コピー時に暗号化されていないイメージを暗号化する](AMIEncryption.md#copy-unencrypted-to-encrypted)」および「[AMI のコピー](CopyingAMIs.md#ami-copy-steps)」を参照してください。

## EBS ボリュームタイプ
<a name="hibernation-prereqs-ebs-volume-types"></a>

EBS ボリュームは、次のいずれかの EBS ボリュームタイプを使用する必要があります。
+ 汎用 SSD (`gp2` および `gp3`)
+ プロビジョンド IOPS SSD (`io1` および `io2`)

プロビジョンド IOPS SSD ボリュームタイプを選択した場合、休止状態の最適なパフォーマンスを実現するには、適切な IOPS で EBS ボリュームをプロビジョニングする必要があります。詳細については、「*Amazon EBS ユーザーガイド*」の「[Amazon EBS ボリュームの種類](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html)」を参照してください。

## スポットインスタンスリクエスト
<a name="hibernation-prereqs-spot-request"></a>

スポットインスタンスには、次の要件が適用されます。
+ スポットインスタンスのリクエストのタイプは `persistent` である必要があります。
+ スポットインスタンスリクエストで起動グループを指定することはできません。

# Linux AMI で休止がサポートされるように設定する
<a name="hibernation-enabled-AMI"></a>

以下の Linux AMI は、Amazon EC2 インスタンスの休止に対応できます。ただし、ここで説明する追加の設定手順を完了した場合に限ります。

**Topics**
+ [AL2023 最小 AMI は 2023 年 9 月 20 日以降にリリース](#configure-AL2023-minimal-for-hibernation)
+ [Amazon Linux 2 minimal AMI (2019 年 8 月 29 日以降にリリース)](#configure-AL2-minimal-for-hibernation)
+ [2019 年 8 月 29 日以前にリリースされた Amazon Linux 2](#configure-AL2-for-hibernation)
+ [2018 年 11 月 16 日以前にリリースされた Amazon Linux](#configure-AL-for-hibernation)
+ [CentOS バージョン 8 以降](#configure-centos-for-hibernation)
+ [Fedora バージョン 34 以降](#configure-fedora-for-hibernation)
+ [Red Hat Enterprise Linux バージョン 8 または 9 以降](#configure-RHEL-for-hibernation)
+ [シリアル番号 20210820 よりも前にリリースされた Ubuntu 20.04 LTS (Focal Fossa)](#configure-ubuntu2004-for-hibernation)
+ [シリアル番号 20190722.1 よりも前にリリースされた Ubuntu 18.04 (Bionic Beaver)](#configure-ubuntu1804-for-hibernation)
+ [Ubuntu 16.04 (Xenial Xerus)](#configure-ubuntu1604-for-hibernation)

休止に対応し、*追加で*設定を行う必要がない Linux と Windows AMI については、「[AMI](hibernating-prerequisites.md#hibernation-prereqs-supported-amis)」を参照してください。

詳細については、「[Amazon Linux 2 インスタンスでのインスタンスソフトウェアの更新](https://docs.aws.amazon.com/linux/al2/ug/install-updates.html)」を参照してください。

## AL2023 最小 AMI は 2023 年 9 月 20 日以降にリリース
<a name="configure-AL2023-minimal-for-hibernation"></a>

**ハイバネーションをサポートするために 2023 年 9 月 20 日以降にリリースされた AL2023 最小 AMI の設定方法**

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo dnf install ec2-hibinit-agent
   ```

1. サービスを再起動します。

   ```
   [ec2-user ~]$ sudo systemctl start hibinit-agent
   ```

## Amazon Linux 2 minimal AMI (2019 年 8 月 29 日以降にリリース)
<a name="configure-AL2-minimal-for-hibernation"></a>

**2019 年 8 月 29 日以降にリリースされた Amazon Linux 2 minimal AMI で休止がサポートされるように設定するには**

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo yum install ec2-hibinit-agent
   ```

1. サービスを再起動します。

   ```
   [ec2-user ~]$ sudo systemctl start hibinit-agent
   ```

## 2019 年 8 月 29 日以前にリリースされた Amazon Linux 2
<a name="configure-AL2-for-hibernation"></a>

**2019 年 8 月 29 日以前にリリースされた Amazon Linux 2 AMI で休止がサポートされるように設定するには**

1. `4.14.138-114.102`以降にカーネルを更新します。

   ```
   [ec2-user ~]$ sudo yum update kernel
   ```

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo yum install ec2-hibinit-agent
   ```

1. インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. 次のコマンドを実行して、カーネルバージョンが `4.14.138-114.102` 以降に更新されていることを確認します。

   ```
   [ec2-user ~]$ uname -a
   ```

1. インスタンスを停止し、AMI を作成します。詳細については、「[Amazon EBS-backed AMI を作成する](creating-an-ami-ebs.md)」を参照してください。

## 2018 年 11 月 16 日以前にリリースされた Amazon Linux
<a name="configure-AL-for-hibernation"></a>

**2018 年 11 月 16 日以前にリリースされた Amazon Linux AMI で休止がサポートされるように設定するには**

1. `4.14.77-70.59`以降にカーネルを更新します。

   ```
   [ec2-user ~]$ sudo yum update kernel
   ```

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo yum install ec2-hibinit-agent
   ```

1. インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. 次のコマンドを実行して、カーネルバージョンが `4.14.77-70.59` 以降に更新されていることを確認します。

   ```
   [ec2-user ~]$ uname -a
   ```

1. インスタンスを停止し、AMI を作成します。詳細については、「[Amazon EBS-backed AMI を作成する](creating-an-ami-ebs.md)」を参照してください。

## CentOS バージョン 8 以降
<a name="configure-centos-for-hibernation"></a>

**休止状態をサポートするように CentOS バージョン 8 以降の AMI を設定するには**

1. `4.18.0-305.7.1.el8_4.x86_64`以降にカーネルを更新します。

   ```
   [ec2-user ~]$ sudo yum update kernel
   ```

1. このステップでは、Fedora Extra Packages for Enterprise Linux (EPEL) リポジトリをインストールします。

   ```
   [ec2-user ~]$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
   ```

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo yum install ec2-hibinit-agent
   ```

1. 起動時に休止状態エージェントを起動できるようにします。

   ```
   [ec2-user ~]$ sudo systemctl enable hibinit-agent.service
   ```

1. インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. 次のコマンドを実行して、カーネルバージョンが `4.18.0-305.7.1.el8_4.x86_64` 以降に更新されていることを確認します。

   ```
   [ec2-user ~]$ uname -a
   ```

## Fedora バージョン 34 以降
<a name="configure-fedora-for-hibernation"></a>

**休止状態をサポートするために Fedora バージョン 34 以降の AMI を設定するには**

1. `5.12.10-300.fc34.x86_64`以降にカーネルを更新します。

   ```
   [ec2-user ~]$ sudo yum update kernel
   ```

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo dnf install ec2-hibinit-agent
   ```

1. 起動時に休止状態エージェントを起動できるようにします。

   ```
   [ec2-user ~]$ sudo systemctl enable hibinit-agent.service
   ```

1. インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. 次のコマンドを実行して、カーネルバージョンが `5.12.10-300.fc34.x86_64` 以降に更新されていることを確認します。

   ```
   [ec2-user ~]$ uname -a
   ```

## Red Hat Enterprise Linux バージョン 8 または 9 以降
<a name="configure-RHEL-for-hibernation"></a>

**休止状態をサポートするように Red Hat Enterprise Linux 8 または 9 AMI を設定するには**

1. `4.18.0-305.7.1.el8_4.x86_64`以降にカーネルを更新します。

   ```
   [ec2-user ~]$ sudo yum update kernel
   ```

1. このステップでは、Fedora Extra Packages for Enterprise Linux (EPEL) リポジトリをインストールします。

   RHEL バージョン 8:

   ```
   [ec2-user ~]$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
   ```

   RHEL バージョン 9:

   ```
   [ec2-user ~]$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
   ```

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo yum install ec2-hibinit-agent
   ```

1. 起動時に休止状態エージェントを起動できるようにします。

   ```
   [ec2-user ~]$ sudo systemctl enable hibinit-agent.service
   ```

1. インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. 次のコマンドを実行して、カーネルバージョンが `4.18.0-305.7.1.el8_4.x86_64` 以降に更新されていることを確認します。

   ```
   [ec2-user ~]$ uname -a
   ```

## シリアル番号 20210820 よりも前にリリースされた Ubuntu 20.04 LTS (Focal Fossa)
<a name="configure-ubuntu2004-for-hibernation"></a>

**シリアル番号 20210820 よりも前にリリースされた Ubuntu 20.04 LTS (Focal Fossa) AMI で休止がサポートされるように設定するには**

1. linux-aws-kernel を `5.8.0-1038.40` 以降に、grub2 を `2.04-1ubuntu26.13` 以降に更新します。

   ```
   [ec2-user ~]$ sudo apt update
   [ec2-user ~]$ sudo apt dist-upgrade
   ```

1. インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. 次のコマンドを実行して、カーネルバージョンが `5.8.0-1038.40` 以降に更新されていることを確認します。

   ```
   [ec2-user ~]$ uname -a
   ```

1. 次のコマンドを実行して、grub2 バージョンが `2.04-1ubuntu26.13` 以降に更新されていることを確認します。

   ```
   [ec2-user ~]$ dpkg --list | grep grub2-common
   ```

## シリアル番号 20190722.1 よりも前にリリースされた Ubuntu 18.04 (Bionic Beaver)
<a name="configure-ubuntu1804-for-hibernation"></a>

**シリアル番号 20190722.1 以前にリリースされた Ubuntu 18.04 LTS AMI で休止がサポートされるように設定するには**

1. `4.15.0-1044`以降にカーネルを更新します。

   ```
   [ec2-user ~]$ sudo apt update
   [ec2-user ~]$ sudo apt dist-upgrade
   ```

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo apt install ec2-hibinit-agent
   ```

1. インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. 次のコマンドを実行して、カーネルバージョンが `4.15.0-1044` 以降に更新されていることを確認します。

   ```
   [ec2-user ~]$ uname -a
   ```

## Ubuntu 16.04 (Xenial Xerus)
<a name="configure-ubuntu1604-for-hibernation"></a>

Ubuntu 16.04 LTS で休止がサポートされるように設定するには、linux-aws-hwe カーネルパッケージバージョン 4.15.0-1058-aws 以降および ec2-hibinit-agent をインストールする必要があります。

**重要**  
`linux-aws-hwe` カーネルパッケージは、Canonical でサポートされています。Ubuntu 16.04 LTS の標準サポートは 2021 年 4 月に終了し、パッケージは定期的な更新を受信しなくなりました。ただし、拡張セキュリティメンテナンスのサポートが2024年に終了するまで、追加のセキュリティアップデートを受け取ります。詳細については、[Ubuntu 16.04 LTS 用 Amazon EC2 の休止機能が利用可能に](https://ubuntu.com/blog/amazon-ec2-hibernation-for-ubuntu-16-04-lts-now-available)を参照してください。  
Ubuntu 20.04 LTS (Focal Fossa) AMI または Ubuntu 18.04 LTS (Bionic Beaver) AMI にアップグレードすることをお勧めします。

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

1. `4.15.0-1058-aws`以降にカーネルを更新します。

   ```
   [ec2-user ~]$ sudo apt update
   [ec2-user ~]$ sudo apt install linux-aws-hwe
   ```

1. `ec2-hibinit-agent`パッケージをリポジトリからインストールします。

   ```
   [ec2-user ~]$ sudo apt install ec2-hibinit-agent
   ```

1. インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. 次のコマンドを実行して、カーネルバージョンが `4.15.0-1058-aws` 以降に更新されていることを確認します。

   ```
   [ec2-user ~]$ uname -a
   ```

# Amazon EC2 インスタンスの休止の有効化
<a name="enabling-hibernation"></a>

インスタンスを休止するには、まずインスタンスを起動するときに休止を有効にする必要があります。

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

**Topics**
+ [オンデマンドインスタンスの休止を有効にする](#enable-hibernation-for-on-demand-instances)
+ [スポットインスタンスの休止を有効にする](#enable-hibernation-for-spot-instances)
+ [インスタンスで休止が有効かどうかを表示する](#view-if-instance-is-enabled-for-hibernation)

## オンデマンドインスタンスの休止を有効にする
<a name="enable-hibernation-for-on-demand-instances"></a>

オンデマンドインスタンスの休止を有効にできます。

------
#### [ Console ]

**オンデマンドインスタンスの休止を有効にするには**

1. 手順に従って[インスタンスを起動](ec2-launch-instance-wizard.md)しますが、次のステップを完了して休止状態を有効にするまでインスタンスを起動しないでください。

1. 休止状態を有効にするには、インスタンス起動ウィザードで次のフィールドを設定します。

   1. **[Application and OS Images (Amazon Machine Image)]** (アプリケーションおよび OS イメージ (Amazon マシンイメージ)) で、休止状態をサポートする AMI を選択してください。詳細については、「[AMI](hibernating-prerequisites.md#hibernation-prereqs-supported-amis)」を参照してください。

   1. **[Instance type]** (インスタンスタイプ) で、サポートされているインスタンスタイプを選択してください。詳細については、「[インスタンスファミリー](hibernating-prerequisites.md#hibernation-prereqs-supported-instance-families)」を参照してください。

   1. **[Configure storage]** (ストレージを設定) で、**[Advanced]** (高度) (右側) を選択し、ルートボリュームに関する次の情報を指定します。
      + [**サイズ (GiB)**] に、EBS ルートボリュームのサイズを入力してください。ボリュームは、RAM の内容を格納して予想使用量に対応できるだけのサイズにする必要があります。
      + **[Volume type]** (ボリュームタイプ) で、サポートされている EBS ボリュームタイプである汎用 SSD (`gp2` および `gp3`) またはプロビジョンド IOPS SSD (`io1` および `io2`) を選択してください。
      + **[Encrypted]** (暗号化) で、**[Yes]** (はい) を選択してください。この AWS リージョンでデフォルトで暗号化を有効にした場合、**[Yes]** (はい) が選択されます。
      + **[KMS key]** (KMS キー) で、ボリュームの暗号化キーを選択してください。この AWS リージョンでデフォルトで暗号化を有効にした場合、デフォルトの暗号化キーが選択されます。

      ルートボリュームの前提条件の詳細については、[EC2 インスタンスの休止の前提条件](hibernating-prerequisites.md)を参照してください。

   1. **[Advanced details]** (高度な詳細) を展開し、**[Stop - Hibernate behavior]** (停止 - 休止状態の動作) で **[Enable]** (有効にする) を選択してください。

1. **[Summary]** (概要) パネルでインスタンスの設定を確認し、**[Launch instance]** (インスタンスを起動) を選択してください。詳細については、「[コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する](ec2-launch-instance-wizard.md)」を参照してください。

------
#### [ AWS CLI ]

**オンデマンドインスタンスの休止を有効にするには**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用して、インスタンスを起動します。`--block-device-mappings file://mapping.json` パラメータを使用して EBS ルートボリュームのパラメータを指定し、`--hibernation-options Configured=true` パラメータを使用して休止状態を有効にします。

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type m5.large \
    --block-device-mappings file://mapping.json \
    --hibernation-options Configured=true \
    --count 1 \
    --key-name MyKeyPair
```

`mapping.json` で、以下を指定します。

```
[
    {
        "DeviceName": "/dev/xvda",
        "Ebs": {
            "VolumeSize": 30,
            "VolumeType": "gp2",
            "Encrypted": true
        }
    }
]
```

`DeviceName` の値は、AMI に関連付けられているルートデバイス名と一致する必要があります。ルートデバイス名を確認するには、次のように [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用します。

```
aws ec2 describe-images --image-id ami-0abcdef1234567890
```

この AWS リージョンで暗号化をデフォルトで有効にした場合は、`"Encrypted": true` を省略できます。

------
#### [ PowerShell ]

**オンデマンドインスタンスの休止を有効にするには**  
[New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドを使用してインスタンスを起動します。EBS ルートボリュームを指定します。最初にブロックデバイスマッピングを定義し、次に `-BlockDeviceMappings` パラメータを使用してそれをコマンドに追加します。`-HibernationOptions_Configured $true` パラメータを使用して休止を有効にします。

```
$ebs_encrypt = New-Object Amazon.EC2.Model.BlockDeviceMapping
$ebs_encrypt.DeviceName = "/dev/xvda"
$ebs_encrypt.Ebs = New-Object Amazon.EC2.Model.EbsBlockDevice
$ebs_encrypt.Ebs.VolumeSize = 30
$ebs_encrypt.Ebs.VolumeType = "gp2"
$ebs_encrypt.Ebs.Encrypted = $true

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

`DeviceName` の値は、AMI に関連付けられているルートデバイス名と一致する必要があります。ルートデバイス名を確認するには、次のように [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) コマンドを使用します。

```
Get-EC2Image -ImageId ami-0abcdef1234567890
```

この AWS リージョンで暗号化をデフォルトで有効にした場合は、ブロックデバイスマッピングから `Encrypted = $true` を省略できます。

------

## スポットインスタンスの休止を有効にする
<a name="enable-hibernation-for-spot-instances"></a>

スポットインスタンスの休止を有効にできます。中断時のスポットインスタンスの休止に関する詳細は、「[スポットインスタンスの中断。](spot-interruptions.md)」を参照してください。

------
#### [ Console ]

**スポットインスタンスの休止を有効にするには**

1. 次の手順に従って、[インスタンス起動ウィザードを使ってスポットインスタンスをリクエスト](using-spot-instances-request.md)しますが、次のステップを完了して休止を有効にするまで、インスタンスを起動しないでください。

1. 休止状態を有効にするには、インスタンス起動ウィザードで次のフィールドを設定します。

   1. **[Application and OS Images (Amazon Machine Image)]** (アプリケーションおよび OS イメージ (Amazon マシンイメージ)) で、休止状態をサポートする AMI を選択してください。詳細については、「[AMI](hibernating-prerequisites.md#hibernation-prereqs-supported-amis)」を参照してください。

   1. **[Instance type]** (インスタンスタイプ) で、サポートされているインスタンスタイプを選択してください。詳細については、「[インスタンスファミリー](hibernating-prerequisites.md#hibernation-prereqs-supported-instance-families)」を参照してください。

   1. **[Configure storage]** (ストレージを設定) で、**[Advanced]** (高度) (右側) を選択し、ルートボリュームに関する次の情報を指定します。
      + [**サイズ (GiB)**] に、EBS ルートボリュームのサイズを入力してください。ボリュームは、RAM の内容を格納して予想使用量に対応できるだけのサイズにする必要があります。
      + **[Volume type]** (ボリュームタイプ) で、サポートされている EBS ボリュームタイプである汎用 SSD (`gp2` および `gp3`) またはプロビジョンド IOPS SSD (`io1` および `io2`) を選択してください。
      + **[Encrypted]** (暗号化) で、**[Yes]** (はい) を選択してください。この AWS リージョンでデフォルトで暗号化を有効にした場合、**[Yes]** (はい) が選択されます。
      + **[KMS key]** (KMS キー) で、ボリュームの暗号化キーを選択してください。この AWS リージョンでデフォルトで暗号化を有効にした場合、デフォルトの暗号化キーが選択されます。

      ルートボリュームの前提条件の詳細については、[EC2 インスタンスの休止の前提条件](hibernating-prerequisites.md)を参照してください。

   1. **[詳細設定]** を展開し、スポットインスタンスを設定するフィールドに加えて次の操作を行います。

      1. **[リクエストタイプ]** で **[永続的]** を選択してください。

      1. **[中断動作]** で **[休止]** を選択してください。または、**[停止 - 休止動作]** で **[有効]** を選択してください。どちらのフィールドも、スポットインスタンスの休止を有効にします。いずれか 1 つ設定すれば済みます。

1. **[Summary]** (概要) パネルでインスタンスの設定を確認し、**[Launch instance]** (インスタンスを起動) を選択してください。詳細については、「[コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する](ec2-launch-instance-wizard.md)」を参照してください。

------
#### [ AWS CLI ]

**スポットインスタンスの休止を有効にするには**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用してスポットインスタンスをリクエストします。`--block-device-mappings file://mapping.json` パラメータを使用して EBS ルートボリュームのパラメータを指定し、`--hibernation-options Configured=true` パラメータを使用して休止状態を有効にします。スポットのリクエストのタイプ `SpotInstanceType`は `persistent` である必要があります。

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type c4.xlarge \
    --block-device-mappings file://mapping.json \
    --hibernation-options Configured=true \
    --count 1 \
    --key-name MyKeyPair
    --instance-market-options
        {
           "MarketType":"spot",
           "SpotOptions":{
              "MaxPrice":"1",
              "SpotInstanceType":"persistent"
            }
        }
```

`mapping.json` の EBS ルートボリュームパラメータを次のとおり指定します。

```
[
    {
        "DeviceName": "/dev/xvda",
        "Ebs": {
            "VolumeSize": 30,
            "VolumeType": "gp2",
            "Encrypted": true
        }
    }
]
```

`DeviceName` の値は、AMI に関連付けられているルートデバイス名と一致する必要があります。ルートデバイス名を確認するには、次のように [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) コマンドを使用します。

```
aws ec2 describe-images --image-id ami-0abcdef1234567890
```

この AWS リージョンで暗号化をデフォルトで有効にした場合は、`"Encrypted": true` を省略できます。

------
#### [ PowerShell ]

**スポットインスタンスの休止を有効にするには**  
[New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドを使用してスポットインスタンスをリクエストします。EBS ルートボリュームを指定します。最初にブロックデバイスマッピングを定義し、次に `-BlockDeviceMappings` パラメータを使用してそれをコマンドに追加します。`-HibernationOptions_Configured $true` パラメータを使用して休止を有効にします。

```
$ebs_encrypt = New-Object Amazon.EC2.Model.BlockDeviceMapping
$ebs_encrypt.DeviceName = "/dev/xvda"
$ebs_encrypt.Ebs = New-Object Amazon.EC2.Model.EbsBlockDevice
$ebs_encrypt.Ebs.VolumeSize = 30
$ebs_encrypt.Ebs.VolumeType = "gp2"
$ebs_encrypt.Ebs.Encrypted = $true

New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType m5.large `
    -BlockDeviceMappings $ebs_encrypt `
    -HibernationOptions_Configured $true `
    -MinCount 1 `
    -MaxCount 1 `
    -KeyName MyKeyPair `
    -InstanceMarketOption @(
        MarketType = spot;
        SpotOptions @{
        MaxPrice = 1;
        SpotInstanceType = persistent}
    )
```

`DeviceName` の値は、AMI に関連付けられているルートデバイス名と一致する必要があります。ルートデバイス名を確認するには、次のように [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) コマンドを使用します。

```
Get-EC2Image -ImageId ami-0abcdef1234567890
```

この AWS リージョンで暗号化をデフォルトで有効にした場合は、ブロックデバイスマッピングから `Encrypted = $true` を省略できます。

------

## インスタンスで休止が有効かどうかを表示する
<a name="view-if-instance-is-enabled-for-hibernation"></a>

インスタンスの休止が有効であるかどうかを確認できます。

------
#### [ Console ]

**インスタンスで休止が有効かどうかを表示するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択し、[**Details (詳細)**] タブの [**Instance details (インスタンスの詳細)**] セクションで、[**Stop-hibernate behavior (停止 - 休止動作)**] を確認します。[**有効**] は、インスタンスが休止に対して有効であることを示します。

------
#### [ AWS CLI ]

**インスタンスで休止が有効かどうかを表示するには**  
[describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) コマンドを使用し、`--filters "Name=hibernation-options.configured,Values=true"` パラメータを指定して、休止が有効になっているインスタンスをフィルタリングします。

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

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

```
"HibernationOptions": {
    "Configured": true
}
```

------
#### [ PowerShell ]

**インスタンスで休止が有効かどうかを表示するには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用し、休止が有効になっているインスタンスをフィルタリングします。

```
(Get-EC2Instance `
    -Filter @{Name="hibernation-options.configured"; Values="true"}).Instances
```

------

# インスタンスでの KASLR の無効化 (Ubuntu のみ)
<a name="hibernation-disable-kaslr"></a>

Ubuntu 16.04 LTS (Xenial Xerus)、Ubuntu 18.04 LTS (Bionic Beaver) (シリアル番号 20190722.1 以降でリリース)、または Ubuntu 20.04 LTS (Focal Fossa) (シリアル番号 20210820 以降でリリース) で新しく起動されたインスタンスで休止を使用するには、KASLR (Kernel Address Space Layout Randomization) を無効にするようお勧めします。Ubuntu 16.04 LTS、Ubuntu 18.04 LTS、または Ubuntu 20.04 LTS では、デフォルトで KASLR が有効になっています。

KASLR は、Linux カーネルに対する標準的なセキュリティ機能であり、カーネルのベースアドレス値をランダム化することにより、未知のメモリアクセス脆弱性による露出と影響を軽減するために役立ちます。KASLR が有効になっている場合は、インスタンスを休止後に再開できないこともあります。

KASLR の詳細については、[Ubuntu の機能に関する記述](https://wiki.ubuntu.com/Security/Features)を参照してください。

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

1. SSH を使用してインスタンスに接続します。詳細については、「[SSH を使用した Linux インスタンスへの接続](connect-to-linux-instance.md)」を参照してください。

1. 適切なエディタで、`/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"
   ```

1. ファイルを保存し、エディタを終了します。

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

   ```
   sudo update-grub
   ```

1. インスタンスを再起動します。

   ```
   sudo reboot
   ```

1. 次のコマンドを実行して、`nokaslr` が追加されたことを確認します。

   ```
   cat /proc/cmdline
   ```

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

# Amazon EC2 インスタンスの休止
<a name="hibernating-instances"></a>

インスタンスが EBS ベースのインスタンスであり、[休止が有効](enabling-hibernation.md)になっており、[休止の前提条件](hibernating-prerequisites.md)を満たしている場合、オンデマンドインスタンスまたはスポットインスタンスで休止を開始できます。インスタンスを休止できない場合、通常のシャットダウンが実行されます。

------
#### [ Console ]

**インスタンスを休止するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択し、[**Instance state (インスタンスの状態)**]、[**Hibernate instance (インスタンスの休止)**] の順に選択してください。[**Hibernate instance (インスタンスの休止)**] が無効になっている場合は、インスタンスが既に休止または停止しているか、休止できません。詳細については、[EC2 インスタンスの休止の前提条件](hibernating-prerequisites.md)を参照してください。

1. 確認を求めるメッセージが表示されたら、[**休止**] を選択してください。インスタンスが休止するまで、数分かかる場合があります。インスタンスの状態は、最初に**停止中**に変化し、インスタンスが休止状態になったときに**停止**に変化します。

------
#### [ AWS CLI ]

**インスタンスを休止するには**  
[stop-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) コマンドを使用して `--hibernate` パラメータを指定します。

```
aws ec2 stop-instances \
    --instance-ids i-1234567890abcdef0 \
    --hibernate
```

------
#### [ PowerShell ]

**インスタンスを休止するには**  
[Stop-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html) コマンドレットを使用します。

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

------

インスタンスで休止が開始されたかどうかを確認できます。

------
#### [ Console ]

**インスタンスで休止が開始されたかどうかを表示するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択し、**[詳細]** タブの **[インスタンスの詳細]** セクションで、**[状態遷移メッセージ]** の値を確認します。

   **Client.UserInitiatedHibernate: User initiated hibernate** というメッセージは、オンデマンドインスタンスまたはスポットインスタンスで休止が開始されたことを示しています。

------
#### [ AWS CLI ]

**インスタンスで休止が開始されたかどうかを表示するには**  
[describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) コマンドを使用して、`state-reason-code` フィルターを指定し、休止が開始されたインスタンスを確認します。

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

以下の出力のフィールドは、そのオンデマンドインスタンスまたはスポットインスタンスで休止が開始されたことを示しています。

```
"StateReason": {
    "Code": "Client.UserInitiatedHibernate"
}
```

------
#### [ PowerShell ]

**インスタンスで休止が開始されたかどうかを表示するには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用し、`state-reason-code` フィルタを指定して休止が開始されたインスタンスを確認します。

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

------

# 休止した Amazon EC2 インスタンスの起動
<a name="hibernating-resuming"></a>

休止したインスタンスは、停止したインスタンスを起動するのと同じ方法で起動します。

スポットインスタンスの場合、Amazon EC2 がインスタンスを休止にした場合、それを再開できるのは Amazon EC2 のみです。*ユーザー*は、自分で休止した場合のみ、休止したスポットインスタンスを再開できます。スポットインスタンスは、容量が空いていて、スポット料金が、指定した上限料金以下である場合、再開できます。

------
#### [ Console ]

**休止したインスタンスの起動するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. 休止したインスタンスを選択し、[**Instance state (インスタンスの状態)**]、[**Start instance (インスタンスの開始)**] の順に選択してください。インスタンスが `running` 状態になるまで、数分かかる場合があります。この間、インスタンスの [ステータスチェック](monitoring-system-instance-status-check.md#types-of-instance-status-checks) では、インスタンスが起動するまで、インスタンスは失敗状態にあるように表示されます。

------
#### [ AWS CLI ]

**休止したインスタンスの起動するには**  
[start-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) コマンドを使用します。

```
aws ec2 start-instances --instance-ids i-1234567890abcdef0
```

------
#### [ PowerShell ]

**休止したインスタンスの起動するには**  
[Start-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) コマンドレットを使用します。

```
Start-EC2Instance -InstanceId i-1234567890abcdef0
```

------

# Amazon EC2 インスタンスの休止のトラブルシューティング
<a name="troubleshoot-instance-hibernate"></a>

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

**Topics**
+ [起動直後に休止できません](#hibernate-troubleshooting-1)
+ [stopping から stopped への移行に時間がかかりすぎ、起動後にメモリ状態が復元されません](#hibernate-troubleshooting-2)
+ [インスタンスが stopping 状態で止まりました](#hibernate-troubleshooting-3)
+ [休止の直後にスポットインスタンスを起動できない](#hibernate-troubleshooting-4)
+ [スポットインスタンスを再開できない](#hibernate-troubleshooting-5)

## 起動直後に休止できません
<a name="hibernate-troubleshooting-1"></a>

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

起動後、Linux インスタンスの場合は約 2 分、Windows インスタンスの場合は約 5 分待ってから休止する必要があります。

## stopping から stopped への移行に時間がかかりすぎ、起動後にメモリ状態が復元されません
<a name="hibernate-troubleshooting-2"></a>

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

**Linux インスタンス**

インスタンスのシステムログをチェックして、休止に関連するメッセージを探します。システムログにアクセスするには、インスタンスに[接続](connect-to-linux-instance.md)するか、[get-console-output](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-console-output.html) コマンドを使用します。`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 の詳細については、[EC2 インスタンスの休止の前提条件](hibernating-prerequisites.md)を参照してください。独自の Linux AMI を使用した場合は、必ず [Linux AMI で休止がサポートされるように設定する](hibernation-enabled-AMI.md) の指示に従ってください。

**Windows Server 2016 以降**  
EC2 起動ログをチェックして、休止に関連するメッセージを探します。EC2 起動ログにアクセスするには、インスタンスに[接続](connecting_to_windows_instance.md)し、テキストエディタで `C:\ProgramData\Amazon\EC2-Windows\Launch\Log\Ec2Launch.log` ファイルを開きます。EC2Launch v2 を使用している場合は、`C:\ProgramData\Amazon\EC2Launch\log\agent.log` を開きます。

**注記**  
Windows では、デフォルトで `C:\ProgramData` 以下のファイルとフォルダは非表示になります。EC2 起動ディレクトリおよびファイルを表示するには、Windows エクスプローラーにパスを入力するか、フォルダのプロパティを変更して非表示のファイルおよびフォルダを表示します。

休止に関するログ行を見つけます。ログ行が失敗を示している場合、またはログ行がない場合、起動時に休止の設定に失敗している可能性が高いと思われます。

例えば、「`Message: Failed to enable hibernation.`」 というメッセージは、休止の設定に失敗したことを示しています。エラーメッセージに 10 進数の ASCII 値が含まれている場合は、ASCII 値をプレーンテキストに変換すると、エラーメッセージ全体を読み取ることができます。

ログ行に `HibernationEnabled: true` が含まれている場合、休止は正常に設定されています。

**Windows Server 2012 R2 以前**  
EC2 設定ログをチェックして、休止に関連するメッセージを探します。EC2 設定ログにアクセスするには、インスタンスに[接続](connecting_to_windows_instance.md)し、テキストエディタで `C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog.txt` ファイルを開きます。`SetHibernateOnSleep` のログ行を見つけます。ログ行が失敗を示している場合、またはログ行がない場合、起動時に休止の設定に失敗している可能性が高いと思われます。

例えば、メッセージ「`SetHibernateOnSleep: Failed to enable hibernation: Hibernation failed with the following error: There is not enough space on the disk.`」は、インスタンスのルートボリュームの大きさが十分ではないことを示しています。

ログ行が `SetHibernateOnSleep: HibernationEnabled: true` である場合、休止は正常に設定されています。

**Windows インスタンスサイズ**  
1 GiB 未満の RAM を持つ T3 または T3a Windows インスタンスを使用している場合は、インスタンスのサイズを少なくとも 1 GiB の RAM に増加してみてください。

## インスタンスが stopping 状態で止まりました
<a name="hibernate-troubleshooting-3"></a>

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

## 休止の直後にスポットインスタンスを起動できない
<a name="hibernate-troubleshooting-4"></a>

休止にしてから 2 分以内にスポットインスタンスを起動しようとすると、次のエラーが発生する場合があります。

`You failed to start the Spot Instance because the associated Spot Instance request is not in an appropriate state to support start.`

Linux インスタンスの場合は約 2 分、Windows インスタンスの場合は約 5 分待ってから、インスタンスの起動を再試行してください。

## スポットインスタンスを再開できない
<a name="hibernate-troubleshooting-5"></a>

スポットインスタンスが正常に休止されたが再開に失敗し、代わりに再起動 (休止状態を維持せずに新たに再起動) した場合、ユーザーデータに次のスクリプトが含まれていたことが原因である可能性があります。

```
/usr/bin/enable-ec2-spot-hibernation
```

起動テンプレートの **[ユーザーデータ]** フィールドからこのスクリプトを削除し、新しいスポットインスタンスをリクエストしてください。

休止状態を維持せずにインスタンスの再開に失敗した場合でも、インスタンスは `stopped` 状態から開始するのと同じ方法で起動できることに注意してください。