EC2のEphemeral DiskにSwap領域を作成or拡張する

投稿者: | 2015/05/05

AWSのEC2インスタンスを使う上で最も不便を感じている点の1つとしてSwap領域が無いことだと思います(個人的観点)。
m1.smallとc1.mediumの場合のみデフォルトでSwap領域が追加されていますが、実運用においてもっと大きいインスタンスタイプを使う場合が多いでしょう。

そこで今回はEC2インスタンスにSwap領域を追加する方法を紹介します。
Swap領域として使用するディスクは、インスタンスストア(Ephemeral Disk)を使用します。その理由は以下の3点です。

  1. ルートデバイスとしてマウントされているEBSボリュームに影響を及ぼさない
  2. 揮発性(EC2を停止するとデータが削除される)ため、用途として向いている
  3. M3, C3タイプなどはSSDなので読み書きが高速

Swap領域の作成には、パーティションを使用する場合とファイルを使用する場合の2つがありますので、両方とも紹介します。
一般的にはスワップ・パーティションの方が高速ですが、拡張のしやすさやインスタンスストアが無いEC2インスタンスでもSwap領域が確保できる点でファイル・スワップもメリットがあります。

また、Swap領域が足りなくなった場合に拡張する方法も紹介します。
本来なら、Swap領域を常に使うような状態になったらメモリを多く積んでるインスタンスタイプに変更すべきですが、一時的対処したい場合に拡張することもあるかと思います。

環境

  • インスタンスタイプ: c3.large
  • OS: Amazon Linux (2015.03)

EC2インスタンスを起動する場合は、予めインスタンスストアを追加した状態で起動してください。

ec2 instance store

初期状態

パーティションを使用する場合

すでにインスタンスストアがマウントされている場合はアンマウントしておきます。

fdiskコマンドでパーティションを作成します。

最初の設定を見ると、まだパーティションが作成されていない状態です。
Swap領域用のパーティションを作成します。サイズはメモリとほぼ同サイズの4GBにします。

保存して終了します。

パーティション(/dev/xvdb1)が作成されればOKです。

Swap領域を有効化させます。

freeコマンドなどでSwapが表示されれば完了です。

再起動後もSwap領域がマウントされるように/etc/fstabを編集します。

Swap領域を拡張する場合

さきほど4G程度のSwap領域を作成しましたが、Swapが足りなくなって拡張したい場合の方法を紹介します。

すでに4G程度のSwap用のパーティションが追加されている状態です。
新たにSwap用のパーティション(番号:2)を追加します。サイズは4Gにしました。

保存しようとすると、すでに使われているためビジー状態となっています。

再起動する手もありますが、稼働中のシステムだと再起動できない場合が多いので、今回はpartxコマンドで強制的にパーティションテーブルを更新させます。

/dev/xvdb2が追加されているのを確認できたらSwap領域を有効化させます。

Swap領域が増えていれるのが確認できます。
最後に/etc/fstabに追記して永続化しておきます。

ファイルを使用する場合

初期状態に戻しておきます。

ddコマンドでSwap領域用ファイル(4G)を作成します。

Swap領域を有効化させます。

Swap領域ができているのが確認できます。

/etc/fstabを編集してSwap領域を永続化させます。

Swap領域を拡張する場合

新しくSwap用ファイル(/media/ephemeral0/swapfile1)を追加して有効化させれば良いです。

/etc/fstabに追記して永続化するのも忘れずに行います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*