ec2 amazon linux に swap を追加

aws

全国のec2ユーザーの皆様、こんばんは。

ここだけの話ですが、ec2って標準で swap が 0 って知ってました?

私は、てっきりそんなものは標準でくっついてるのもであると思い込んでいたので、まったく気にしてませんでした!

しかし、あるとき、ec2がメモリ不足で落ちたようなので、調査して見ると、なんと swap 領域 0 じゃあーりませんか!

swapないと、メモリが満杯になった瞬間に高確率でサーバーが押して、応答不能になります。

swapを追加する方法を教えます。

とりあえず、今回は 4G 追加するとしましょう。

そのままでは容量が足りないので
/ の容量を拡張

awsのメニューから拡張する
ec2 -> 説明 -> ルートデバイスの /dev/xvda をクリック ->
EBS ID vol-bf0be24e みたいなところをクリック
ボリュームの画面になってサイズを変更

そのあとログインして以下を実行
$ sudo growpart /dev/xvda 1
CHANGED: disk=/dev/xvda partition=1: start=4096 old: size=16773086,end=16777182 new: size=33550302,end=33554398

以下も実行
$ sudo resize2fs /dev/xvda1
resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/xvda1 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/xvda1 is now 4193787 (4k) blocks long.

容量確認
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 1.9G 60K 1.9G 1% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/xvda1 16G 4.8G 11G 31% /

Swapディレクトリ作成
$ sudo mkdir /swap

Swapファイルを追加(4G追加)
$ sudo dd if=/dev/zero of=/swap/swap.img bs=1M count=4096

追加できたかを du コマンドで確認
$ sudo du -h /swap/swap.img
4.1G /swap/swap.img

$ sudo chmod 600 /swap/swap.img

ファイルを初期化
$ sudo mkswap /swap/swap.img

swapファイルを認識させる
$ sudo swapon /swap/swap.img

確認
$ free -m
total used free shared buffers cached
Mem: 1993 1920 72 0 33 1235
-/+ buffers/cache: 652 1340
Swap: 4095 0 4095

Swapの永続化
現状の状態では、システム再起動時にSwapの設定が無効化されるため、
下記設定を追加します。

$ sudo vi /etc/fstab
以下を追加
/swap/swap.img swap swap defaults 0 0

htop で確認するとスワップが増えてますね
$ sudo yum -y install htop
$ htop

タイトルとURLをコピーしました