スワップファイルを使用して、Amazon EC2 インスタンスでスワップ領域として動作するようにメモリを割り当てる方法を教えてください。
最終更新日: 2020 年 1 月 15 日
Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで、スワップファイルとして動作するようにメモリを割り当てたいと考えています。どうすればよいですか?
簡単な説明
物理 RAM をすでに使用している場合、Amazon EC2 インスタンスは物理 RAM の短期的な代替としてスワップ領域を使用します。
頻繁に使用されていないか、他のデータや命令ほど緊急に必要ではない RAM のコンテンツは、一時的にスワップファイルにページングできます。これで RAM が解放され、すぐに使用できるようになります。
パーティションにスワップ領域を作成することもできます。詳細については、「ハードドライブのパーティションを使用して、Amazon EC2 インスタンスのスワップ領域として動作するようにメモリを割り当てる方法を教えてください」をご参照ください。
注: スワップ領域は、短期のストレージとしてのインスタンスストアボリュームにのみ作成することをお勧めします。
解決方法
スワップ領域のサイズを計算する
一般的なルールとして、スワップ領域を次のように計算します。
物理 RAM の量 | 推奨されるスワップ領域 |
2 GB 以下の RAM | RAM 容量の 2 倍、ただし常に 32 MB を超える |
2 GB 以上の RAM、ただし 32 GB 未満 | 4 GB + (RAM – 2 GB) |
32 GB 以上の RAM | RAM 容量の 1 倍 |
注: スワップ領域は 32 MB 未満にしないでください。
スワップファイルを作成する
1. dd コマンドを使用して、ルートファイルシステムにスワップファイルを作成します。コマンドでは、bs とはブロックサイズ、count とはブロック数のことです。スワップファイルのサイズは、ブロックサイズオプションに dd コマンドの count オプションを乗算したものです。これらの値を調整して、希望するスワップファイルのサイズを決定します。
指定するブロックサイズは、インスタンスの使用可能なメモリより小さくする必要があります。そうしないと、「メモリを使い果たしました」というエラーが表示されます。
この dd コマンドの例では、スワップファイルは 4 GB (128 MB x 32) です。
$ sudo dd if=/dev/zero of=/swapfile bs=128M count=32
2. スワップファイルの読み込みと書き込みのアクセス許可を更新します。
$ sudo chmod 600 /swapfile
3. Linux スワップ領域をセットアップします。
$ sudo mkswap /swapfile
4. スワップ領域にスワップファイルを追加して、スワップファイルをすぐに使用できるようにします。
$ sudo swapon /swapfile
5. 手順が正常に行われたことを確認します。
$ sudo swapon -s
6. /etc/fstab ファイルを編集して、起動時にスワップファイルを有効にします。
エディタでファイルを開きます。
$ sudo vi /etc/fstab
ファイルの末尾に次の新しい行を追加し、ファイルを保存して終了します。
/swapfile swap swap defaults 0 0