linux スワップ(swap)領域の作成
linuxでスワップ(swap)領域を作成するには、mkswapコマンドを使います。作成したスワップ(swap)領域を実際に使用するには、swaponコマンドを使います。また、スワップ(swap)領域の使用を停止するには、swapoffコマンドを使います。
ここでは、スワップ(swap)領域を作成し、利用するまでの手順を説明します。
Last Update : 2013年09月08日
linux スワップ(swap)領域の作成 項目
- スワップ(swap)領域を作成する - mkswap
- スワップ(swap)領域を有効化する - swapon
- スワップ(swap)領域を無効化する - swapoff
- スワップ(swap)領域の自動マウント
1. スワップ(swap)領域を作成する - mkswap
スワップ(swap)領域を作成するには、mkswapコマンドを使います。指定したパーティション全てをスワップ(swap)領域にすることもできるし、ファイルをスワップ(swap)領域とすることもできます。
mkswap書式
mkswap [オプション] device/swapfile
※ device/swapfile = ディスクパーティションか、スワップ用のファイル名
有用なオプション
オプション | 意味 |
-c | スワップ領域を作る前に、デバイスに対して不良ブロックのチェックを行う。不良ブロックが見つかった際は、そのカウント数を表示する。 |
-L label | ラベルを指定し、そのラベルで swapon できるようにする。 |
deviceには、ディスクパーティションか、ファイルを指定します。
使用例
# mkswap /dev/sdb1 ← デバイスを指定した場合
# mkswap /swapfile ← ファイルを指定した場合
deviceにディスクパーティションを指定する場合は、fdiskコマンドで、パーティションのタイプ(領域のシステムID)を82(Linux スワップ)にしておきます。
deviceにファイルを指定する場合は、以下のように、ddコマンドを使って先にスワップ用のファイルを作成しておきます。
memo
fdiskコマンドで、パーティションのタイプ(領域のシステムID)を82(Linux スワップ)にする。
# fdisk /dev/sdb コマンド (m でヘルプ): p ←現在の状態を確認 ディスク /dev/sdb: 5368 MB, 5368709120 バイト ヘッド 255, セクタ 63, シリンダ 652 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x00000000 デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 1 652 5237158+ 83 Linux ↑/dev/sdb1の領域のシステムIDは83 コマンド (m でヘルプ): t ←領域のシステムIDを変更する場合は「t」を入力 選択した領域 1 16進数コード (L コマンドでコードリスト表示): 82 ←Linuxスワップ領域用の82を入力 領域のシステムタイプを 1 から 82 (Linux スワップ / Solaris) に変更しました コマンド (m でヘルプ): p ←再度状態を確認する ディスク /dev/sdb: 5368 MB, 5368709120 バイト ヘッド 255, セクタ 63, シリンダ 652 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x00000000 デバイス ブート 始点 終点 ブロック Id システム /dev/sdb1 1 652 5237158+ 82 Linux スワップ / Solaris ↑領域のシステムIDが82のLinuxスワップに変更されている。 「w」で変更内容を保存すること。
memo
ddコマンドでスワップ用ファイルを作成する
# dd if=/dev/zero of=/swapfile bs=1M count=50
※ 中身が0で埋め尽くされた50Mbyteのswapfileという名前のファイルができます
# mkswap /swapfile
mkswap: /swapfile: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
スワップ空間バージョン1を設定します、サイズ = 51196 KiB
ラベルはありません, UUID=10038d16-aea9-4b86-a895-a3fff55d2a25
ddコマンドの使い方
# dd if=/dev/zero of=作成するファイル名 bs=ブロックサイズ(byte) count=ブロック数
dd コマンドは、ifで指定したファイルを、ofで指定したファイルへ、bsに指定された入出力ブロックサイズ単位で、countに指定された回数コピーを実行するコマンドです。
ブロックサイズ×ブロック数のサイズのファイルが作成されます。
if に、/dev/zero ファイルを指定しているので、ofで指定したファイルの中身はすべて0で埋め尽くされたファイルとなります。
memo
Linux は 32 個のスワップ領域を持つことができます。
2. スワップ(swap)領域を有効化する - swapon
mkswapコマンドで作成したswap領域を有効化するには、swaponコマンドを使用します。
swapon書式
swapon [オプション] device/swapfile
有用なオプション
オプション | 意味 |
-a | /etc/fstab の3番目のフィールドが、「swap」となっているデバイスをすべて有効にする。※noautoオプションがついているものは除く。 |
-s | スワップの使用状況を表示する |
device/swapfile には、mkswap コマンドで作成したswap領域を指定します。
使用例
# swapon /dev/sdb1 ← sdb1パーディションのスワップ領域を有効化 # swapon /swapfile ← /swapfile というファイルのスワップ領域を有効化 # swapon -s ←swap状態を確認 Filename Type Size Used Priority /dev/dm-1 partition 2064376 0 -1 /dev/sdb1 partition 5237148 0 -2 ← swap 領域として認識されている。 /swapfile file 51192 0 -3 ← swap 領域として認識されている。
memo
proc/swaps ファイルからもswap領域を確認する事ができます。
# cat /proc/swaps Filename Type Size Used Priority /dev/dm-1 partition 2064376 0 -1 /dev/sdb1 partition 5237148 0 -2 /swapfile file 51192 0 -3
3. スワップ(swap)領域を無効化する - swapoff
スワップ領域を無効化するには、swapoff コマンドを使用します。
swapoff書式
swapoff [オプション] device/swapfile
有用なオプション
オプション | 意味 |
-a | /proc/swaps, /etc/fstab の中のすべてのスワップデバイス、ファイルのスワッピングを無効にする。 |
使用例
# swapon -s ←swap状態を確認 Filename Type Size Used Priority /dev/dm-1 partition 2064376 0 -1 /dev/sdb1 partition 5237148 0 -2 /swapfile file 51192 0 -3 # swapoff /dev/sdb1 ← /dev/sdb1 をswapoff # swapoff /swapfile ← /swapfile をswapoff # swapon -s ←swap状態を確認 Filename Type Size Used Priority /dev/dm-1 partition 2064376 0 -1 ※スワップファイルが無効化され、表示されなくなった
4. スワップ(swap)領域の自動マウント
作成したスワップ(swap)領域が、OSの再起動時も自動的にマウントされるようにするには、/etc/fstabへ以下のように記述します。
# vi /etc/fstab 以下を追記 /dev/sdb1 swap swap defaults 0 0 ←/dev/sdb1をswap領域としてマウントさせる /swapfile swap swap defaults 0 0 ←/swapfileをswap領域としてマウントさせる
fstabファイルの各フィールドについて
フィールド | 記述内容 |
第1フィールド | マウントしたいデバイスファイルを書く。 ここでは、スワップ領域用のデバイス名、もしくはファイル名を記述します。 |
第2フィールド | ファイルシステムのマウントポイントを記述する。スワップ領域(swap)を指定する場合は、「swap」と記述します。 |
第3フィールド | ファイルシステムのタイプを記述する。 スワップ領域(swap)を指定する場合は、「swap」と記述します。 |
第4フィールド | ファイルシステム毎のマウントオプションを記述する。 |
第5フィールド | ファイルシステムを dump コマンドがダンプする必要があるかを記述する。1が必要。0が不要。記述がないのも不要とみなす。 |
第6フィールド | fsckが、ブート時にファイルシステムのチェックを実行する順序を決定するために参照される。 ルートファイルシステムは、1と記述する必要がある。それ以外のパーティションは、2と記述する。 0の場合は、fsckによるチェックが不要とみなす。 |