CentOS7にスワップを追加する方法

前書き ##

サーバーの応答を高速化し、アプリケーションのメモリ不足エラーを防ぐ最も簡単な方法の1つは、[スワップスペース](https://cloud.tencent.com/developer/article/1108235?from=10680)を追加することです。 スワップは、ストレージドライブ上の領域であり、オペレーティングシステムは、メモリに保存できなくなったデータを一時的に保存できます。

これにより、サーバーが作業メモリーに保持できる情報の量を増やすことができますが、いくつかの注意点があります。読み取りと書き込みの場合、スワップはメモリを使用するよりも低速ですが、サーバーのメモリが不足している場合に優れたセーフティネットを提供できます。

スワップがないと、メモリが不足しているサーバーがアプリケーションのスキャンと強制終了を開始してメモリを解放したり、クラッシュしたりする可能性があります。これにより、保存されていないデータが失われたり、ダウンタイムが発生したりする可能性があります。信頼性の高いデータアクセスを確保するために、特定のアプリケーションにはスワップ機能が必要です。

このチュートリアルでは、CentOS7サーバーでスワップファイルを作成して有効にする方法を紹介します。

通常、従来の回転式ハードドライブを使用するシステムではスワップが推奨されますが、SSDを使用するスワップは、時間の経過とともにハードウェアの問題を引き起こす可能性があります。このため、SSDストレージを使用する他のプロバイダーでスワップを有効にすることはお勧めしません。これを行うと、基盤となるハードウェアの信頼性に影響します。

準備 ##

このチュートリアルを開始する前に、いくつかの手順を完了する必要があります。

root以外のユーザーができたら、それを使用してCentOSサーバーにSSHで接続し、スワップファイルのインストールを続行できます。サーバーを持たないユーザーは、[Tencent Cloud Server](https://cloud.tencent.com/product/cvm?from=10680)を購入して使用するか、[Tencent Cloud Lab CentOS Server](https://cloud.tencent.com/developer/labs/gallery?tagId=13&from=10680)で直接体験することができます。

システムスワップ情報を確認してください

開始する前に、サーバーのストレージをチェックして、使用可能なスワップスペースがすでにあるかどうかを確認する必要があります。複数のスワップファイルまたはスワップパーティションを持つことができますが、通常はそれで十分です。

swaponユニバーサルスワップユーティリティを使用して、システムにスワップが構成されているかどうかを確認できます。 -sフラグを使用すると、swaponはストレージデバイスでのスワップの使用状況と可用性の概要を表示します。

swapon -s

コマンドが何も返さない場合、要約は空であり、スワップファイルはありません。

スワップスペースを確認するもう1つの方法は、システムの全体的なメモリ使用量を示す空きユーティリティを使用することです。次のように入力すると、現在のメモリとスワップの使用量(メガバイト単位)を表示できます。

free -m
    total       used       free     shared    buffers     cached
Mem:39533153637811107-/+ buffers/cache:1963756
Swap:004095

ご覧のとおり、システムの合計スワップスペースは0です。これは、これまでに見たスワップオンと一致します。

利用可能なストレージスペースを確認してください

スワップ用のスペースを割り当てる一般的な方法は、タスク専用の別のパーティションを使用することです。ただし、ハードウェアまたはソフトウェアの制限により、パーティションスキームを変更できるとは限りません。幸い、既存のパーティションに存在するスワップファイルを簡単に作成できます。

これを行う前に、現在のドライブの使用状況を理解する必要があります。この情報を取得するには、次の情報を入力できます

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        59G  1.5G   55G   3% /
devtmpfs        2.0G     02.0G   0%/dev
tmpfs           2.0G     02.0G   0%/dev/shm
tmpfs           2.0G  8.3M  2.0G   1%/run
tmpfs           2.0G     02.0G   0%/sys/fs/cgroup

注: -hフラグは、ドライブ情報を人間化された読み取り形式で出力するように dhに指示するだけです。たとえば、パーティション内の生のメモリブロックの数を出力する代わりに、 df-hは、M(メガバイト)またはG(ギガバイト)のスペース使用量と可用性を示します。

最初の行でわかるように、ストレージパーティションは59ギガバイトであるため、使用するスペースがかなりあり、実際の使用法は大きく異なる場合があります。

スワップスペースの適切なサイズについては多くの意見がありますが、それは実際にはアプリケーションの要件と個人の好みによって異なります。一般に、システムメモリの量は2倍以上の方が適しています。

私のシステムには4ギガバイトのメモリがあり、ストレージスペースからのチャンクの数は私が参加したいよりも多いので、システムに合わせて4ギガバイトのスワップスペースを作成します羊。

スワップファイルを作成する

使用可能なストレージスペースがわかったので、ファイルシステムにスワップファイルを作成できます。ルート( /)ディレクトリに swapfileという名前のファイルを作成しますが、必要に応じてファイルに他のファイルという名前を付けることができます。ファイルは、スワップファイルに必要なスペースを割り当てる必要があります。

スワップファイルを作成する最も速くて簡単な方法は、 fallocateを使用することです。このコマンドは、事前に割り当てられたサイズのファイルをすぐに作成します。次のように入力して、4ギガバイトのファイルを作成できます。

sudo fallocate -l 4G /swapfile

パスワードを入力して sudo権限を承認すると、スワップファイルがすぐに作成され、プロンプトが返されます。次の方法を使用して、正しい量のスペース lsがスワップ用に予約されているかどうかを確認できます。

ls -lh /swapfile
- rw-r--r--1 root root 4.0G Oct 3011:00/swapfile

ご覧のとおり、スワップファイルは正しい量のスペースで作成されました。

スワップファイルを有効にする

これでファイルが作成されましたが、システムはこれをスワップに使用する必要があることを認識していません。このファイルをスワップとしてフォーマットしてから有効にするようにシステムに指示する必要があります。

これを行う前に、スワップファイルのアクセス許可を調整して、rootアカウント以外の誰もそれを読み取れないようにする必要があります。他のユーザーにこのファイルの読み取りまたは書き込みを許可すると、セキュリティ上の大きなリスクになります。次のコマンドを使用して、権限 chmodをロックできます。

sudo chmod 600/swapfile

これにより、ルートアカウントの読み取りおよび書き込み権限のみが制限されます。 lsを再び使用できます

ls -lh /swapfile
- rw-------1 root root 4.0G Oct 3011:00/swapfile

スワップファイルの方が安全なので、次のように入力して、使用するスワップスペースを設定するようにシステムに指示できます。

sudo mkswap /swapfile
Setting up swapspace version 1, size =4194300 KiB
no label, UUID=b99230bb-21af-47bc-8c37-de41129c39bf

これで、スワップファイルをスワップスペースとして使用できます。次のように入力して使用を開始できます。

sudo swapon /swapfile

プログラムの成功を確認するために、システムがスワップスペースを報告するかどうかを確認できます。

swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        41943000-1

この出力は、新しいスワップファイルがあることを確認します。無料のユーティリティを再度使用して、調査結果を確認できます。

free -m
    total       used       free     shared    buffers     cached
Mem:39533153637811107-/+ buffers/cache:1963756
Swap:409504095

スワップは正常にセットアップされ、オペレーティングシステムは必要に応じてスワップの使用を開始します。

スワップファイルを永続的にする

スワップファイルは現在有効になっていますが、再起動しても、サーバーはファイルの使用を自動的に有効にしません。ファイルシステムとパーティションを管理するためのテーブルである fstabファイルを変更することで変更できます。

sudo権限を持つテキストエディタでファイルを編集します。

sudo nano /etc/fstab

ファイルの最後に、作成したスワップファイルを自動的に使用するようにオペレーティングシステムに指示する行を追加する必要があります。

/swapfile   swap    swap    sw  00

行を追加したら、ファイルを保存して閉じることができます。サーバーは起動するたびにこのファイルをチェックして、今後スワップファイルを使用できるようにします。

交換設定を調整します(オプション)

交換を処理するときにシステムのパフォーマンスに影響を与えるいくつかのオプションを構成できます。ほとんどの場合、これらの構成はオプションであり、行う変更はアプリケーションのニーズと個人的な好みによって異なります。

Swappiness

swappinessパラメータは、システムがメモリからスワップスペースにデータをスワップする頻度を決定します。これは0〜100の値であり、スワップの使用をトリガーするメモリ使用量のパーセンテージを示します。

値がゼロに近い場合、システムは絶対に必要でない限り、データをドライブにスワップしません。スワップファイルとの相互作用はメモリとの相互作用よりもはるかに遅いため「高価」であり、この読み取り速度と書き込み速度の違いにより、アプリケーションのパフォーマンスが大幅に低下する可能性があることに注意してください。スワップに依存しないようにシステムに指示すると、通常、システムが高速になります。

100に近い値は、より多くのメモリを解放するために、より多くのデータをスワップに入れようとします。アプリケーションのメモリプロファイルまたはサーバーの使用状況によっては、これがより適切な場合があります。

swappiness構成ファイルを読み取ることにより、現在のswappiness値を表示できます。

cat /proc/sys/vm/swappiness
30

CentOS 7のデフォルトのスワップピネス設定は30です。これは、ほとんどのデスクトップとローカルサーバーにとって適切な中間点です。 [Cloud Server](https://cloud.tencent.com/product/cvm?from=10680)の場合、0に近づけたい場合があります。 sysctlコマンドを使用して、swappinessをさまざまな値に設定できます。たとえば、swappinessを10に設定するには、次のように入力します。

sudo sysctl vm.swappiness=10
vm.swappiness =10

この設定は、次の再起動まで続きます。再起動の間に設定を保持するために、sysctl構成ファイルに出力行を追加できます。

sudo nano /etc/sysctl.conf

スワップピネス設定をファイルの最後に追加します。

vm.swappiness =10

行を追加したら、ファイルを保存して閉じることができます。サーバーは、起動するたびに、swappinessを宣言した値に自動的に設定します。

キャッシュ圧力

変更する可能性のあるもう1つの関連値は、 vfs_cache_pressureです。この設定は、特別なファイルシステムメタデータエントリの保存に影響します。

この情報を絶えず読み取って更新することは、通常、非常にコストがかかるため、キャッシュに保存するのに時間がかかり、システムのパフォーマンスに非常に役立ちます。

procを介してファイルシステムに再度クエリを実行することにより、このキャッシュプレッシャーの現在の値を確認できます。

cat /proc/sys/vm/vfs_cache_pressure
100

現在の構成により、システムはキャッシュからinode情報を削除する速度が速すぎます。 sysctlを使用して、50などのより保守的な設定に設定できます。

sudo sysctl vm.vfs_cache_pressure=50

vm.vfs_cache_pressure =50

繰り返しますが、これは現在のセッションにのみ適用されます。 swappiness設定を使用するのと同じように、構成ファイルに追加することで変更できます。

sudo nano /etc/sysctl.conf

下部に、新しい値を指定する行を追加します。

vm.vfs_cache_pressure =50

行を追加したら、ファイルを保存して閉じることができます。サーバーは、起動するたびに、キャッシュ圧力を宣言した値に自動的に設定します。

結論として ##

このチュートリアルの手順に従うと、メモリ使用量の観点からサーバーに余裕を持たせることができます。スワップスペースは、いくつかの一般的な問題を回避するのに非常に役立ちます。

OOM(メモリ不足)エラーが発生した場合、またはシステムが必要なアプリケーションを使用できない場合、最善の解決策は、アプリケーション構成を最適化するか、サーバーをアップグレードすることです。ただし、スワップスペースを構成すると、柔軟性が高まります。


参照:「CentOS7にスワップを追加する方法」

Recommended Posts

CentOS7にスワップを追加する方法
Ubuntu20.04にスワップスペースを追加する方法
CentOS8でスワップスペースを増やす方法
Ubuntu16.04でスワップパーティションを追加する方法を説明する
CentOS8でユーザーを追加および削除する方法
centOS7にjdk1.8をインストールする方法
CentOS8にMySQLをインストールする方法
CentOS8にRをインストールする方法
CentOS8にFFmpegをインストールする方法
CentOS8にVirtualboxをインストールする方法
CentOS8にTensorFlowをインストールする方法
Centos7でgcc4.9.xに更新する方法
CentOS8にTeamViewerをインストールする方法
CentOS8にGradleをインストールする方法
CentOS8にElasticsearchをインストールする方法
CentOS8にJenkinsをインストールする方法
CentOS8にGoをインストールする方法
CentOS8にGCCをインストールする方法
CentOS8にYarnをインストールする方法
CentOS8にNginxをインストールする方法
CentOS7にAsteriskをインストールする方法
CentOS8にJenkinsをインストールする方法
CentOS8にVagrantをインストールする方法
CentOS8にSkypeをインストールする方法
CentOS8にhtopをインストールする方法
CentOS8にPythonをインストールする方法
CentOS8にElasticsearchをインストールする方法
CentOS8にPostgresqlをインストールする方法
CentosにWordpressをインストールする方法
CentOS8にhtopをインストールする方法
CentOS8にTeamViewerをインストールする方法
CentOS8にMariaDBをインストールする方法
CentOS7にMongoDBをインストールする方法
CentOS8にOdoo13をインストールする方法
CentOS8にApacheをインストールする方法
CentOS8でSELinuxを無効にする方法
CentOS8にOpenCVをインストールする方法
CentOS8にPHPをインストールする方法
CentOS8にMongoDBをインストールする方法
Ubuntuでスワップパーティションを追加する方法
CentOS8にApacheMavenをインストールする方法
CentOS7にApacheKafkaをインストールする方法
[グラフィック]セントスにtomcatをインストールする方法
R&D:CentOS7にPython3をインストールする方法
CentOS7にGCCコンパイラをインストールする方法
CentOS8でホスト名を変更する方法
centos7.0にオフラインJDK1.8をインストールする方法
UbuntuにAptソフトウェアソースを追加する方法
CentOS7にElasticsearchをインストールして構成する方法
CentOS8にVisualStudioコードをインストールする方法
CentOS7にDockerをインストールして使用する方法
CentOSLinuxにRPMパッケージをインストールする方法
CentOS8でSSHキーを設定する方法
CentOS8にVNCをインストールして構成する方法
CentOS8にComposerをインストールして使用する方法
CentOS8にRedisをインストールして構成する方法
CentOS8にNode.jsとnpmをインストールする方法
centos7.2.1511にjdk1.8.0_151とmysql5.6.38をインストールする方法
CentOS6にphpMyAdminをインストールして構成する方法
CentOS8にOwncloudをインストールして構成する方法
centos7.2でLAMP環境を構築する方法