ブログに戻る

Ubuntu 20.04でのスワップスペースの追加:チュートリアル

Ubuntu 20.04でのスワップスペースの追加:チュートリアル

サーバーにスワップスペースを追加することは、メモリ不足エラーを補うための優れたオプションです。Linux は、システム内のRAM容量がいっぱいになったときに、ユーザーがシステムにスワップスペースを追加できるようにします。専用のスペースパーティションを作成すると、ディスク容量の不足をあまり心配することなく、物理メモリをスムーズに動作させることができます。

スワップの概要

Linuxにおけるスワップスペースは、マシンの virtual memory の一部であり、物理メモリの空き容量がなくなったときに使用されます。特に、追加のメモリが必要となる大規模なプログラムやアプリケーションを操作する場合、スワップスペースは一時的に非アクティブなメモリページを保持するための理想的な選択肢です。スワップスペースを作成すると、大規模なプログラムの実行中にデータを保存できるため、アプリケーションのクラッシュを減らすことができます。つまり、システムがより多くのメモリリソースを必要とし、RAMがいっぱいになった場合、メモリ内のすべての非アクティブなページがスワップスペースに移動され、プログラムは中断されることなく実行を継続できます。

必要なスワップ容量は?

スワップスペースの容量は、いくつかの要因によって異なります。これには、利用可能なRAM、かかる負荷、およびシステムがハイバネーション機能(サスペンド・トゥ・ディスク)をサポートする必要があるかどうかなどが含まれます。RAMの空き容量に基づいた推奨スワップスペースについては、以下の表を参照してください。

No.

利用可能なRAM容量

推奨スワップ容量

1.

1GB

1GB

2.

2GB

1GB

3.

3GB

2GB

4.

4GB

2GB

5.

5GB

2GB

6.

6GB

2GB

7.

8GB

3GB

このチュートリアルでは、Ubuntu 20.04にスワップスペースを追加する手順を説明します。それでは始めましょう!

前提条件

このチュートリアルを進めるには、以下が必要です。

ステップ1:スワップ情報の確認

スワップスペースのサイズはシステムのRAMに依存します。そのため、作成する前にシステム内のスワップスペースの空き状況を確認することが不可欠です。システムに設定済みのスワップがあるかどうかを確認するには、以下のコマンドを入力します。

Swap Space image 1

出力が表示された場合は、システムにスワップスペースを作成するための空き容量があることを意味します。ただし、出力がない場合は、スワップスペースを追加するのに十分な空き容量がないことを示すシグナルです。

以下の free ユーティリティを使用して、アクティブなスワップがないことを確認します。

出力として、スワップの行が空(ゼロ)になっているのが確認できます。

Swap Space image 2

ステップ2:ハードドライブパーティションの空き状況の確認

システムの空き状況を確認するのと同様に、十分なスペースがあることを確認するために、現在のディスク使用量を確認しましょう。以下の df コマンドを使用して、ハードディスクパーティションの空き状況を確認します。

デバイス名に / があり、 Mounted on 列にあるものが、私たちのディスクであり、 11% の空きがあります。次のような出力が表示されます。

Swap Space image 3

システムの要件を確認したら、次に進み、ファイルシステム上にスワップファイルを作成しましょう。

ステップ3:スワップファイルの作成

ファイルシステム上にスワップファイルを作成するには、 swapfile というファイル名をルート (/) ディレクトリに割り当てます。これには fallocate プログラムを使用します。割り当てるファイルサイズはニーズによって異なります。チュートリアルをシンプルで分かりやすくするために、ここでは 1G のファイルを作成し、 1G のRAMを割り当てます。以下の sudo  コマンドを使用してスワップファイルを作成します。

次に、このコマンドを入力して、確保されたスペースを確認します。

次のような出力が表示されます。Swap Space image 3

システムにスワップスペースを作成できたので、次のステップでそれを有効にしましょう。

ステップ4:スワップファイルの有効化

適切なサイズが確保できたら、それをスワップスペースに変換しましょう。セキュリティ上の理由から、ファイルをrootユーザーのみがアクセスできるようにし、一般ユーザーからのアクセスを防ぐことが極めて重要です。制限を追加して、root 権限を持つユーザーのみがファイルを表示し、その内容を読み取れるようにします。以下の root コマンドを使用して、ファイルを root ユーザーのみがアクセスできるようにします。

次に、 ls コマンドを使用して変更を確認します。

ご覧の通り、root ユーザーのみが読み取りおよび書き込みフラグが有効になっています。

Swap Space image 4

その後、ファイルをスワップスペースとしてマークします。

次のような出力が表示されます。

Swap Space image 5

その後、スワップファイルを有効にし、システムがそれを使用し始めるのを許可します:

次に、スワップが利用可能であることを確認します:

次のような出力が表示されます:

Swap Space image 6

As we did in ステップ1で行ったように、もう一度 free ユーティリティの空き容量を確認します:

次のような出力が表示されます:

Swap Space image 7

スワップが正常に設定され、オペレーティングシステムは必要に応じてそれを使用し始めます。次のステップでは、スワップファイルを永続化します。

ステップ5:スワップファイルの永続化

デフォルトでは、サーバーを再起動するたびにスワップ設定が自動的に保持されることはありません。デフォルト設定を変更し、安全を期すために、スワップファイルを /etc/fstab ファイルに追加します。sudo コマンドを使用して、 /etc/fstab ファイルをバックアップします:

次に、以下のコマンドを入力して、スワップファイルの情報を /etc/fstab ファイルの末尾に追加します:

その後、スワップスペースを調整できるように、いくつかの設定を確認して変更を加えましょう。

ステップ6:スワップ設定の変更

このステップでは、設定を構成し、いくつかの変更を加えます。swappiness プロパティを調整し、キャッシュプレッシャーを変更しましょう。

  • Swappiness プロパティの調整

The swappiness パラメーターは、調整可能なカーネルパラメーターです。これは、実行時メモリのスワップアウトのバランスを変更し、RAMからスワップスペースへのデータのやり取りを考慮します。このパラメータ値は、0から100までのパーセンテージで表されます。

The vm.swappiness の値は、システムのスワップ動作に直接影響を与えます。 vm.swappiness の値が高ければ高いほど、システムはより多くスワップし、逆もまた同様です。値がゼロに近い場合、カーネルはデータをスワップしないため、パフォーマンスの低下を招く可能性があります。システムがスワップにあまり依存しないようにすることは、パフォーマンスを向上させ、堅牢な応答性を得るための優れた方法です。

あるいは、100に近い vm.swappiness は、物理メモリ上のデータを減らし、スワップにより多くのデータを配置しようとします。低〜中程度の vm.swappiness 値とは異なり、RAMとの間でデータが頻繁にアクティブにスワップされている場合、システムのスワップ頻度が高いと非常に望ましくない影響を及ぼします。

次のコマンドを入力して、現在の swappiness 値を確認します:

次のような出力が表示されます:

Swap Space image 8

You can also set the swappiness of your choice using the sysctl コマンドを使用して、好みの swappiness を設定することもできます。次のコマンドを入力して、swappiness の値を 15 に設定してみましょう:

次のような出力が表示されます:

output

システムが再起動されるまで、設定はそのまま維持されます。再起動時に値を自動的に設定するには、この行を /etc/sysctl.conf ファイルに追加します:

最下部に次のコードを追加できます:

code

その後、ファイルを保存して閉じます。

  • キャッシュプレッシャーの調整

次に、他のデータよりも vfs_cache_pressure を変更して、inode および dentry 情報を処理するようにします。これらの vfs_cache_pressure 設定 は、ディレクトリのキャッシュに使用されるメモリをカーネルが再利用する傾向も制御します。再び proc ファイルシステムに移動して、現在の値を確認します:

次のような出力が表示されます:

output 2

設定はすでに完了しているため、システムはキャッシュから inode 情報を排除します。 sysctl vm.vfs_cache_pressure を次のようなより安定した設定に設定しましょう:

次のような出力が表示されます:

Swap Space image 9

swappiness の設定で行ったのと同様に、ここでも設定を変更できます:

最下部に、作成した新しい値を示す行を挿入します:

Swap Space image 10

最後に、ファイルを保存して閉じます。

結論

スワップ領域は、専用のスワップパーティション、スワップファイル、またはその両方の組み合わせとして追加できます。スワップ領域を作成してそのメリットを活用することで、メモリ不足(out-of-memory)の警告をあまり心配することなく、アプリケーションをシームレスに実行できます。メモリ領域が限られているシステムにおいて、スワップ領域の作成は追加のメリットとなりますが、より多くのRAM容量の代替手段として扱うべきではありません。スワップ領域はハードディスク上にあるため、物理メモリと比較してアクセス時間がわずかに遅くなる可能性があることに注意してください。

以下は、当社のブログに掲載されている、Ubuntuサーバーの利用開始に役立つその他のチュートリアルです:

快適なコンピューティングを!

author

Hark Labs

著者 · CloudSigma

Preslav DobrevはCloudSigmaのクリエイティブデザイナーであり、従来型および革新的なマーケティングチャネルを活用した一貫性のあるビジネスアイデンティティに注力しています。彼は芸術的なビジョンと戦略的マーケティングを融合させ、インパクトのあるブランドナラティブを生み出すことに長けています。

コメント

コメントはまだありません。最初のコメントを投稿しましょう。