Linuxで作成済みのスワップ領域を有効化したいときは、swaponコマンドを使用します。
前回解説したmkswapコマンドは、パーティションやファイルをスワップ領域として初期化するコマンドでした。
しかし、mkswapを実行しただけでは、まだLinuxのメモリ退避領域としては使われません。
実際にスワップとして使い始めるには、swaponで有効化する必要があります。
この記事では、Linux初心者でも実際に作業できるように、swaponコマンドの基本、スワップパーティションの有効化、スワップファイルの有効化、swapon --showやfree -hでの確認方法、mkswap・swapoffとの違い、/etc/fstabでの自動有効化、よくあるエラーまで実例付きで解説します。
- swaponコマンドとは
- スワップ領域とは
- swaponを使う場面
- mkswap・swapon・swapoffの違い
- 現在のスワップ状態を確認する方法
- swapon –showの出力項目の見方
- swaponコマンドの基本構文
- スワップパーティションを有効化する方法
- スワップファイルを有効化する方法
- スワップファイル作成から有効化までの流れ
- /etc/fstabに書かれたスワップをまとめて有効化する方法
- スワップを無効化する方法
- スワップの優先度を指定する方法
- スワップ状態を詳細に確認する方法
- /proc/swapsで確認する方法
- free -hでスワップ使用量を確認する方法
- vm.swappinessとは
- swaponコマンドの主なオプション
- swapon -sとは
- スワップを追加するときの基本手順
- swaponコマンドでよくある注意点
- swaponコマンドでよくあるエラー
- よくある質問
- まとめ
swaponコマンドとは
swaponは、Linuxでスワップ領域を有効化するためのコマンドです。
たとえば、/dev/sdb1というパーティションをスワップとして有効化する場合は、次のように実行します。
sudo swapon /dev/sdb1
スワップファイルを有効化する場合は、次のように実行します。
sudo swapon /swapfile
有効化されたスワップ領域は、物理メモリが不足したときに一時的な退避先として使われます。
ただし、スワップはメモリより低速なディスクを使うため、常に大量に使われる状態は望ましくありません。
スワップ領域とは
スワップ領域とは、Linuxで物理メモリが不足したときに、ディスクの一部を一時的なメモリのように使う仕組みです。
メモリが足りなくなったとき、すぐにプロセスが停止するのを防ぐために、使用頻度の低いデータをスワップ領域へ退避できます。
ただし、ディスクはメモリより遅いため、スワップを多く使いすぎるとシステム全体が重くなることがあります。
スワップは「メモリを増やす魔法」ではなく、「メモリ不足時の逃げ道」と考えると分かりやすいです。
swaponを使う場面
swaponは、主に次のような場面で使います。
- 作成済みのスワップパーティションを有効化したいとき
- 作成済みのスワップファイルを有効化したいとき
- 現在のスワップ状態を確認したいとき
/etc/fstabに書いたスワップ設定をまとめて有効化したいとき- VPSやLinuxサーバーでメモリ不足対策をしたいとき
特にメモリが少ないVPSでは、スワップファイルを作成してswaponで有効化する作業がよく行われます。
mkswap・swapon・swapoffの違い
スワップ関連では、mkswap、swapon、swapoffをセットで覚えると分かりやすいです。
| コマンド | 役割 | 例 |
|---|---|---|
mkswap |
スワップ領域として初期化する | sudo mkswap /swapfile |
swapon |
スワップ領域を有効化する | sudo swapon /swapfile |
swapoff |
スワップ領域を無効化する | sudo swapoff /swapfile |
mkswapだけではスワップは使われません。
swaponで有効化して、初めてスワップ領域として利用されます。
現在のスワップ状態を確認する方法
現在有効になっているスワップ領域を確認するには、swapon --showを使います。
swapon --show
実行結果の例です。
NAME TYPE SIZE USED PRIO
/swapfile file 2G 0B -2
何も表示されない場合は、現在有効なスワップ領域がない可能性があります。
メモリ全体とスワップ容量を確認したい場合は、free -hも使います。
free -h
実行結果の例です。
total used free shared buff/cache available
Mem: 1.9Gi 800Mi 300Mi 20Mi 800Mi 900Mi
Swap: 2.0Gi 0B 2.0Gi
Swapの行を見ると、スワップの合計容量、使用量、空き容量が分かります。
swapon –showの出力項目の見方
| 項目 | 意味 |
|---|---|
NAME |
スワップとして有効化されているデバイスまたはファイル |
TYPE |
スワップの種類 |
SIZE |
スワップ領域のサイズ |
USED |
現在使われているスワップ量 |
PRIO |
スワップの優先度 |
TYPEがpartitionならスワップパーティション、fileならスワップファイルです。
USEDが増えている場合、実際にスワップが使われています。
swaponコマンドの基本構文
swaponコマンドの基本構文は次のとおりです。
swapon [オプション] デバイスまたはファイル
スワップパーティションを有効化する場合です。
sudo swapon /dev/sdb1
スワップファイルを有効化する場合です。
sudo swapon /swapfile
/etc/fstabに書かれたスワップをまとめて有効化する場合は、-aを使います。
sudo swapon -a
スワップパーティションを有効化する方法
スワップパーティションを有効化する基本的な流れを見ていきます。
まず、対象パーティションを確認します。
lsblk -f
実行結果の例です。
NAME FSTYPE LABEL UUID MOUNTPOINTS
sdb
└─sdb1 swap 9999-aaaa-bbbb-cccc
FSTYPEにswapと表示されていれば、スワップ領域として初期化されています。
有効化します。
sudo swapon /dev/sdb1
確認します。
swapon --show
free -h
swapon --showに/dev/sdb1が表示されていれば、有効化されています。
スワップファイルを有効化する方法
スワップファイルを有効化する場合も、基本は同じです。
まずスワップファイルが存在するか確認します。
ls -lh /swapfile
権限も確認します。
ls -l /swapfile
実行結果の例です。
-rw------- 1 root root 2.0G Jul 20 10:00 /swapfile
スワップファイルは、基本的に600の権限にします。
sudo chmod 600 /swapfile
スワップとして初期化されていない場合は、mkswapを実行します。
sudo mkswap /swapfile
有効化します。
sudo swapon /swapfile
確認します。
swapon --show
実行結果の例です。
NAME TYPE SIZE USED PRIO
/swapfile file 2G 0B -2
スワップファイル作成から有効化までの流れ
2GBのスワップファイルを作成して有効化する流れをまとめると、次のようになります。
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
swapon --show
free -h
fallocateが使えない環境では、ddで作成する方法もあります。
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
スワップファイルの作成方法自体は前回のmkswap記事で詳しく扱いましたが、swaponはその最後の有効化で使うコマンドです。
/etc/fstabに書かれたスワップをまとめて有効化する方法
/etc/fstabにスワップ設定が書かれている場合、swapon -aでまとめて有効化できます。
sudo swapon -a
スワップファイルを/etc/fstabに登録する例です。
/swapfile none swap sw 0 0
スワップパーティションをUUIDで登録する例です。
UUID=9999-aaaa-bbbb-cccc none swap sw 0 0
設定後に確認します。
sudo swapon -a
swapon --show
free -h
swapon -aは、再起動せずに/etc/fstabのスワップ設定を反映したいときにも使えます。
スワップを無効化する方法
有効化したスワップを無効化するには、swapoffを使います。
sudo swapoff /swapfile
スワップパーティションの場合です。
sudo swapoff /dev/sdb1
無効化されたか確認します。
swapon --show
何も表示されなければ、有効なスワップ領域がない状態です。
ただし、使用中のスワップを無効化する場合は、スワップ上のデータをメモリへ戻す必要があります。
物理メモリに余裕がない状態でswapoffを実行すると、失敗したり、システムが重くなったりすることがあります。
スワップの優先度を指定する方法
複数のスワップ領域がある場合、-pオプションで優先度を指定できます。
sudo swapon -p 10 /dev/sdb1
優先度はswapon --showのPRIO列で確認できます。
swapon --show
実行結果の例です。
NAME TYPE SIZE USED PRIO
/dev/sdb1 partition 4G 0B 10
/swapfile file 2G 0B -2
優先度が高いスワップ領域ほど、優先的に使われます。
通常のVPSや単体サーバーでは、細かく優先度を指定しなくても問題ないことが多いです。
スワップ状態を詳細に確認する方法
swapon --showでは、表示する列を指定できます。
swapon --show=NAME,TYPE,SIZE,USED,PRIO
バイト単位など、より細かい情報が必要な場合はオプションを確認します。
swapon --help
通常は、次の2つを覚えておけば十分です。
swapon --show
free -h
/proc/swapsで確認する方法
有効なスワップ情報は、/proc/swapsでも確認できます。
cat /proc/swaps
実行結果の例です。
Filename Type Size Used Priority
/swapfile file 2097148 0 -2
swapon --showの方が見やすいですが、内部的な確認方法として/proc/swapsも覚えておくと便利です。
free -hでスワップ使用量を確認する方法
free -hでは、メモリとスワップの全体状況を確認できます。
free -h
実行結果の例です。
total used free shared buff/cache available
Mem: 1.9Gi 800Mi 300Mi 20Mi 800Mi 900Mi
Swap: 2.0Gi 128Mi 1.9Gi
Swapのusedが増えている場合、実際にスワップが使われています。
ただし、少し使われているからといって、すぐに問題とは限りません。
常にスワップ使用量が多く、システムが重い場合は、メモリ不足やアプリケーションの負荷を確認しましょう。
vm.swappinessとは
vm.swappinessは、Linuxがどの程度スワップを使いやすくするかに関係するカーネルパラメータです。
現在の値は次のコマンドで確認できます。
cat /proc/sys/vm/swappiness
一時的に変更する場合は、sysctlを使います。
sudo sysctl vm.swappiness=10
ただし、最適な値はサーバー用途、メモリ容量、アプリケーションの性質によって変わります。
初心者は、まずswaponでスワップを正しく有効化し、free -hやswapon --showで状態を確認できるようになることを優先しましょう。
swaponコマンドの主なオプション
| オプション | 説明 |
|---|---|
-a |
/etc/fstabに書かれたスワップをすべて有効化する |
--show |
現在有効なスワップを表示する |
-p 優先度 |
スワップの優先度を指定する |
-s |
スワップ使用状況を表示する古い形式のオプション |
--summary |
-sと同様に概要を表示する |
--help |
ヘルプを表示する |
--version |
バージョン情報を表示する |
初心者がまず覚えるべきなのは、swapon /swapfile、swapon --show、swapon -aです。
swapon -sとは
swapon -sでもスワップ状態を表示できます。
swapon -s
実行結果の例です。
Filename Type Size Used Priority
/swapfile file 2097148 0 -2
ただし、現在はswapon --showの方が見やすく使いやすいです。
swapon --show
スワップを追加するときの基本手順
スワップファイルを追加する基本手順をまとめます。
1. 現在の状態を確認する
swapon --show
free -h
2. スワップファイルを作成する
sudo fallocate -l 2G /swapfile
3. 権限を変更する
sudo chmod 600 /swapfile
4. スワップとして初期化する
sudo mkswap /swapfile
5. スワップを有効化する
sudo swapon /swapfile
6. 有効化されたか確認する
swapon --show
free -h
7. 必要ならfstabに登録する
sudo cp /etc/fstab /etc/fstab.bak
sudo vi /etc/fstab
追加する行です。
/swapfile none swap sw 0 0
設定後に確認します。
sudo swapon -a
swapon --show
swaponコマンドでよくある注意点
mkswapしてからswaponする
スワップとして初期化していないファイルやパーティションをswaponしても、有効化できません。
sudo mkswap /swapfile
sudo swapon /swapfile
read swap header failedのようなエラーが出た場合は、mkswapを実行しているか確認しましょう。
スワップファイルの権限に注意する
スワップファイルの権限が広すぎると、警告が出る場合があります。
sudo chmod 600 /swapfile
ls -l /swapfileで-rw-------になっているか確認しましょう。
fstab設定後はswapon -aで確認する
/etc/fstabにスワップ設定を追加した場合は、再起動前にswapon -aで確認します。
sudo swapon -a
swapon --show
エラーが出た場合は、/etc/fstabの記述を修正してください。
スワップを増やしても根本的なメモリ不足は解決しない
スワップはメモリ不足時の一時的な退避領域です。
常にスワップを大量に使う場合は、メモリ増設、プラン変更、アプリケーション設定の見直しなども検討しましょう。
swaponコマンドでよくあるエラー
insecure permissions
swapon: /swapfile: insecure permissions 0644, 0600 suggested.
スワップファイルの権限が広すぎます。
chmod 600で修正します。
sudo chmod 600 /swapfile
sudo swapon /swapfile
read swap header failed
swapon: /swapfile: read swap header failed
対象がスワップとして初期化されていない可能性があります。
mkswapを実行してから、再度swaponします。
sudo mkswap /swapfile
sudo swapon /swapfile
No such file or directory
swapon: cannot open /swapfile: No such file or directory
指定したファイルやデバイスが存在しません。
スワップファイルの場合は、先に作成します。
sudo fallocate -l 2G /swapfile
デバイスの場合は、lsblkで確認します。
lsblk
swapfile has holes
swapon: /swapfile: skipping - it appears to have holes.
スワップファイルの作成方法やファイルシステムの仕様により、スワップとして使えない状態になっている可能性があります。
fallocateで問題が出る場合は、ddで作成し直す方法を試します。
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
swapon failed: Device or resource busy
swapon: /dev/sdb1: swapon failed: Device or resource busy
対象がすでに使用中、または別の用途で使われている可能性があります。
現在の状態を確認します。
swapon --show
lsblk -f
findmnt
すでにスワップとして有効化されている場合は、重複して有効化する必要はありません。
swapon -aでエラーが出る
/etc/fstabのスワップ設定に誤りがある可能性があります。
スワップファイルの例です。
/swapfile none swap sw 0 0
パス、ファイル名、権限、mkswap済みかを確認してください。
ls -l /swapfile
sudo mkswap /swapfile
sudo swapon -a
よくある質問
swaponコマンドは何に使いますか?
作成済みのスワップパーティションやスワップファイルを有効化するために使います。
mkswapだけではスワップは使えませんか?
はい。mkswapはスワップ領域として初期化するだけです。実際に使うにはswaponで有効化する必要があります。
sudo mkswap /swapfile
sudo swapon /swapfile
現在のスワップを確認するには?
swapon --showまたはfree -hを使います。
swapon --show
free -h
スワップファイルを有効化するには?
次のように実行します。
sudo swapon /swapfile
事前にchmod 600とmkswapを済ませておきましょう。
fstabに書いたスワップを有効化するには?
swapon -aを使います。
sudo swapon -a
swaponとswapoffの違いは何ですか?
swaponはスワップを有効化するコマンドです。swapoffは有効化されているスワップを無効化するコマンドです。
スワップファイルの権限は何にすればよいですか?
基本的には600にします。
sudo chmod 600 /swapfile
swaponでread swap header failedが出たら?
対象がスワップとして初期化されていない可能性があります。mkswapを実行してからswaponしてください。
sudo mkswap /swapfile
sudo swapon /swapfile
UbuntuやCentOS Streamでも使えますか?
はい。Ubuntu、Debian、CentOS Stream、Rocky Linux、AlmaLinuxなど、多くのLinuxディストリビューションで利用できます。
まとめ
swaponコマンドは、Linuxでスワップ領域を有効化するためのコマンドです。
スワップパーティションを有効化する場合は、次のように実行します。
sudo swapon /dev/sdb1
スワップファイルを有効化する場合は、次のように実行します。
sudo swapon /swapfile
現在のスワップ状態は、次のコマンドで確認できます。
swapon --show
free -h
/etc/fstabに書かれたスワップ設定をまとめて有効化する場合は、-aを使います。
sudo swapon -a
mkswapはスワップ領域を作成するコマンド、swaponはスワップを有効化するコマンド、swapoffはスワップを無効化するコマンドです。
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapoff /swapfile
スワップはメモリ不足時の助けになりますが、常に大量に使う状態はパフォーマンス低下の原因になります。
VPSやLinuxサーバーでメモリ不足対策を行う場合は、swapon --showやfree -hで状態を確認しながら、安全に設定しましょう。




コメント