目次

AWS EC2でSwapを利用する手順



AWS E2の公式AMIにはswap領域がありません。
メモリーを一時的に使うような用途では、念のためにSwapがあった方がよいので、Swapを作成しましょう。


インスタンスストア(Ephemeral Disk)を利用する方法

EBSだとI/O単位で課金が発生するためスワップアウト/インが頻発する状況だとディスクI/Oの課金がかさんでしまう可能性があります。

インスタンスストア(Ephemeral Disk)


インスタンスストア(Ephemeral Disk)をSwapとして利用する手順

事前の確認

# lsblk
# lsblk -p
# free -m

初回のスワップ追加

# mkswap /dev/nvme1n1
# swapon /dev/nvme1n1
# swapon -s     #確認

/etc/cloud/cloud.cfg

変更前
(略)
mounts:
 - [ ephemeral0, /media/ephemeral0 ]
 - [ swap, none, swap, sw, "0", "0" ]
# vim:syntax=yaml
変更後
(略)
mounts:
 - [ ephemeral0, swap, swap ,"defaults", "0", "0"]
# vim:syntax=yaml
(略)

/etc/fstab

#追加
/dev/nvme1n1  none swap sw,nobootwait,comment=cloudconfig   0   2

/etc/rc.d/rc.local

touch /var/lock/subsys/local
mkswap /dev/nvme1n1    # 追加
swapon /dev/nvme1n1    # 追加 
chmod +x /etc/rc.d/rc.local


swapファイルを利用する方法

方法1

if [ ! -f /swap.img ]; then
    fallocate -l 4G /swap.img && mkswap /swap.img && swapon /swap.img
fi


方法2

/etc/rc.local
fallocate -l 4G /swap.img && mkswap swap.img && swapon swap.img


方法3

/etc/rc.local
SWAPFILENAME=/swap.img
MEMSIZE=`cat /proc/meminfo | grep MemTotal | awk '{print $2}'`
 
if [ $MEMSIZE -lt 2097152 ]; then
  SIZE=$((MEMSIZE * 2))k
elif [ $MEMSIZE -lt 8388608 ]; then
  SIZE=${MEMSIZE}k
elif [ $MEMSIZE -lt 67108864 ]; then
  SIZE=$((MEMSIZE / 2))k
else
  SIZE=4194304k
fi
 
fallocate -l $SIZE $SWAPFILENAME && mkswap $SWAPFILENAME && swapon $SWAPFILENAME


参考