スワップスペースは、特に今日のエンタープライズ環境において、最新のLinuxシステムの不可欠な部分です。あなたの多くはその概念とあなたに有利に働くようにそれを管理する方法に精通しているかもしれません。私のように、最近までスワップやライブ環境での操作に対応しておらず、その目的を完全に理解していない人はたくさんいると思います。基本的な概念を理解し、スワップスペースを作成および管理する方法を説明したいと思います。
スワップとは何ですか?
映画「インセプション」を見たことがありますか?前提は「夢の中の夢」を中心にしています。スワップは物理メモリ上に構築された仮想メモリであるため、概念は似ています。 「メモリ」の一般的な定義がないと、混乱が生じる可能性があります。コンピューティングには、RAMとハードディスクの2つの主要なタイプのメモリがあります。
RAMとも呼ばれるランダムアクセスメモリは、コンピュータによってアクティブに使用されているプログラムを格納およびアクセスするために使用されるメモリです。このメモリは、コンピュータにあるハードドライブストレージとは大きく異なります。ディスクベースであろうとソリッドステートであろうと、ハードドライブのメモリは、コンピュータでアクティブに使用されていないデータを保存するために使用されます。また、電源を入れ直してもデータを保持できます。 RAMの場合、揮発性メモリと見なされます。つまり、コンピュータの電源を切るとRAMがクリアされます。
なぜスワップなのですか?
これらのタイプのメモリを定義したので、スワップが必要な理由を理解する必要があります。 RAMは有限のリソースであり、マルチタスクを実行したり、要求の厳しいファイルやソフトウェアにアクセスしたりする場合は、システムに搭載されているRAMの容量を超える可能性があります。これが発生すると、必要なRAMが使用可能になるまで、プログラムがクラッシュまたはフリーズする可能性があります。これがスワップの出番です。
スワップを使用すると、物理RAMが容量にプッシュされているときに、既存の物理ハードドライブスペースを使用して仮想RAMを作成できます。サーバーで作業していて、特定のプロセスを初期化するとクラッシュが発生するとします。多くの場合、複数のコアシステムプロセスを同時に開始しようとすると、メモリ不足エラー(既知のOOM Killer)が発生します。これは、プロビジョニングの少ないシステム(仮想エディションサーバーなど)で特に一般的です。これを簡単に修正するには、数Gbのスワップメモリを割り当てます。スワップメモリを作成する方法を見てみましょう。
[注:スワップについてまだ確信が持てない場合は、Redhat.comからこのすばらしい作品をチェックしてください]
交換する方法は?
スワップスペースの作成に関しては、2つのオプションがあります。スワップパーティションまたはスワップファイルを作成できます。ほとんどのLinuxインストールには、スワップパーティションが事前に割り当てられています。これは、物理RAMがいっぱいになったときに使用されるハードディスク上の専用メモリブロックです。反対に、スワップファイルを作成することもできます。これは、特定のサイズになるように設計されたファイルであり、特定の状況でのみ使用するのが最適です。状況によって別段の指示がない限り、スワップパーティションを使用することをお勧めします。
LVM論理ボリュームでスワップを拡張する手順を示します。ここに沿って進むか、非LVMスワップの方法を含む完全なドキュメントについてはカスタマーポータルを参照してください。
[注:完全なドキュメントを表示するには、RHELカスタマーポータルを参照してください。 ]
スワップを作成または増やす前に、マシンにすでにスワップが使用可能かどうかを判断すると便利です。 free -mコマンドを実行すると、これをすばやく確認できます。ここで、Virtual BoxへのRHEL8の新規インストールには、現在使用されていない3Gbスワップが事前に割り当てられていることがわかります。

ここで、システムの使用率によって、使用可能なスワップスペースを増やす必要があるとしましょう。まず、関連するボリュームのスワップを無効にします。
Disable: # swapoff -v /dev/rhel/swap
Resize: # lvresize /dev/rhel/swap -L +2G (to increase swap by 2G)
Format: # mkswap /dev/rhel/swap
Enable: # swapon -v /dev/rhel/swap
何らかの理由でスワップスペースを減らす必要がある場合は、手順2を次のように変更するだけです。
Reduce: # lvreduce /dev/rhel/swap -L -1G (to reduce the swap by 1Gb)
もっと交換しますか?
スワップに関しては、他にも操作する必要があるものがあるかもしれません。新しいボリュームの作成またはスワップの完全な削除が必要になる場合があります。先ほど触れたスワップファイルもあります。これらのタスクを実行する方法の詳細については、記事の前半にあるカスタマーポータルへのリンクを確認してください。
[注:このトピックの詳細については、Opensource.comでDavidBothの記事を確認してください]