2 スワップ領域の実装

スワップ領域は、効率的なパフォーマンスを保証するためにオペレーティング・システムがシステムのリソースを管理する方法です。

Oracle Linuxでは、進行中のプロセスに対して十分な物理メモリーがない場合に、スワップ領域が使用されます。使用可能なメモリーが少ない場合、オペレーティング・システムでは非アクティブなページをディスク上のスワップ領域に書き込むため、物理メモリーが解放されます。

ただし、スワップ領域はメモリー不足に対する効果的な解決策ではありません。スワップ領域はディスク・ドライブに配置され、アクセス時間は物理メモリーより大幅に遅くなります。スワップ領域に書き込むと、システムのパフォーマンスが実質的に低下します。スワップが頻繁に使用される場合は、スワップ領域ではなく、物理メモリーをさらに追加してください。

スワップ領域は、スワップ・ファイルまたは個別のスワップ・パーティションのいずれかにあります。専用のスワップ・パーティションのほうが高速である一方、スワップ・ファイルのサイズ変更のほうが簡単です。システムに必要なスワップ領域の大きさがわかっている場合は、スワップ・パーティションを構成します。それ以外の場合は、スワップ・ファイルの使用を開始して、システムに必要な内容がわかったら後でスワップ・パーティションを作成します。

スワップ・ファイルの作成

  1. ddコマンドを使用して、必要なサイズのファイルを作成します(1KBブロックなど)。

    sudo dd if=/dev/zero of=/swapfile bs=1024 count=1000000
    1000000+0 records in
    1000000+0 records out
    1024000000 bytes (1.0 GB, 977 MiB) copied, 6.10298 s, 168 MB/s
  2. ファイルをスワップ・ファイルとして初期化します。

    sudo mkswap /swapfile
    mkswap: /swapfile: insecure permissions 0644, 0600 suggested.
    Setting up swapspace version 1, size = 976.6 MiB (1023995904 bytes)
    no label, UUID=43964855-e81f-414c-a61c-370408085ba4
  3. ファイルの権限を全ユーザーに対して読取り可能でないように変更します。

    sudo chmod 0600 /swapfile
  4. システムのリブート時にスワップ・ファイルが使用されるように、/etc/fstabファイルにエントリを追加します。次に例を示します。

    /swapfile       swap       swap       defaults       0 0
  5. マウント・ユニットを再生成し、新しい構成を/etc/fstabに登録します。

    sudo systemctl daemon-reload
  6. スワップ・ファイルをアクティブ化します。

    sudo swapon /swapfile
  7. (オプション)アクティブなスワップ領域を検査して、新しいスワップ・ファイルが正常に作成されたかどうかをテストします。

    cat /proc/swaps
    sudo free -h

スワップ・パーティションの作成

  1. fdiskまたはpartedのいずれかを使用して、スワップ・パーティションを作成します。

  2. パーティションをスワップ・パーティションとして初期化します。

    たとえば、パーティションが/dev/sda2の場合は、次のコマンドを使用します。

    sudo mkswap /dev/sda2
  3. スワップ・パーティションへのスワップを有効にします。

    sudo swapon /dev/sda2
  4. システムの次回再起動以降に使用されるように、スワップ・パーティションについて/etc/fstabにエントリを追加します。

    /dev/sda2       swap       swap       defaults       0 0

スワップ領域使用量の表示

システムのスワップ領域の使用量を表示するには、/proc/swapsの内容を調査します。

cat /proc/swaps
Filename                Type        Size      Used   Priority
/dev/sda2               partition   4128760   388    -1
/swapfile               file        999992    0      -2

この例では、/dev/sda2の4GBのスワップ・パーティションと、/swapfileの1GBのスワップ・ファイルの両方が使用されています。Priority列は、スワップ・ファイルではなく、スワップ・パーティションに書き込むオペレーティング・システムを示しています。

/proc/meminfoを表示することも、freetopvmstatなどのユーティリティを使用してスワップ領域使用率を表示することもできます。次に例を示します。

grep Swap /proc/meminfo
SwapCached:          248 kB
SwapTotal:       5128752 kB
SwapFree:        5128364 kB
sudo free | grep Swap
Swap:      5128752        388    5128364

スワップ・ファイルまたはスワップ・パーティションの削除

スワップ・ファイルまたはスワップ・パーティションを使用対象から削除するには:

  1. スワップ・ファイルまたはスワップ・パーティションに対するスワップを無効にします。たとえば:

    sudo swapoff /swapfile
  2. スワップ・ファイルまたはスワップ・パーティションのエントリを/etc/fstabから削除します。

  3. 必要に応じて、必要なくなったスワップ・ファイルまたはスワップ・パーティションを削除します。