swap 有効化できない/swap ファイルが認識されないときの原因と対処

  • URLをコピーしました!

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 の影響を疑います。

目次