−25%

Windows 年払い、10月31日まで。 プランを見る

EQVPS

Linux VPS にスワップファイルを追加する方法

5 つのコマンドでスワップファイルを作成し、再起動後も有効にして swappiness を調整。追加すべきスワップ量と、本当の解決策が RAM の増設になる場面も解説。

小さなサーバーは最悪のタイミングでメモリを使い果たします。apt upgrade、Docker ビルド、夜間のバックアップ。スワップがなければ、カーネルの OOM killer がプロセスを一つ選んで強制終了させます。多くの場合、それはデータベースです。スワップファイルは、そうしたピークに逃げ道を与える安価なシートベルトです。コマンドは 5 つだけです。

1. 現状を確認する

swapon --show
free -h

swapon --show が何も表示しなければ、まだスワップはありません。

2. スワップファイルを作る

fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

chmod 600 は重要です。スワップには秘密情報を含め、メモリにあったものの断片が入りうるため、読めるのは root だけにすべきです。fallocate が「operation not supported」で失敗する場合は、代わりに dd を使います。

dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress

3. 永続化する

この手順がないと、再起動でスワップが消えます。

echo '/swapfile none swap sw 0 0' >> /etc/fstab

4. swappiness を調整する

RAM を優先し、スワップは主に逼迫時に使うようカーネルに指示します。

echo 'vm.swappiness=10' > /etc/sysctl.d/99-swap.conf
sysctl --system

5. 確認する

swapon --show
free -h

2 GB のスワップデバイスが表示され、cat /proc/sys/vm/swappiness は 10 を返すはずです。

どれくらいの大きさにするか

スワップを「RAM の 2 倍」で決めないでください。サーバーにおけるスワップは短いピークを吸収するためのもので、メモリに収まらない処理を動かすためのものではありません。

スワップが答えにならないとき

数日間、様子を見てください。

vmstat 5

si と so の列は、1 秒あたりにスワップから読み込まれた・スワップへ書き出されたページ数を示します。たまに動きがあるのは正常です。常にゼロ以外の値が続くなら、サーバーのメモリが足りず、すべてがディスクを待っています。その場合の解決策は RAM の増設です。VPS に必要な RAM はどれくらいかをご覧ください。EQVPS なら再インストールなしでより大きなプランに移行でき、データはそのまま残ります。

関連

よくある質問

スワップはどれくらい追加すべきですか?

RAM が 1〜2 GB のサーバーなら、1〜2 GB のスワップファイルが良い標準です。もっと大きなサーバーでも、安全網としては 1〜2 GB で足ります。「RAM の 2 倍」というルールは 256 MB マシンの時代のものです。

スワップでサーバーは速くなりますか?

なりません。スワップが防ぐのは、パッケージ更新、Docker ビルド、バックアップなどで一瞬メモリが尽きたときのクラッシュだけです。ディスク上のメモリページは RAM より何千倍も遅くなります。常にスワップを使っているなら、そのサーバーには RAM が足りていません。

swappiness は何をするものですか?

使われていないメモリをカーネルがどれだけ積極的にスワップへ移すかを決めます。既定値の 60 はかなり早めに移し、10 にするとデータを RAM に保ち、本当に逼迫したときにだけ主にスワップを使うようになります。ほとんどのサーバーにはこちらが合います。

パーティションではなくスワップファイルを使う理由は?

ファイルなら、サーバーを動かしたまま、パーティションテーブルに触れずに数秒で作成・サイズ変更・削除できます。最近のファイルシステムでは性能も同じです。

あとでスワップを削除するには?

'swapoff /swapfile' を実行し、/etc/fstab から /swapfile の行を削除してから 'rm /swapfile' を実行します。

コメント

まだコメントはありません。最初になりましょう。

コメントを残す

コメントは表示される前にモデレートされます。