Linux システムでメモリ不足対策として設定される swap が、なぜか有効化されない・認識されないときのトラブルはよく発生します。
本記事では、swap が有効にならない原因を具体的に確認し、正しく動作させるための手順をわかりやすく解説します。
目次
想定されるエラーメッセージ
swapon: /swapfile: swapon failed: Invalid argument
または
free -h
を実行しても swap 項目が「0B」と表示される。
原因一覧
原因 | 内容 |
---|---|
① swap ファイルの権限が不正 | 権限が 0600 以外だとセキュリティ上拒否される。 |
② swap ファイルがフォーマットされていない | mkswap 実行が抜けている。 |
③ /etc/fstab に設定がない | 再起動後に有効化されない。 |
④ ファイルシステムが Btrfs | 通常の swap ファイルが利用できない。 |
⑤ SELinux によりアクセス拒否 | コンテキストが誤っている。 |
⑥ ファイル破損/容量不足 | 生成時にエラーが起きている。 |
① swap ファイルの権限が不正
🔍 確認方法
ls -l /swapfile
✅ 正常例
-rw------- 1 root root 2.0G /swapfile
❌ 異常例
-rw-r--r-- 1 root root 2.0G /swapfile
💡 解決方法
sudo chmod 600 /swapfile
sudo swapon /swapfile
② swap ファイルがフォーマットされていない
🔍 確認方法
sudo file /swapfile
✅ 正常例
/swapfile: Linux swap file, version 1
❌ 異常例
/swapfile: data
💡 解決方法
sudo mkswap /swapfile
sudo swapon /swapfile
③ /etc/fstab に設定がない
🔍 確認方法
grep swap /etc/fstab
✅ 正常例
/swapfile none swap sw 0 0
❌ 異常例
(何も出力されない)
💡 解決方法
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
sudo swapon -a
④ Btrfs で swap ファイルが使えない
🔍 確認方法
df -T / | awk '{print $2}' | tail -n 1
✅ 正常例(ext4 など)
ext4
❌ 異常例(Btrfs)
btrfs
💡 解決方法
Btrfs では通常の swap ファイルがサポートされません。
代わりに swap パーティションを使用します。
sudo fdisk /dev/sdb
# 新規パーティションを作成
sudo mkswap /dev/sdb1
sudo swapon /dev/sdb1
⑤ SELinux により拒否されている
🔍 確認方法
sudo ausearch -m avc -ts recent | grep swapfile
✅ 正常例
(出力なし)
❌ 異常例
avc: denied { read } for pid=1234 comm="swapon" name="swapfile"
💡 解決方法
sudo restorecon -v /swapfile
sudo swapon /swapfile
⑥ ファイル破損/容量不足
🔍 確認方法
sudo swapon /swapfile
でエラーが出る、または
df -h /
で空き容量が少ない。
💡 解決方法
新規に swap ファイルを作り直します。
sudo swapoff -a
sudo rm -f /swapfile
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
状態確認コマンドまとめ
sudo swapon --show # swap 状態を確認
free -h # メモリ・swap の使用量
cat /proc/swaps # 現在の swap デバイス
🔁 原因と対応の対応表
原因 | 対応策 |
---|---|
権限が不正 | chmod 600 /swapfile で修正 |
mkswap 未実行 | sudo mkswap /swapfile で初期化 |
fstab 未設定 | /etc/fstab に追記 |
Btrfs 使用 | swap パーティションへ変更 |
SELinux 拒否 | restorecon -v /swapfile を実行 |
ファイル破損/容量不足 | 新規 swap ファイル作成 |
まとめ
swap が有効化できない場合は、権限・mkswap・fstab の3点を最初に確認しましょう。
それでも解決しない場合は、ファイルシステム(Btrfs)やSELinux の影響を疑います。
あわせて読みたい


SELinux によってファイル操作が拒否されるときの対処方法
概要 Linux サーバーでファイルの作成・移動・読み書きを行おうとした際、次のようなエラーが出ることがあります。 Permission denied mv: cannot move ‘file’ to ‘/var…