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=XX032767 の数値))
  • 5列目 … ファイルシステムを dump する必要があるか否かの指定(0 は dump の必要なし)
  • 6列目 … システム起動時に fsck チェックを行うか否かの指定(0 は fsck チェックを行わない)

これで取り急ぎのスワップ領域拡大ができますが、この間に物理メモリ増設について検討しましょう。

以上。





 

Sponsored Link

 

Comments