2026年5月29日
2026年5月29日
スワップ領域の作成と有効化の手順
はじめに
スワップ領域は物理メモリ (RAM) が不足したときに、一時的にディスクをメモリの代わりとして使う仕組みです。VPSやクラウドインスタンスではスワップが最初から無効なケースも多く、突発的なメモリ不足で OOM Killer が走るのを避けるために自分で用意することがよくあります。
本記事ではスワップファイルの作成、mkswap と swapon による有効化、/etc/fstab への登録、swappiness のチューニングまでを解説します。
症状・背景
スワップ領域 が必要になる主な場面:
- 1〜2GB程度の小規模VPSでメモリ不足が起きるとき
- OOM Killer の発生を抑えたいとき
- バッチ処理で一時的に大量メモリが必要なとき
- ハイバネーション (休止状態) を使いたいとき
手順・設定方法
ステップ1: 現在のスワップ確認
# 現在のスワップ状態
swapon --show
free -h
# /proc 経由でも確認可能
cat /proc/swaps
ステップ2: スワップファイルを作成
# 2GBのスワップファイルを作成 (fallocateが速い)
sudo fallocate -l 2G /swapfile
# fallocateが使えない場合はddで
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
# 所有者・権限を厳格に
sudo chmod 600 /swapfile
# スワップフォーマット
sudo mkswap /swapfile
ステップ3: スワップを有効化
# 有効化
sudo swapon /swapfile
# 確認
swapon --show
free -h
# 永続化 — /etc/fstab に追記
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
ステップ4: チューニングと無効化
# swappiness 確認 (0〜100, 大きいほどスワップしやすい)
cat /proc/sys/vm/swappiness
# サーバー用途では10〜20が推奨
sudo sysctl vm.swappiness=10
# 永続化
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.d/99-swap.conf
# スワップを無効化
sudo swapoff /swapfile
# 削除する場合
sudo rm /swapfile # fstabからも削除を忘れずに
注意事項
- スワップを多用するとI/O負荷が上がり全体が遅くなります。あくまでメモリ不足時の保険として
- SSDの場合、頻繁なスワップは寿命を縮める要因になり得るので
swappinessを下げるのが定石 - スワップファイルは権限600必須。誰でも読める状態だとメモリ内容が漏洩する恐れがあります
- VPSによってはスワップ作成が制限されているプランもあるので事前に確認してください
まとめ
1. 確認: swapon --show と free -h で現状把握
2. 作成: fallocate → chmod 600 → mkswap の3手順
3. 有効化: swapon で即時、/etc/fstab で永続化
4. 調整: vm.swappiness=10 でスワップ優先度を抑制
5. 無効化: swapoff の後にファイル削除とfstab整理
関連記事: