swaponコマンドとは?Linuxでスワップ領域を有効化・確認する方法

Linux

Linuxで作成済みのスワップ領域を有効化したいときは、swaponコマンドを使用します。

前回解説したmkswapコマンドは、パーティションやファイルをスワップ領域として初期化するコマンドでした。

しかし、mkswapを実行しただけでは、まだLinuxのメモリ退避領域としては使われません。

実際にスワップとして使い始めるには、swaponで有効化する必要があります。

この記事では、Linux初心者でも実際に作業できるように、swaponコマンドの基本、スワップパーティションの有効化、スワップファイルの有効化、swapon --showfree -hでの確認方法、mkswapswapoffとの違い、/etc/fstabでの自動有効化、よくあるエラーまで実例付きで解説します。

  1. swaponコマンドとは
  2. スワップ領域とは
  3. swaponを使う場面
  4. mkswap・swapon・swapoffの違い
  5. 現在のスワップ状態を確認する方法
  6. swapon –showの出力項目の見方
  7. swaponコマンドの基本構文
  8. スワップパーティションを有効化する方法
  9. スワップファイルを有効化する方法
  10. スワップファイル作成から有効化までの流れ
  11. /etc/fstabに書かれたスワップをまとめて有効化する方法
  12. スワップを無効化する方法
  13. スワップの優先度を指定する方法
  14. スワップ状態を詳細に確認する方法
  15. /proc/swapsで確認する方法
  16. free -hでスワップ使用量を確認する方法
  17. vm.swappinessとは
  18. swaponコマンドの主なオプション
  19. swapon -sとは
  20. スワップを追加するときの基本手順
    1. 1. 現在の状態を確認する
    2. 2. スワップファイルを作成する
    3. 3. 権限を変更する
    4. 4. スワップとして初期化する
    5. 5. スワップを有効化する
    6. 6. 有効化されたか確認する
    7. 7. 必要ならfstabに登録する
  21. swaponコマンドでよくある注意点
    1. mkswapしてからswaponする
    2. スワップファイルの権限に注意する
    3. fstab設定後はswapon -aで確認する
    4. スワップを増やしても根本的なメモリ不足は解決しない
  22. swaponコマンドでよくあるエラー
    1. insecure permissions
    2. read swap header failed
    3. No such file or directory
    4. swapfile has holes
    5. swapon failed: Device or resource busy
    6. swapon -aでエラーが出る
  23. よくある質問
    1. swaponコマンドは何に使いますか?
    2. mkswapだけではスワップは使えませんか?
    3. 現在のスワップを確認するには?
    4. スワップファイルを有効化するには?
    5. fstabに書いたスワップを有効化するには?
    6. swaponとswapoffの違いは何ですか?
    7. スワップファイルの権限は何にすればよいですか?
    8. swaponでread swap header failedが出たら?
    9. UbuntuやCentOS Streamでも使えますか?
  24. まとめ

swaponコマンドとは

swaponは、Linuxでスワップ領域を有効化するためのコマンドです。

たとえば、/dev/sdb1というパーティションをスワップとして有効化する場合は、次のように実行します。

sudo swapon /dev/sdb1

スワップファイルを有効化する場合は、次のように実行します。

sudo swapon /swapfile

有効化されたスワップ領域は、物理メモリが不足したときに一時的な退避先として使われます。

ただし、スワップはメモリより低速なディスクを使うため、常に大量に使われる状態は望ましくありません。

スワップ領域とは

スワップ領域とは、Linuxで物理メモリが不足したときに、ディスクの一部を一時的なメモリのように使う仕組みです。

メモリが足りなくなったとき、すぐにプロセスが停止するのを防ぐために、使用頻度の低いデータをスワップ領域へ退避できます。

ただし、ディスクはメモリより遅いため、スワップを多く使いすぎるとシステム全体が重くなることがあります。

スワップは「メモリを増やす魔法」ではなく、「メモリ不足時の逃げ道」と考えると分かりやすいです。

swaponを使う場面

swaponは、主に次のような場面で使います。

  • 作成済みのスワップパーティションを有効化したいとき
  • 作成済みのスワップファイルを有効化したいとき
  • 現在のスワップ状態を確認したいとき
  • /etc/fstabに書いたスワップ設定をまとめて有効化したいとき
  • VPSやLinuxサーバーでメモリ不足対策をしたいとき

特にメモリが少ないVPSでは、スワップファイルを作成してswaponで有効化する作業がよく行われます。

mkswap・swapon・swapoffの違い

スワップ関連では、mkswapswaponswapoffをセットで覚えると分かりやすいです。

コマンド 役割
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 スワップの優先度

TYPEpartitionならスワップパーティション、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

FSTYPEswapと表示されていれば、スワップ領域として初期化されています。

有効化します。

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 --showPRIO列で確認できます。

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

Swapusedが増えている場合、実際にスワップが使われています。

ただし、少し使われているからといって、すぐに問題とは限りません。

常にスワップ使用量が多く、システムが重い場合は、メモリ不足やアプリケーションの負荷を確認しましょう。

vm.swappinessとは

vm.swappinessは、Linuxがどの程度スワップを使いやすくするかに関係するカーネルパラメータです。

現在の値は次のコマンドで確認できます。

cat /proc/sys/vm/swappiness

一時的に変更する場合は、sysctlを使います。

sudo sysctl vm.swappiness=10

ただし、最適な値はサーバー用途、メモリ容量、アプリケーションの性質によって変わります。

初心者は、まずswaponでスワップを正しく有効化し、free -hswapon --showで状態を確認できるようになることを優先しましょう。

swaponコマンドの主なオプション

オプション 説明
-a /etc/fstabに書かれたスワップをすべて有効化する
--show 現在有効なスワップを表示する
-p 優先度 スワップの優先度を指定する
-s スワップ使用状況を表示する古い形式のオプション
--summary -sと同様に概要を表示する
--help ヘルプを表示する
--version バージョン情報を表示する

初心者がまず覚えるべきなのは、swapon /swapfileswapon --showswapon -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 600mkswapを済ませておきましょう。

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 --showfree -hで状態を確認しながら、安全に設定しましょう。

コメント

タイトルとURLをコピーしました