スワップファイル(swap)を作成して有効にする

VPSを借りるとスワップパーティションがないことがあります。
メモリが足りないとコマンド自体がうまく動かなかったり、サービスがメモリ不足でkillされたりすることがあるので、スワップ領域は欲しいところです。
スワップ用に使えるパーティションがないこともあるので、スワップファイルを作成して有効にする方法を紹介します。

ここでは、/swapfileに2GBのスワップファイルを作成することにします。

dd if=/dev/zero of=/swapfile bs=1M count=2048
mkswap /swapfile
chmod 600 /swapfile

次に、作成したスワップファイルを有効にしてswapon -sfreeコマンドで確認します。

# swapon /swapfile
# swapon -s
Filename				Type		Size	Used	Priority
/swapswapfile                               file		2097144	0	-1
# free
total       used       free     shared    buffers     cached
Mem:       1020400     292632     727768          0      79468     129184
-/+ buffers/cache:      83980     936420
Swap:      2097144          0    2097144

次回、サーバ起動時にも有効になるようにfstabに記述をしておきます。
念のため、サーバを再起動してもスワップが有効になるか確認することを推奨します。

vi /etc/fstab
-------------------------------------
/swapfile               swap                   swap    defaults        0 0
-------------------------------------

スワップファイルのバーミッションについての警告

CentOS 7の場合は、swaponの実行時に、スワップファイルのパーミションについて次の様な警告が出ることがあります。

swapon: /swapfile: insecure permissions 0644, 0600 suggested.

念のため一旦swapoffでスワップを無効化してから、スワップファイルを推奨のパーミッションである0600に変更し、改めてswaponを実行するとよいでしょう。

swapoff /swapfile
chmod 0600 /swapfile
swapon /swapfile