【AWS】 EC2のRHELインスタンスにSwap領域を設定する方法

AWS

今回は、AWSのEC2インスタンスで作成したRed Hat Enterprise Linux (RHEL) サーバーにswap領域がない理由と、その設定方法について解説します。

Swapとは何か、なぜ必要なのか

まず、swapの基本概念から説明しましょう。Swapとは、物理メモリ(RAM)が不足した際に、ハードディスクの一部を仮想メモリとして使用する仕組みです。これにより、以下のメリットがあります:

1. メモリ不足による突然のプロセス終了を防ぐ
2. 物理メモリよりも大きなデータセットを扱えるようになる
3. 使用頻度の低いデータをswap領域に移動させ、RAMを効率的に使用できる

特に小規模なインスタンスや、メモリを大量に消費するアプリケーションを実行する場合、swapは重要な役割を果たします。

AWS EC2インスタンスにおけるSwapの扱い

AWSのEC2インスタンスにおけるswapの扱いは、インスタンスタイプによって異なります。ここでは、一般的なケースと特殊なケースに分けて説明します。

一般的なケース:Swapが設定されていないインスタンス

多くのEC2インスタンスタイプでは、デフォルトでswap領域が設定されていません。これには主に以下の理由があります:

1. パフォーマンス最適化:SSDベースのインスタンスストレージを使用する場合、swapによるディスクI/Oがパフォーマンスに影響を与える可能性があります。

2. コスト効率:EBSボリュームを使用している場合、swapによる頻繁な書き込みがI/O操作を増加させ、コストが上昇する可能性があります。

3. インスタンスの柔軟性:ユーザーが必要に応じてswapを設定できるようにすることで、様々なユースケースに対応できます。

4. メモリ管理:クラウド環境では、メモリ不足時にインスタンスのスケールアップや新しいインスタンスの追加が推奨されることがあります。

特殊なケース:デフォルトでSwapが設定されているインスタンス

AmazonのEC2公式ドキュメンテーションによると、一部の特定のインスタンスタイプでは、デフォルトでswap領域が設定されています。具体的には以下の通りです:

– `c1.medium` および `m1.small` インスタンスタイプには、起動時に900 MiBのスワップボリューム(またはスワップ空間)が与えられます。
– このスワップ空間は、Linuxシステムの仮想メモリとして機能します。
– スワップ空間は、システムが物理的に割り当てられた以上のメモリを必要とする場合に使用されます。

これらのインスタンスタイプでは、物理メモリの量が制限されているため、パフォーマンスを向上させる目的でデフォルトのスワップ設定が行われています。

Swapの使用に関する注意点

スワップ空間の使用には、いくつかの重要な注意点があります:

1. パフォーマンスの低下:スワップ空間をメモリページングに使用すると、RAMを使用する場合と比較して速度と効率が低下します。

2. 頻繁なスワップ使用の対処:ワークロードが定期的にスワップ空間にメモリをページングする場合は、RAMの多い大きなサイズのインスタンスタイプへの移行を検討すべきです。

3. スワップ領域の認識:Linuxカーネルはこのスワップ領域をルートデバイス上のパーティションとして認識しますが、実際には別のインスタンスストアボリュームです。

4. インスタンスタイプの変更:メモリ使用量が多い場合は、「インスタンスタイプを変更する」機能を使用して、より適切なインスタンスタイプに移行することを検討してください。

EC2のRHELインスタンスにSwapを設定する方法

デフォルトでswapが設定されていないインスタンスや、追加のswap領域が必要な場合は、以下の手順でswapを設定できます。ここでは、ddコマンドを使用してswapファイルを作成し、それをswap領域として設定する手順を説明します。

1. まず、rootユーザーまたはsudo権限を持つユーザーでログインします。

2. swapファイルを作成します。ここでは例として2GBのswapファイルを作成します:

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

このコマンドは、/dev/zero(ゼロで埋められた特殊なファイル)から2048個の1MBブロックを読み取り、/swapfileに書き込みます。

3. swapファイルのパーミッションを設定します:

sudo chmod 600 /swapfile

4. swapファイルをフォーマットします:

sudo mkswap /swapfile

5. swapを有効にします:

sudo swapon /swapfile

6. システム再起動後もswapが有効になるよう、/etc/fstabファイルに次の行を追加します:

echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab

7. 設定が正しく行われたか確認します:

sudo swapon --show

または

free -h

これらのコマンドを実行すると、新しく作成されたswap領域が表示されるはずです。

まとめ

今回は、AWS EC2のRHELインスタンスにおけるswap領域の重要性と、その設定方法について解説しました。

swapはシステムの安定性とパフォーマンスに大きく影響する可能性があるため、その必要性を十分に検討した上で設定することが重要です。また、頻繁にswapを使用する状況が発生した場合は、より大きなメモリを持つインスタンスタイプへの移行を検討することをお勧めします。

【注意】

このブログは技術に関する知識や経験を共有することを目的としており、情報の正確性に努めていますが、その内容の正確性や完全性を保証するものではありません。ブログの情報を利用する場合は、自己の責任において行動してください。ブログの内容に基づいて行った行動や決定によって生じた損害や被害について、筆者は一切の責任を負いません。

 

記事の内容の一部は、生成AIで作成しています。

AWSRHEL
この記事の作者
StarTeller

30歳で異業種からITエンジニアへ転身し、10年以上にわたりインフラエンジニアとして様々な現場でシステム構築・運用に携わってきました。

得意分野はLinux/Windowsのサーバー構築・運用で、ネットワークやAWSなども実務で活用しています。

このブログでは、これまでの業務で培った経験を基に、日々の業務で遭遇した問題の解決方法や、システム構築の具体的な手順を解説。現場のエンジニアが実際に「困ったとき」に参照できる情報を意識して投稿していこうと思っています。

StarTellerをフォローする
StarTellerをフォローする

コメント

タイトルとURLをコピーしました