Linuxコマンド辞典 mkswapコマンド(デバイス)

スワップ領域をデバイスに作成する「mkswap」コマンドの概要と使い方を記載しています。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

概要・使用方法

書式

$ mkswap [オプション] デバイス [サイズ]

デバイスもしくはファイルにスワップ領域を作成します。スワップはメモリ内容の一時的な退避場所としてシステムが使用する領域です。作成したスワップ領域をシステムとして利用するには、swaponを実行する必要があります。/etc/fstabに記述を追加することによりシステム起動時に自動でマウントされます。一般的にスワップ領域はデバイス上に作成されます。デバイスは/dev/sda7などを指定します。最近のディストリビューションでは、インストール時のHDDパーティション作成時に一緒に作成するため、このコマンドを利用するケースとして、特別にスワップ領域を追加する際に利用します。

スワップ領域を作成後、swaponコマンドでスワップ領域を有効化する必要があります。

恒常的に物理メモリが不足すると、スワップ領域(デバイス)への書き出しや読み込みが頻発してしまい(スラッシング)、システムのパフォーマンスが大幅に低下します。利用されているスワップ領域のサイズはfreeコマンドで確認できます。スワップはHDDやSSDといったメモリと比較して遅いデバイスへのリードライトを行うため、パフォーマンス低下が発生します。ただし、スワップ領域を設けなかった場合で、メモリが枯渇した場合はシステムがハング状態となるため、必ず設ける必要があります。基本的には物理メモリの拡張とスワップ領域定義が必要となります。

オプション

-c
–check
スワップ作成前にデバイスの不良領域ブロックをチェックし、不良ブロックのカウント数を表示する
-f
–force
強制的にスワップ領域を作成する(使用は推奨されない)
-L ラベル
–label ラベル
デバイスラベルを指定する
-p サイズ
–pagesize サイズ
利用ページサイズを指定する
-U UUID
–uuid UUID
UUIDを指定する

スワップ領域を作成する

$ mkswap デバイスファイル名

実行結果

[rin@localhost ~]$ sudo mkswap /dev/sdb
mkswap: /dev/sdb: 警告: 古い ext4 署名を消去しています。
スワップ空間バージョン 1 を設定します。サイズ = 1024 MiB (1073737728 バイト)
ラベルはありません, UUID=43f3bee3-f8e0-455f-93b9-6ea71cea4ace
[rin@localhost ~]$ 

パーティションラベルを指定してスワップ領域を作成する

$ mkswap -L ラベル名 デバイスファイル名

実行結果

[rin@localhost ~]$ sudo mkswap -L swap1 /dev/sdb
mkswap: /dev/sdb: 警告: 古い swap 署名を消去しています。
スワップ空間バージョン 1 を設定します。サイズ = 1024 MiB (1073737728 バイト)
LABEL=swap1, UUID=e851e5b7-bcc9-4942-a4b8-8da33678b169
[rin@localhost ~]$ 

ファイルをスワップ領域とする

500Mバイトの/tmp/swapfileファイルを作成しスワップ領域に設定します。これは、VPSサーバーなどでスワップ領域のパーティションが準備されていない時に有効的な手段です。通常、パーティション単位で設定できる場合は、あえてスワップファイルをスワップ領域にする必要はありません。また、パフォーマンス向上のためスワップ領域は、別デバイスもしくはSSDやRAIDシステムなどの高速デバイス上が望ましいです。

$ mkswap スワップファイル

実行結果

[root@localhost tmp]# dd if=/dev/zero of=/tmp/swapfile bs=1M count=500 #←スワップファイルを作成
500+0 レコード入力
500+0 レコード出力
524288000 bytes (524 MB, 500 MiB) copied, 0.100966 s, 5.2 GB/s
[root@localhost tmp]# mkswap /tmp/swapfile
mkswap: /tmp/swapfile: パーミッション 0644 は安全な値ではありません。 0600 をお勧めします。
スワップ空間バージョン 1 を設定します。サイズ = 500 MiB (524283904 バイト)
ラベルはありません, UUID=bd667260-721c-4454-b795-dfa691f9859e
[root@localhost tmp]# chmod 600 ./swapfile