AWSのEC2で再起動してもエフェメラルストレージをswapとして使うようにする
EC2でsmall以上のクラスのインスタンスにはエフェメラルストレージというものがついている。
このエフェメラルストレージはインスタンスをstopしてしまうとデータが消えてしまうという揮発性がそれなりに高いものなのだが、大容量に使える代物なのでログとかの一時置き場に使われたりしてるそうな。
また、EC2にはswapがないので、自分で用意したりしないといけない。
そこで、エフェメラルストレージをswapに使ってしまおう!というが今回のテーマ。
今回はUbuntuでの設定について備忘録。
エフェメラルストレージの追加
エフェメラルストレージを使うにはインスタンスを作成する際に追加する必要がある。
↓はインスタンスを作成するときのストレージについてのときの画面
microインスタンスは残念ながら追加できないが、small以上のインスタンスならば自動的に追加されているはず。
追加されていなければEditボタンを押下して、Instance Store Volumsタブから追加する。
fstabの設定
起動してきたインスタンスにログインしてみると最初は/mntにマウントされていると思う。
/etc/fstabとかをみると/mntがどうこうと書いてあるとおもうのでそれを以下のように書き換えてしまう
# vi /etc/fstab
…
/dev/xvdb none swap sw,nobootwait,comment=cloudconfig 0 2
/dev/xvdbは環境によって違うと思うので/mntのところをそのまま使いましょう。
もしくはfdisk -lで確認でもいいかも。
起動時にswaponする
fstabで書いただけではswapとして使えないので起動時にswaponしてくれるようにしちゃいましょう。
# vi /etc/rc.local
mkswap /dev/xvdb
swapon -a
exit 0
以上で設定はおわり。
確認
再起動してみると大量のswapが設定されているはず
# free -m
total used free shared buffers cached
Mem: 3749 3255 494 0 149 1982
-/+ buffers/cache: 1123 2626
Swap: 409565 0 409565
おまけ
crontabに以下を書くだけでもできたりします。
# crontab -e
@reboot (/sbin/mkswap -f /dev/xvdb; /sbin/swapon /dev/xvdb) > /dev/null 2>&1