LinuxのSwapを追加する入門|VPSのメモリ不足をスワップファイルで解消する方法

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > LinuxのSwapを追加する入門|VPSのメモリ不足をスワップファイルで解消する方法
「VPSのプロセスが突然 Killed と表示されて止まってしまった」 「サーバーがどんどん重くなって、最終的に応答しなくなった」
このような症状の多くは、VPSのメモリが不足して OS がプロセスを強制終了(OOM Kill)した結果です。1GB 以下の格安 VPS では、WebサーバーとDBを同時に動かしただけでメモリが枯渇することがあります。
この記事では、Linux に Swap(スワップ)領域を追加する方法を解説します。fallocatemkswapswapon を順に実行し、/etc/fstab に登録して再起動後も有効にする手順を、初心者向けに一から説明します。
実行環境:Ubuntu 24.04 LTS / Rocky Linux 9.4 で動作確認済み

この記事のポイント

・fallocate -l 2G /swapfile でスワップファイルを作成できる
・mkswap・swapon の2コマンドで即時有効化できる
・/etc/fstab に追記すれば再起動後も自動的に有効になる
・推奨サイズはRAM容量と同等(1GB RAM なら swap 1~2GB)


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

Swapとは何か

Swap(スワップ)とは、物理メモリ(RAM)が不足した際に、ディスクの一部をメモリの代替として使う仕組みです。Windows の「仮想メモリ」と同じ概念です。
Swap があると、RAM が満杯になっても OOM Kill(プロセスの強制終了)を防げる「緩衝材」として機能します。ただしディスクアクセスは RAM より格段に遅いため、Swap に頻繁に頼る状態はサーバーの限界を示すサインです。根本的な対策(プラン変更・アプリ最適化)も並行して検討しましょう。
Swap ファイルと Swap パーティションの違い
Swap ファイル:既存のファイルシステムに swap 専用のファイルを作る方法。手順が簡単で後から追加できる(本記事で解説)
Swap パーティション:ディスクにパーティションを切って割り当てる方法。速度は若干有利だがサイズ変更は難しい

VPS では Swap ファイルによる設定が一般的です。

現在のSwap状況を確認する

1. free -hでメモリとSwapの使用量を確認する

free -h コマンドで、RAM と Swap の現在の使用状況を確認します。

$ free -h total used free shared buff/cache available Mem: 984Mi 612Mi 85Mi 3.0Mi 286Mi 241Mi Swap: 0B 0B 0B

「Swap: 0B」となっていれば、Swap が設定されていない状態です。メモリ使用量が多く空きが少ない場合、OOM Kill のリスクがあります。

2. swapon --showでSwap設定を確認する

swapon --show は現在有効な Swap デバイスを一覧表示します。何も出力されなければ Swap は無効です。

$ swapon --show # (何も表示されない場合は Swap なし)

Swapファイルを作成して追加する

3. Swapファイルを作成する(fallocate)

まず Swap 用のファイルを作成します。fallocate は指定サイズのファイルを素早く生成するコマンドです。

# 2GB の Swap ファイルを /swapfile に作成する $ sudo fallocate -l 2G /swapfile # 作成確認 $ ls -lh /swapfile -rw-r--r-- 1 root root 2.0G Jul 4 10:15 /swapfile

推奨サイズの目安
・RAM 1GB → Swap 1~2GB
・RAM 2GB → Swap 2GB
・RAM 4GB 以上 → Swap 4GB(用途に応じて調整)

fallocate が使えない環境(一部の古い VPS や XFS ファイルシステム)では dd コマンドで代替できます。

# fallocate が使えない場合の代替コマンド(少し時間がかかる) $ sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 2048+0 records in 2048+0 records out 2147483648 bytes (2.1 GB, 2.0 GiB) copied, 12.3 s, 174 MB/s

4. アクセス権限を設定する

Swap ファイルは root のみが読み書きできるように権限を設定します。これはセキュリティ上の必須設定です。

$ sudo chmod 600 /swapfile # 確認 $ ls -lh /swapfile -rw------- 1 root root 2.0G Jul 4 10:15 /swapfile

「-rw-------」となっていれば OK です。権限が緩い(例: -rw-r--r--)場合、mkswap の実行時に警告が出ます。

5. Swap形式にフォーマットする(mkswap)

ファイルを Swap として使えるようフォーマットします。

$ sudo mkswap /swapfile Setting up swapspace version 1, size = 2 GiB (2147479552 bytes) no label, UUID=a3f7b2c1-8e4d-4f0a-9c2b-1d5e7f3a6b8c

6. Swapを有効にする(swapon)

フォーマットした Swap ファイルを OS に登録して有効にします。

$ sudo swapon /swapfile # 有効化の確認 $ swapon --show NAME TYPE SIZE USED PRIO /swapfile file 2G 0B -2 # free -h で再確認 $ free -h total used free shared buff/cache available Mem: 984Mi 612Mi 80Mi 3.0Mi 291Mi 244Mi Swap: 2.0Gi 0B 2.0Gi

「Swap: 2.0Gi」が表示されれば成功です。この時点で Swap は即時有効になっています。

7. 永続化する(/etc/fstab)

このままでは OS を再起動すると Swap が無効に戻ります。/etc/fstab に登録して再起動後も自動的に有効になるようにします。

# /etc/fstab を開いて末尾に追記する $ sudo nano /etc/fstab # 以下の1行を追加して保存する /swapfile none swap sw 0 0

保存後、再起動して Swap が自動で有効になることを確認します。

# 再起動後に確認 $ swapon --show NAME TYPE SIZE USED PRIO /swapfile file 2G 0B -2

swappinessを調整する(応用)

swappiness は、OS が RAM の代わりに Swap をどれだけ積極的に使うかを制御するパラメータです。0~100 の値で設定し、数値が大きいほど Swap を優先的に使います。
デフォルト値はディストリビューションによって異なりますが、Ubuntu では 60 が標準です。

# 現在の swappiness を確認 $ cat /proc/sys/vm/swappiness 60 # 一時的に10に変更する(再起動で元に戻る) $ sudo sysctl vm.swappiness=10 vm.swappiness = 10 # 永続化する(再起動後も維持) $ echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

VPS では swappiness を 10 に下げると「RAM を使い切ってから Swap を使う」動作になり、パフォーマンスが向上することが多いです。

よくあるエラーと対処法

「swapon: /swapfile: insecure permissions 0644, 0600 suggested」が出た場合

権限が 0644 のままです。chmod 600 /swapfile を実行してから再度 swapon を試してください。

「fallocate: fallocate failed: Operation not supported」が出た場合

ファイルシステムが fallocate に対応していません。dd コマンドで代替してください(STEP 3 参照)。

再起動後にSwapが無効になっている場合

/etc/fstab の記述に誤りがある可能性があります。次のコマンドで確認してください。

$ cat /etc/fstab | grep swap /swapfile none swap sw 0 0

行が存在しない場合は追記が保存されていません。もう一度 sudo nano /etc/fstab で確認してください。

本記事のまとめ

VPS に Swap を追加する手順をまとめます。
やること コマンド
Swap ファイルを作成する(2GB) sudo fallocate -l 2G /swapfile
権限を設定する sudo chmod 600 /swapfile
Swap 形式にフォーマットする sudo mkswap /swapfile
Swap を有効にする sudo swapon /swapfile
Swap の状態を確認する swapon --show
メモリ使用量を確認する free -h
VPS の初期設定でタイムゾーンの次に確認しておきたいのが Swap の設定です。特に RAM が 1GB 以下の環境では、最初に設定しておくことで予期せぬ OOM Kill を防げます。

VPS 全体の初期設定については「VPSでLinuxサーバーを初期セットアップする入門」で詳しく解説しています。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンドを「なんとなく打つ」段階から卒業したい方は、ぜひ受け取ってみてください。
無料マニュアルを受け取る >>

関連記事 ~ 次のステップへ進む

Swap の設定ができたら、次はVPSの実践的な管理スキルを身につけましょう。

Linux入門シリーズ
WSL2でLinuxを始める手順|インストールから基本コマンドまで
クラウドやVPSでLinuxを始める方法|初心者でも迷わないサーバー環境構築ガイド
VPSでLinuxサーバーを初期セットアップする入門
Linuxとは何か?WindowsやMacとの違いを初心者向けに解説

実務で使うLinuxスキル 7テーマ
tmuxコマンドでターミナルを分割・管理する方法(シェルスクリプト)
ssh-keygenコマンドでSSH公開鍵認証を設定する方法(セキュリティ)
Apacheのタイムアウト設定を変更・確認する方法(サーバー構築)
straceコマンドでプロセスのシステムコールを追跡する方法(トラブルシューティング)
ncコマンドでネットワーク接続をテストする方法(ネットワーク)
rsyncコマンドでファイルを同期・転送する方法(ファイルシステム・ストレージ)
Linuxでポート番号の状態を確認するコマンド(現場コラム)

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。