デフォルトは0。
Degital Ocean使ってる時は自分で設定してたけど、EC2もそうなのね。知らなかった。(インスタンスタイプによるのかも。t2は設定されてなかった)
このままでは、メモリが足りなくなるとOOM Killerにやられてしまう。
http://qiita.com/konpyu/items/20d1989d1251d805cf3b
というわけでAnsibleのPlaybookを書いて設定した。
Swapfileの追加手順はこの辺を参考に。
Ansibleでやる方法はこの辺り。
- https://supportex.net/blog/2014/10/ansible-add-swap-linux-box/
- http://stackoverflow.com/questions/24765930/add-swap-memory-with-ansible
ちなみに、--check
はdry-runのこと。
https://docs.ansible.com/playbooks_checkmode.html
Playbook
最終的にこんなPlaybookになった。
---
- hosts: all
user: ec2-user
sudo: yes
tasks:
- name: create the file to be used for swap
command: fallocate -l 1G /swapfile
- name: format the file for swap
command: mkswap /swapfile
- name: change swap file permissions
file: path=/swapfile owner=root group=root mode=0600
- name: add the file to the system as a swap file
command: swapon /swapfile
- name: write swap entry in /etc/fstab
mount: name=swap src=/swapfile fstype=swap opts=defaults passno=0 dump=0 state=present
存在チェックとかしてないので、2回目実行するとエラーで止まる。
ので、単体で実行。
$ ansible-playbook add_swap.yml -i hosts
無事、設定されました。
$ swapon -s
Filename Type Size Used Priority
/swapfile file 1048572 0 -1
$ free -m
total used free shared buffers cached
Mem: 2004 1700 304 0 131 224
-/+ buffers/cache: 1344 659
Swap: 1023 0 1023
CentOS 7
CentOS 7にもそのまま使えるかと思ったら、
stderr: swapon: /swapfile: swapon failed: Invalid argument
となった。
dd使わんとダメっぽい。
- command: fallocate -l 1G /swapfile
+ command: dd if=/dev/zero of=/swapfile bs=1M count=1024
で行けた。