このような症状の多くは、VPSのメモリが不足して OS がプロセスを強制終了(OOM Kill)した結果です。1GB 以下の格安 VPS では、WebサーバーとDBを同時に動かしただけでメモリが枯渇することがあります。
この記事では、Linux に Swap(スワップ)領域を追加する方法を解説します。
fallocate・mkswap・swapon を順に実行し、/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)
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
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
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
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
7. 永続化する(/etc/fstab)
このままでは OS を再起動すると Swap が無効に戻ります。/etc/fstab に登録して再起動後も自動的に有効になるようにします。
# /etc/fstab を開いて末尾に追記する $ sudo nano /etc/fstab # 以下の1行を追加して保存する /swapfile none swap sw 0 0
# 再起動後に確認 $ 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
よくあるエラーと対処法
「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 全体の初期設定については「VPSで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でポート番号の状態を確認するコマンド(現場コラム)
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 前のページへ:WSL2のトラブルシューティング入門|インストール・起動エラーを自分で解決する方法
- この記事の属するカテゴリ:【Linux入門】初心者のための基礎知識・講座へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます