Linux - スワップ領域の作成!
Updated:
スワップ領域の容量が不足した際に追加で作成する方法についてです。
本来なら物理メモリを増設すべきでしょうが、それまでの緊急的な措置としてスワップファイルを作成してそれをスワップ領域に割り当てるのです。
0. 前提条件
- CentOS 6.6(32bit) での作業を想定。(他のディストリビューションでも同じ)
- root での作業を想定。
1. スワップファイルの作成
以下は、ブロックサイズ 1MiB で 2GB(1024 x 1024 x 2ブロック) のスワップ領域用のファイルを作成する例。
# dd if=/dev/zero of=/var/tmp/swap bs=1024 count=2097152
2097152+0 records in
2097152+0 records out
2147483648 bytes (2.1 GB) copied, 74.8475 s, 28.7 MB/s
2. 権限付与
root のみが読み書きできるように権限を付与する。
(root でなく、一般ユーザで作業している場合は、所有者・グループを root にする)
# chmod 600 /var/tmp/swap
3. スワップ領域の作成
先ほど作成したスワップファイルをスワップ領域に割り当てる。
# mkswap /var/tmp/swap
mkswap: /var/tmp/swap: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
スワップ空間バージョン1を設定します、サイズ = 2097148 KiB
ラベルはありません, UUID=1a802279-4f23-4466-8579-fa38a2cc4d5a
- スワップ領域を作成する前にデバイスの不良ブロックのチェックを行いたい場合は、
-c
オプションを使用する。
(不良ブロックを検出した場合は、その件数が出力される) - スワップファイルにラベルを指定する(ラベル指定でスワップ領域の有効化したい)場合は、
-L
オプションで指定する。
4. スワップ領域の有効化
先ほど作成したスワップ領域を有効化する。
# swapon /var/tmp/swap
- 当然ながら、スワップファイルではなくパーティションを指定することも可能。
- スワップファイル名でなくラベルで指定することも可能。
- 優先度を指定したければ、
-p priority
で指定する。priority
は 0 〜 32767 の数値で、大きいほど優先度が高い。 - 同じ優先度のスワップ領域が複数ある場合、ページがラウンド・ロビン方式で配分される。
5. スワップ領域の確認
スワップ領域の一覧を確認するには以下のようにする。(以下は一例)
# swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 2097148 766580 -1
/var/tmp/swap file 2097148 0 -2
- 優先度を指定しない場合、自動で既存スワップ領域で最低の優先度に続く優先度になるのではなかろうか。
6. スワップ領域の削除
スワップが不要になった場合は以下のようにして削除する。
# swapoff /var/tmp/swap
- 当然ながら、スワップファイルではなくパーティションを指定することも可能。
- スワップファイル名でなくラベルで指定することも可能。
7. スワップファイルの削除
完全にスワップ領域が不要なら、スワップファイルも削除する。(単純なファイル削除)
# rm -f /var/tmp/swap
8. 自動マウント
マシン起動時に自動でスワップ領域を有効化したい場合は、 /etc/fstab
に以下のように追記する。
File: /etc/fstab
1
/var/tmp/swap swap swap sw 0 0
- 1列目 … デバイス名・スワップファイル名
- 2列目 … マウントポイント(スワップ領域にはマウントポイントがないので
none
でもよい) - 3列目 … ファイルシステム
- 4列目 … マウント時のオプション(
defaults
でもよい。優先度を指定するならsw,pri=X
(X
は0
〜32767
の数値)) - 5列目 … ファイルシステムを dump する必要があるか否かの指定(
0
は dump の必要なし) - 6列目 … システム起動時に fsck チェックを行うか否かの指定(
0
は fsck チェックを行わない)
これで取り急ぎのスワップ領域拡大ができますが、この間に物理メモリ増設について検討しましょう。
以上。
Comments