Vultr Cloud Compute(VC2) で swap を設定する

Vultr の VPS こと Vultr Cloud Compute(VC2) の標準提供イメージでは、swap の設定がされていません。CPU やディスクの性能的には最安の $3.5/month のプランでも十分事足りますが、メモリが 512MB しかないために簡易なサーバ用途でもギリギリになりがちです。

top

これは実際に運用しているサーバで top した様子です。メモリの free が 10MB 程度しかありません。250MB はキャッシュなので実際には不足しているわけではありませんが、余裕はない状態です。Vultr 公式に swap の設定ガイドがあるので、これを参考に swap の設定を行います。

まずは既に swap が設定されていないかを確認します。"free -m" して swap が 0 であることを確認します。

$ free -m
total used free shared buff/cache available
Mem: 492 228 8 26 255 224
Swap: 0 0 0

次に swap 先のファイルを準備します。今回はガイド通りの 2GB の領域を確保しました。

$ sudo dd if=/dev/zero of=/swapfile count=2048 bs=1M
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 6.51387 s, 330 MB/s

作成した /swapfile の権限を、root のみが読み書きできるように変更します。

$ sudo chmod 600 /swapfile

mkswap を実行して /swapfile のセットアップを行います。

$ sudo mkswap /swapfile
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=0e842c1b-20d4-4da0-853d-78b708da7003

swapon で swap を有効化します。

$ sudo swapon /swapfile

特に何も表示されなければ成功です。"free -m" してメモリ使用量を見てみましょう。

$ free -m
total used free shared buff/cache available
Mem: 492 229 7 26 255 223
Swap: 2047 0 2047

すぐには使われないようですが、ちゃんと Swap の total が 0 ではなくなっていますね。

永続化

このままだと再起動するたびに swapon しないといけないので、/etc/fstab に書いて起動時に自動で swap を設定するようにします。次の 1 行を追記してください。

/swapfile none swap sw 0 0

参考