サーバーのパフォーマンスを向上させ、メモリ不足を回避するための推奨される方法の1つは、スワップスペースまたはスワップファイルを作成することです。 スワップ はハードディスク上にある仮想メモリであり、メモリ使用率が高いときにRAMを拡張します。
システムのメインメモリが不足すると、Linuxカーネルはメモリの一部をRAMから交換し、ハードディスクに書き込みます。 このようにして、より多くのRAMがシステムで利用可能になり、プロセスをスムーズに実行できます。
このチュートリアルでは、UbuntuやCentOSなどのLinuxディストリビューションでスワップファイルを作成する方法を学びます。
構成されたスワップを確認します
スワップファイルを作成する利点を確認した後、最初にシステムにスワップが構成されているかどうかを確認することが重要です。 これは、スワップファイルを構成するかどうかを知るのに役立ちます。
スワップスペースが作成されているかどうかを確認するには、次のコマンドを実行します。
$ swapon
このコマンドは、スワップパーティションのサイズとファイルシステムラベルを表示します。 コマンドの出力は次のとおりです。
NAME TYPE SIZE USED PRIO
/dev/sda9 partition 3.8G 383.3M -2
コマンドを実行しても出力が得られない場合は、スワップパーティションが構成されていないことを意味します。 次のコマンドを実行して、スワップスペースがないことを確認できます。
$ free -h
これにより、メインメモリとスワップ使用率の統計が表示されます。
total used free shared buff/cache available
Mem: 7.6G 5.6G 386M 1.1G 1.7G 675M
Swap: 0B 0B 0G
出力から、「スワップ」行にメモリが出力されていないことがはっきりとわかります。 これは、Linuxシステムにアクティブなスワップパーティションが存在しないことの確認です。 次に、システムのスワップファイルを作成しましょう。
ハードディスクの空き容量を確認してください
前に説明したように、スワップスペースは、RAMに拡張機能を提供するハードディスク上にある仮想メモリです。 そのことを念頭に置いて、ハードディスク上にスワップファイルを作成します。 ただし、その前に、使用可能なハードディスク容量を確認することをお勧めします。
Linuxで使用可能なハードドライブの空き容量を確認するには、次のコマンドを実行します。
$ df -h
出力では、単一のスラッシュで示されるルートパーティションに注意してください( / ) 下 ‘上に取り付けられました‘ 桁。 以下の出力では、ルートパーティションは/ dev / sda7ファイルシステムとしてラベル付けされており、十分な97Gの空き領域があります。
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 0 3.9G 0% /dev
tmpfs 784M 2.3M 781M 1% /run
/dev/sda7 156G 54G 97G 39% /
tmpfs 3.9G 828M 3.1G 22% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda10 29G 5.9G 21G 22% /var
/dev/sda8 1.9G 124M 1.7G 7% /boot
スワップファイルを作成する
Linuxシステムに十分なスペースがあると判断したら、スワップファイルの作成に進みます。 スワップスペースは通常、インストール中に作成されることを忘れないでください。 スワップスペースがすでに存在する場合は、問題ありません。 ただし、スワップスペースがない場合は、スワップファイルを作成することをお勧めします。
そのことを念頭に置いて、1GBのスワップファイルを作成します。 これを実現するには、 ファロケート 示されているコマンド:
$ sudo fallocate -l 1G /swap_file
スワップファイルには、好きな名前を付けてください。 この場合、名前を付けました swap_file。 ただし、fallocateユーティリティが存在しない場合は、次のコマンドを実行します。
$ sudo dd if=/dev/zero of=/swap_file bs=1024 count=1048576
次に、ルートのみが読み取りおよび書き込み権限を許可されているため、スワップファイルに正しいファイル権限を設定します。
$ sudo chmod 600 /swap_file
The chmod 600 引数は、スワップファイルにのみ読み取りおよび書き込み権限を割り当てます。
スワップエリアの設定
スワップ領域を設定するには、次のコマンドを使用して mkswap 示されているユーティリティ:
$ sudo mkswap / swap_file
スワップファイルをアクティブ化するには、次のコマンドを実行します。
$ sudo swapon /swap_file
再起動時にスワップを永続化する
Linuxシステムで作成されたスワップファイルは永続的ではなく、再起動後も存続しません。 再起動後もスワップファイルを永続化するには、編集する必要があります / etc / fstab ファイルを作成し、新しく作成されたスワップエントリを追加します。
お好みのテキストエディタを使用して、/ etc / fstabファイルを開きます。 示されているようにvimエディターを使用しました:
$ sudo vim /etc/fstab
次に、次のコンテンツを貼り付けます
/swap_file swap swap defaults 0 0
Save 変更して/ etc / fstabファイルを終了します。 スワップファイルが作成されたことを確認するには、次のコマンドを実行します。
$ sudo swapon --show
あなたは私たちが持っているものと同様の出力を得るはずです
NAME TYPE SIZE USED PRIO
/swap_file file 1024M 346.4M -2
スワップ設定
この時点で、スワップファイルは正常に作成されています。 スワップのもう1つのプロパティを検討します。これは、swappiness値です。 Swappinessは、スワップの使用頻度を決定するLinuxカーネルのプロパティを指します。
swappinessの値の範囲は0〜100です。低い値は、システムがカーネルに可能な限りスワッピングを行わないようにすることを意味します。 値を大きくすると逆の効果があります。カーネルができるだけ頻繁にスワップを使用するようになります。
デフォルトでは、swappinessの値は60です。これは、次のコマンドを実行して確認できます。
cat /proc/sys/vm/swappiness
この値は問題ないように見えるかもしれませんが、実稼働サーバーには適していません。 より低い値、たとえば20を設定するには、次のコマンドを実行します。
sudo sysctl vm.swappiness=20
再起動時にこの値を維持するには、/ etc /sysctl.confファイルに次の行を追加します
vm.swappiness=20
スワップファイルとスワップパーティション
Linuxには、スワップパーティションとスワップファイルの2種類のスワップスペースが付属しています。 スワップパーティションは、純粋にスワップに使用されるハードドライブの別個の部分です。 ここにファイルはありません。
一方、スワップファイルは、データファイルやシステムファイルと一緒にファイルシステム上にある一意のファイルです。
スワップスペースは本当に必要ですか? いくら?
Linuxをインストールするときによくある質問は、「スワップを作成する必要がありますか?」です。 前に説明したように、スワップスペースは、何らかの理由でRAMが使い果たされたときにバッファとして機能することを目的としています。 アプリケーションを収容するためのメモリがなくなると、オペレーティングシステムは特定のプロセスを選択して強制終了します。 これは、システムのパフォーマンスに影響を及ぼし始めます。
まあ、そのRAMを完全に使い果たすことは決してないかもしれません。 ただし、安全のために、少しスワップスペースを用意する価値があります。 スワップスペースは、ヨットの安全ボートと考えてください。 万が一、ヨットに火がついた場合は、安全に航海することができます。
それで、ここに大きな問題があります。どのくらいのスワップスペースを作成する必要がありますか? 率直に言って、この質問に対する直接的な答えはなく、推奨事項だけです。 RedHatの提案は、Linuxシステムにインストールされている物理RAMの20%であるスワップスペースを作成することをお勧めします。 ただし、これはRAMとオペレーティングシステムのサイズによって異なる場合があります。
にとって example、CentOSは以下を推奨します:
- RAMが2GB未満の場合、スワップスペースはRAMの2倍のサイズにする必要があります。
- RAMが2GBを超える場合は、 スワップスペース= 2 + RAMサイズ。 にとって example、 RAMが4GBの場合、スワップスペースは6GBである必要があります。
Ubuntuの場合、これは少し異なります
- RAMが1GB未満の場合、スワップスペースはRAMサイズの2倍以上である必要があります。
- それ以外の場合、RAMが1GBを超える場合、スワップスペースはRAMの平方根に等しくなければなりません。
の 休止状態モード、スワップスペースは、RAMにあるコンテンツをスワップパーティションに転送することでRAMの状態を維持するという理由から、不可欠です。 そのため、スワップサイズをRAMのサイズと同じに設定することをお勧めします。 したがって、8GのRAMがある場合は、8Gのスワップファイルで十分です。
結論
システムにスワップスペースを設ける必要性をこれ以上強調することはできません。 メインメモリが不足しているときに便利で、ビデオ編集ソフトウェアなどの重いアプリケーションを処理するのに役立ちます。 LinuxシステムのRAM容量がいくら大きくても、予期しないイベントに対してスワップを構成することを常にお勧めします。
Linuxシステムでスワップファイルを快適に作成して有効にできるようになることを願っています。 このガイドに関するフィードバックをいただければ幸いです。