2014年10月26日日曜日

EC2のInstance Store ボリュームをSWAP領域として利用

EC2には無料で利用できるInstans Store ボリュームを備えているインスタンスタイプがあります。
ただ、このInstans Store ボリュームはEC2をStop/Terminateすると消えてしまうので、データ保存領域としては利用できません。
せっかく無料で利用できるのでSWAP領域として活用することを考えその手順をまとめてみました。
※今回利用したインスタンスタイプ(m3.medium)には4GBのInstans Storeが付随します。

OS: amazon-linux-ami/2014.09 (64-bit)


■Instans Store ボリューム追加
Instans Store ボリュームはデフォルトでは追加されないのでマネージメントコンソールにてEC2作成時に指定します。

■SWAP領域追加前
[ec2-user@alnx-web01 ~]$ free -m
             total       used       free     shared    buffers     cached
Mem:          3768        134       3633          0          7         60
-/+ buffers/cache:         65       3702
Swap:            0          0          0
[ec2-user@alnx-web01 ~]$


■AmazonLinuxのデフォルト設定を修正
## デフォルト設定確認
[ec2-user@alnx-web01 ~]$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  15G  0 disk
└─xvda1 202:1    0  15G  0 part /
xvdb    202:16   0   4G  0 disk /media/ephemeral0
[ec2-user@alnx-web01 ~]$ cat /etc/fstab
#
LABEL=/     /           ext4    defaults,noatime  1   1
tmpfs       /dev/shm    tmpfs   defaults        0   0
devpts      /dev/pts    devpts  gid=5,mode=620  0   0
sysfs       /sys        sysfs   defaults        0   0
proc        /proc       proc    defaults        0   0
/dev/sdb        /media/ephemeral0       auto    defaults,nofail,comment=cloudconfig     0       2
[ec2-user@alnx-web01 ~]$
/dev/sdb が Instans Store ボリュームのデバイスです。/dev/xvdb のシンボリックリンクです。

## マウント解除
[ec2-user@alnx-web01 ~]$ sudo vi /etc/fstab
[ec2-user@alnx-web01 ~]$ tail -1 /etc/fstab
#/dev/sdb       /media/ephemeral0       auto    defaults,nofail,comment=cloudconfig     0       2
[ec2-user@alnx-web01 ~]$ sudo umount /media/ephemeral0
[ec2-user@alnx-web01 ~]$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  15G  0 disk
└─xvda1 202:1    0  15G  0 part /
xvdb    202:16   0   4G  0 disk
[ec2-user@alnx-web01 ~]$
lsblkコマンドで約4GBの Instans Store ボリュームの存在を確認できます。


■SWAP領域作成&有効化
mkswapコマンドでSWAP領域を作成し、swaponコマンドで有効化します。
[ec2-user@alnx-web01 ~]$ ll /dev/sdb
lrwxrwxrwx 1 root root 4 Oct  8 13:40 /dev/sdb -> xvdb
[ec2-user@alnx-web01 ~]$ sudo mkswap /dev/sdb
mkswap: /dev/sdb: warning: wiping old ext3 signature.
Setting up swapspace version 1, size = 4188668 KiB
no label, UUID=8bd2611b-a850-4186-bdf8-b1769ff92a17
[ec2-user@alnx-web01 ~]$ sudo swapon /dev/sdb
[ec2-user@alnx-web01 ~]$

## 確認
[ec2-user@alnx-web01 ~]$ free -m
             total       used       free     shared    buffers     cached
Mem:          3768        139       3628          0          7         62
-/+ buffers/cache:         69       3698
Swap:         4090          0       4090
[ec2-user@alnx-web01 ~]$
約4GBのSWAP領域が追加されました。


■OS起動時にSWAP自動有効化
[ec2-user@alnx-web01 ~]$ sudo vi /etc/fstab
[ec2-user@alnx-web01 ~]$ tail -1 /etc/fstab
/dev/sdb    swap        swap    defaults        0   0
[ec2-user@alnx-web01 ~]$ sudo reboot

## 再起動後に確認
[ec2-user@alnx-web01 ~]$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  15G  0 disk
└─xvda1 202:1    0  15G  0 part /
xvdb    202:16   0   4G  0 disk [SWAP]
[ec2-user@alnx-web01 ~]$ free -m
             total       used       free     shared    buffers     cached
Mem:          3768        137       3630          0          7         60
-/+ buffers/cache:         69       3699
Swap:         4090          0       4090
[ec2-user@alnx-web01 ~]$
今回はfstabにSWAP領域を定義したが、場合によっては/etc/rc.localにswapon情報を記載することも検討の余地ありです。


こちらの情報が何かのお役に立てましたら幸いです。サイト継続ご協力のほどお願い致します。m(_ _)m