第11章 スワップの使用

このセクションでは、スワップ領域とその使用方法を説明します。

11.1. スワップ領域

Linux の スワップ領域 は、物理メモリー (RAM) が不足すると使用されます。システムに多くのメモリーリソースが必要で、RAM が不足すると、メモリーの非アクティブなページがスワップ領域に移動します。スワップ領域は、RAM が少ないマシンで役に立ちますが、RAM の代わりに使用しないようにしてください。スワップ領域はハードドライブにあり、そのアクセス速度は物理メモリーに比べると遅くなります。スワップ領域の構成は、専用のスワップパーティション (推奨)、スワップファイル、またはスワップパーティションとスワップファイルの組み合せが考えられます。

過去数年、推奨されるスワップ領域のサイズは、システムの RAM サイズに比例して増加していました。しかし、最近のシステムには通常、数百ギガバイトの RAM が含まれます。結果として、推奨されるスワップ領域は、システムのメモリーではなく、システムメモリーのワークロードの機能とみなされます。

「システムの推奨スワップ領域」 では、システムの RAM の容量別に推奨されるスワップパーティションのサイズと、システムをハイバネートするのに十分なメモリーが必要かどうかを示しています。推奨されるスワップパーティションのサイズは、インストール時に自動的に確定されます。ハイバネートを可能にするには、カスタムのパーティション分割段階でスワップ領域を編集する必要があります。

「システムの推奨スワップ領域」 の推奨では、メモリーが少ないシステム (1 GB 以下) で特に重要になります。このようなシステムで十分なスワップ領域を割り当てられないと、不安定になる問題が生じたり、インストールしたシステムが起動できなくなる可能性があります。

11.3. スワップ領域の追加

本セクションでは、インストール後にさらにスワップ領域を追加する方法を説明します。たとえば、システムの RAM 容量を 1 GB から 2 GB にアップグレードするときに、スワップ容量が 2 GB しかないとします。メモリーを大幅に消費する操作を実行している場合や、大量のメモリーを必要とするアプリケーションを実行する場合は、スワップ領域を 4 GB に増やすことが有益となる可能性があります。

この場合は、スワップパーティションを新規作成する、スワップファイル新規作成する、または既存の LVM2 論理ボリュームでスワップを拡張をする 3 つの方法が選択肢として考えられます。この中では、既存論理ボリュームを拡張することが推奨されます。

11.3.1. LVM2 論理ボリュームでのスワップ領域の拡張

この手順では、既存の LVM2 論理ボリュームでスワップ領域を拡張する方法を説明します。ここでは、/dev/VolGroup00/LogVol01 のボリュームを 2 GB 増やします。

前提条件

  • 十分なディスク領域

手順

  1. 関連付けられている論理ボリュームのスワップ機能を無効にします。

    # swapoff -v /dev/VolGroup00/LogVol01
  2. LVM2 論理ボリュームのサイズを 2 GB 増やします。

    # lvresize /dev/VolGroup00/LogVol01 -L +2G
  3. 新しいスワップ領域をフォーマットします。

    # mkswap /dev/VolGroup00/LogVol01
  4. 拡張論理ボリュームを有効にします。

    # swapon -v /dev/VolGroup00/LogVol01
  5. スワップの論理ボリュームの拡張に成功したかどうかをテストするには、アクティブなスワップ容量を調べます。

    $ cat /proc/swaps
    $ free -h

11.3.2. スワップの LVM2 論理ボリュームの作成

この手順では、スワップ用に LVM2 論理ボリュームを作成する方法を説明します。ここでは、スワップボリューム /dev/VolGroup00/LogVol02 を追加します。

前提条件

  • 十分なディスク領域

手順

  1. サイズが 2 GB の LVM2 論理ボリュームを作成します。

    # lvcreate VolGroup00 -n LogVol02 -L 2G
  2. 新しいスワップ領域をフォーマットします。

    # mkswap /dev/VolGroup00/LogVol02
  3. 次のエントリーを /etc/fstab ファイルに追加します。

    /dev/VolGroup00/LogVol02 swap swap defaults 0 0
  4. システムが新しい設定を登録するように、マウントユニットを再生成します。

    # systemctl daemon-reload
  5. 論理ボリュームでスワップをアクティブにします。

    # swapon -v /dev/VolGroup00/LogVol02
  6. スワップ論理ボリュームの作成に成功したかどうかをテストするには、アクティブなスワップ容量を調べます。

    $ cat /proc/swaps
    $ free -h

11.3.3. スワップファイルの作成

この手順では、スワップファイルの作成方法を説明します。

前提条件

  • 十分なディスク領域

手順

  1. 新しいスワップファイルのサイズをメガバイト単位で指定してから、そのサイズに 1024 をかけてブロック数を指定します。たとえばスワップファイルのサイズが 64 MB の場合は、ブロック数が 65536 になります。
  2. 空のファイルの作成:

    # dd if=/dev/zero of=/swapfile bs=1024 count=65536

    希望のブロックサイズと同等の値に count を置き換えます。

  3. 次のコマンドでスワップファイルをセットアップします。

    # mkswap /swapfile
  4. スワップファイルのセキュリティーを変更して、全ユーザーで読み込みができないようにします。

    # chmod 0600 /swapfile
  5. システムの起動時にスワップファイルを有効にするには、root で /etc/fstab に、次のエントリーを追加します。

    /swapfile swap swap defaults 0 0

    次にシステムが起動すると新しいスワップファイルが有効になります。

  6. システムが新しい /etc/fstab 設定を登録するように、マウントユニットを再生成します。

    # systemctl daemon-reload
  7. スワップファイルをすぐに有効にするには、次のコマンドを実行します。

    # swapon /swapfile
  8. 新しいスワップファイルを作成して有効にできたことをテストするには、アクティブなスワップ容量を調べます。

    $ cat /proc/swaps
    $ free -h

11.4. スワップ領域の削除

本セクションでは、インストール後にさらにスワップ領域を減らす方法を説明します。たとえば、システムの RAM 容量を 1 GB から 512 MB にダウングレードするとします。しかし、依然として 2 GB のスワップ容量が割り当てられています。ディスク領域が大きくなる (2 GB など) と無駄になる可能性があるため、スワップ領域を 1 GB に減らすことでメリットを得られることがあります。

必要に応じて、既存の LVM2 論理ボリューム上のスワップ領域を減らす、スワップに使用している LVM2 論理ボリュームを削除する、またはスワップファイルを削除する選択肢の中から 1 つ選択します。

11.4.1. LVM2 論理ボリュームでのスワップ領域の縮小

この手順では、LVM2 論理ボリュームでスワップを減らす方法を説明します。ここでは、縮小を行うボリュームを /dev/VolGroup00/LogVol01 とします。

手順

  1. 関連付けられている論理ボリュームのスワップ機能を無効にします。

    # swapoff -v /dev/VolGroup00/LogVol01
  2. LVM2 論理ボリュームのサイズを変更して 512 MB 削減します。

    # lvreduce /dev/VolGroup00/LogVol01 -L -512M
  3. 新しいスワップ領域をフォーマットします。

    # mkswap /dev/VolGroup00/LogVol01
  4. 論理ボリュームでスワップをアクティブにします。

    # swapon -v /dev/VolGroup00/LogVol01
  5. スワップ論理ボリュームの縮小に成功したかどうかをテストするには、アクティブなスワップ容量を調べます。

    $ cat /proc/swaps
    $ free -h

11.4.2. スワップの LVM2 論理ボリュームの削除

この手順では、スワップ用に LVM2 論理ボリュームを削除する方法を説明します。削除するスワップボリュームを /dev/VolGroup00/LogVol02 とします。

手順

  1. 関連付けられている論理ボリュームのスワップ機能を無効にします。

    # swapoff -v /dev/VolGroup00/LogVol02
  2. LVM2 論理ボリュームを削除します。

    # lvremove /dev/VolGroup00/LogVol02
  3. 次の関連エントリーを /etc/fstab ファイルから削除します。

    /dev/VolGroup00/LogVol02 swap swap defaults 0 0
  4. システムが新しい設定を登録するように、マウントユニットを再生成します。

    # systemctl daemon-reload
  5. 論理ボリュームの削除に成功したかどうかをテストするには、アクティブなスワップ容量を調べます。

    $ cat /proc/swaps
    $ free -h

11.4.3. スワップファイルの削除

この手順では、スワップファイルを削除する方法を説明します。

手順

  1. シェルプロンプトで次のコマンドを実行してスワップファイルを無効にします (スワップファイルの場所が /swapfile であるとします)。

    # swapoff -v /swapfile
  2. /etc/fstab ファイルからエントリーを削除します。
  3. システムが新しい設定を登録するように、マウントユニットを再生成します。

    # systemctl daemon-reload
  4. 実際のファイルを削除します。

    # rm /swapfile

このページには機械翻訳が使用されている場合があります (詳細はこちら)。