swap領域の設定の仕方

以下を参考にswap領域の設定を行ったのでメモしておきます。

https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04

使用するOSはubuntuです。

swap領域の確認

swap領域の確認の仕方で一般的なのは、swaponとfreeコマンドです。

$ swapon -sで以下のようにヘッダーだけが返ってくるようであれば、swap領域は設定されていないことになります。

$ swapon -s
Filename                Type        Size    Used    Priority

また、$ free -mでswap領域の大きさを確認できます。

$ free -m
             total       used       free     shared    buffers     cached
Mem:          3953        154       3799          0          8         83
-/+ buffers/cache:         62       3890
Swap:            0          0          0

ROM領域の確認

次に、swap領域を割り当てるROMの空き容量を確認しておきます。

一番簡単なのはdfコマンドですかね。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         59G  1.3G   55G   3% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            2.0G   12K  2.0G   1% /dev
tmpfs           396M  312K  396M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            2.0G     0  2.0G   0% /run/shm
none            100M     0  100M   0% /run/user

ということで上の例だと、あと55GBは使えそうなので大丈夫そうですね。

今回は、そのうちの4GBをswap領域として確保しておく設定にしてみます。

swap領域の確保

fallocateが一番簡単にできそうです。

/swapfileというファイルを作成することで、swap領域を確保します。以下のようにすれば/にswapfileを作成してくれます。

$ sudo fallocate -l 4G /swapfile

lsで確認してみます。hオプション便利。

$ ls -lh / | grep swapfile
-rw-r--r-- 1 root root 4.0G Apr 28 17:19 /swapfile

あセキュリティのため権限をrootの書き込み、読み込みだけにしておきます。

$ sudo chmod 600 /swapfile

これであとは、swap領域の設定をしてあげればおけです。まずはswap領域の作成。さきほどのファイルをswap領域として作成します。

$ sudo mkswap /swapfile
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=e2f1e9cf-c0a9-4ed4-b8ab-714b8a7d6944

そしたら次にさきほどのswap領域を使用可能にしてやる必要があります。

$ sudo swapon /swapfile

これでswap領域の設定がおわりました。確認してみます。

$ sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        4194300 0       -1

あとは、rebootしたときにもswapがenableになるように設定してやれば完了です。

$ sudo vi /etc/fstab
# 最後の行に追加
/swapfile   none    swap    sw    0   0

追記

EC2の場合は以下を参考にして、900MB確保してみました。運用しながら調整してみようかなと思います。