LoginSignup
13
12

More than 5 years have passed since last update.

AWS EC2インスタンスストアをSwap領域に活用する

Last updated at Posted at 2015-07-10

困ったこと

SWAP領域はLinuxのメモリ管理に重要な役割を果たしています。
一方で、AWSの公式AMIではSWAP領域を用意していません。

よくある解決策はEBS(OS上領域)にSWAPファイルを作成してSWAPとして使用するというやり方です。
ただし、EBS上のIOアクセスは課金されてしまうため、気を付けないと予算をオーバーしてしまう危険性があります。

解決方法

m3などのインスタンスタイプに用意されているIOアクセスが課金されない「インスタンスストア」に注目しました。

しかし、「インスタンスストア」はインスタンス再起動時インスタンスストアのデータはすべて削除され、自動的にext3に再フォーマットされてしまいます。
これらの特性を踏まえて以下の案を考えました。

1. ボリューム追加

AWSインスタンス作成時「ストレージの追加」のステップで、インスタンスストア0/dev/sdbとしてボリューム追加します。

2. インスタンス起動後設定

/etc/fstabを以下のように修正します。

/etc/fstab
...
↓ 従来設定をコメント
# /dev/xvdb /media/ephemeral0 auto defaults,nofail,comment=cloudconfig 0 2
/dev/xvdb swap swap defaults 0 0

3. SWAP領域作成スクリプト準備

/var/lib/cloud/scripts/per-boot直下に、実行権があるmakeswap.shファイルを作成します。
makswap.sh中身は以下です。

makeswap.sh
#!/bin/bash
SWAPDEVNAME=/dev/xvdb
if [ -b $SWAPDEVNAME ]; then
    /sbin/swapoff -a
    /sbin/mkswap $SWAPDEVNAME > /dev/null
    /sbin/swapon -a -e
fi

4. 確認作業

OS再起動後、swapon -sでSWAP領域が作成されたことを確認できます。

参考情報

インスタンスストアを利用できないAWSインスタンスタイプの場合は、こちらを参考にしてください。
http://dev.classmethod.jp/cloud/ec2linux-swap-bestpractice/

13
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12