ハードドライブのパーティションを使用して、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのスワップ領域として動作するようにメモリを割り当てたいと考えています。
簡単な説明
メモリをスワップ領域として割り当てるには、以下の手順を実行してください。
- スワップ領域のサイズを計算します。
- スワップ領域としてハードディスクにパーティションを作成します。
- スワップ領域を設定します。
スワップ領域として使用するスワップファイルを作成することもできます。詳細については、「Amazon EC2 インスタンスのスワップ領域として動作するようにメモリを割り当てる方法を教えてください」を参照してください。
注: RAM の容量が満杯になると、インスタンスはスワップ領域を使用します。スワップ領域は、RAM の容量が少ないインスタンスのために使用できますが、より多い RAM の代わりにはなりません。スワップ領域はインスタンスのハードドライブにあるため、実際の RAM に比べてパフォーマンスは低下します。メモリを増やしたり高速化したりするには、インスタンスサイズを増やします。
スワップ領域の詳細については、Red Hat のウェブサイトで「スワップ領域」を参照してください。
解決策
スワップ領域のサイズを計算する
2 GB までの物理 RAM では、スワップ領域は物理 RAM の 2 倍とするのがベストプラクティスです。2 GB を超える場合は、物理 RAM の 0.5 倍を追加します。スワップ領域が 32 MB 未満になることを避けるのもベストプラクティスです。次の表を参照してスワップ領域のサイズを計算してください。
| |
---|
システム RAM の量 | 推奨されるスワップ領域 |
2 GiB 以下 | RAM 容量の 2 倍。ただし 32 MB 未満にはしません。 |
2 GiB より大きく、64 GiB 未満 | RAM 容量の 0.5 倍 |
64 GB 以上 | ワークロードまたはユースケースに依存 |
スワップ領域としてハードドライブにパーティションを作成する
ハードドライブにスワップ領域としてパーティションを作成するには、次の手順を実行します。
-
AWS Systems Manager または SSH を使用してインスタンスにログインします。
-
使用可能なボリュームを一覧表示します。
sudo fdisk -l
-
パーティションを作成するデバイスをリストから選択します。この例では、デバイス /dev/xvda を使用します。
sudo fdisk /dev/xvda
-
新しいパーティションを作成します。
\-> n
-
パーティションタイプを選択します。この例では、プライマリを使用します。
\-> p
-
パーティション番号を割り当てます。この例では、パーティション 2 を使用します。
\-> 2
-
Enter キーを押して、デフォルトの "First sector" を承認します。
-
スワップファイルのサイズを入力します。この例では、2 GB の RAM があります。作成したパーティションは 4 GB (+4G と指定) です。
\-> +4G
-
保存して終了します。
\-> w
スワップ領域のセットアップ
スワップ領域を設定するには、次の手順を実行します。
-
partprobe コマンドを使用して、パーティションテーブルの変更を OS に通知します。
partprobe
-
前のステップで作成したスワップパーティションを使用して Linux スワップ領域を設定します。次の例では、スワップパーティションは /dev/xvda2 です。
mkswap /dev/xvda2
-
スワップ領域としてパーティションを追加します。
sudo swapon /dev/xvda2
-
現在のスワップ領域を表示します。
sudo swapon -s
出力は次の例のようになります。
Filename Type Size Used Priority/dev/xvda2 partition 4194300 0 -1
-
次のコマンドを使用して、再起動後にスワップメモリの割り当てを永続化します。
blkid コマンドの UUID を出力します。
sudo blkid
上記の出力からスワップパーティションの UUID をコピーします。vi や nano などのテキストエディタを使用して、/etc/fstab ファイルに次の内容を追加します。
UUID=xxxxxxx none swap SW 0 0
-
ファイルを保存したら、再起動します。
OS を再起動したら、free-h コマンドを使用して、スワップメモリの割り当てが維持されていることを確認します。