#author("2023-01-23T21:07:01+09:00","default:regex","regex") #author("2023-01-23T21:07:27+09:00","default:regex","regex") * ファイルシステムにスワップファイルを作成 [#sce1d8f2] root(/)ディレクトリにswapfileという必要なサイズのファイルを割り当てます。 ~ ~ ** スワップファイルを作成する最良の方法は、fallocateプログラムを使用することです。このコマンドは、指定したサイズのファイルを即座に作成します。~ [#x90ff763] 4GBのファイルを作成。 sudo fallocate -l 1G /swapfile sudo fallocate -l 4G /swapfile ~ 次のように入力して、正しい容量のスペースが確保されたことを確認できます。~ ~ ls -lh /swapfile -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile -rw-r--r-- 1 root root 4.0G Apr 25 11:14 /swapfile ~ ファイルは、適切な容量のスペースを確保して作成されました。 ** スワップファイルの有効化 [#s53db9d6] ~ 適切なサイズのファイルが使用可能となったので、実際にこれをスワップ領域に変換する。~ ~ まず、root権限を持つユーザーのみが内容を読み取ることができるように、ファイルのアクセス許可をロックする必要があります。これにより通常のユーザーがファイルにアクセスできなくなるため、セキュ~リティのため。~ 次のように入力して、rootのみがアクセス できるようにします。~ ~ sudo chmod 600 /swapfile ~ 次のように入力して、アクセス権限の変更を確認します。~ ~ ls -lh /swapfile -rw------- 1 root root 1.0G Apr 25 11:14 /swapfile ~ ご覧のとおり、読み取りおよび書き込みフラグが有効になっているのはrootユーザーのみ。~ 次のように入力して、ファイルをスワップ領域としてマークできます。~ ~ sudo mkswap /swapfile Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf ~ ファイルをマークした後、スワップファイルを有効にして、システムが使用できるようにします。~ ~ sudo swapon /swapfile ~ 次のように入力して、スワップが使用可能であることを確認。~ ~ sudo swapon --show ~ NAME TYPE SIZE USED PRIO /swapfile file 4096M 0B -2 ~ freeユーティリティの出力を再度確認して、結果を確証する。~ ~ free -h total used free shared buff/cache available Mem: 981Mi 123Mi 644Mi 0.0Ki 213Mi 714Mi Swap: 4.0Gi 0B 4.0Gi ~ スワップは正常にセットアップされ、オペレーティングシステムは必要に応じて使用を開始します。~ ~ ** スワップファイルの永続化 [#ra7216b9] ~ 先の変更により、現在のセッションのスワップファイルが有効になりました。しかし、再起動すると、サーバーはスワップ設定を自動的に保持しません。これを変更するには、スワップファイルを/etc/fstabファイルに追加します。~ ~ 何か問題が生じた場合に備えて、/etc/fstabファイルをバックアップします。~ ~ sudo cp /etc/fstab /etc/fstab.bak ~ 次のように入力して、スワップファイル情報を/etc/fstabファイルの最後に追加します。~ ~ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab ~ 次に、スワップ領域を調整するために更新できるいくつかの設定を確認します。~ ~ ** スワップ設定の調整 [#wa15d667] ~ スワップを処理するときにシステムのパフォーマンスに影響を与えるいくつかのオプションを設定できます。~ - Swappinessプロパティの調整~ swappinessパラメーターは、システムがRAMからスワップ領域にデータをスワップする頻度を設定します。これは、パーセンテージを表す0~100の値です。~ ~ 値が0に近い場合、カーネルは絶対に必要な場合を除いて、データをディスクにスワップしません。スワップファイルとのやり取りは、RAMとのやり取りよりもはるかに時間がかかり、パフォーマンスが大幅に低下する可能性があるという点で、「コストがかかる」ことを忘れないでください。スワップにあまり依存しないようにシステムに指示すると、通常、システムの動作が高速になります。~ ~ 値が100に近い場合は、RAMの空き容量をより確保するために、より多くのデータをスワップしようとします。アプリケーションのメモリプロファイルまたはサーバーの使用目的によっては、この方が良い場合もあります。~ ~ 次のように入力して、現在のswappiness値を確認できます。~ ~ cat /proc/sys/vm/swappiness 60 ~ デスクトップの場合、swappinessの設定を60にすることは不適切な値ではありません。サーバーの場合は、値を0に近づけると良いでしょう。~ ~ sysctlコマンドを使用して、swappinessを別の値に設定できます。~ ~ たとえば、swappinessを10に設定するには、次のように入力します。~ ~ sudo sysctl vm.swappiness=10 vm.swappiness = 10 ~ この設定は、次の再起動まで保持されます。/etc/sysctl.confファイルに次の行を追加して、再起動時にこの値を自動的に設定できます。~ ~ sudo nano /etc/sysctl.conf ~ 下部で、次の行を追加できます。~ /etc/sysctl.conf vm.swappiness=10 ~ 完了したら、ファイルを保存して閉じます。~ - キャッシュプレッシャー設定の調整 ~ 変更する可能性があるもう一つの関連値は、vfs_cache_pressureです。これは、システムが他のデータ上の_inode_および_dentry_の情報をキャッシュするために選択する量を設定します。~ ~ 基本的に、これはファイルシステムに関するアクセスデータです。通常、これは検索に非常にコストがかかり、頻繁にリクエストされるため、システムがキャッシュするのに最適です。 procファイルシステムを再度クエリすることで、現在の値を確認できます。~ ~ cat /proc/sys/vm/vfs_cache_pressure 100 ~ 現在設定されているため、システムはinode情報をキャッシュからすぐに削除します。次のように入力して、これを50などのより保守的な値に設定できます。~ ~ sudo sysctl vm.vfs_cache_pressure=50 vm.vfs_cache_pressure = 50 ~ 繰り返しますが、これは現在のセッションでのみ有効です。swappiness設定で行ったように、設定ファイルに追加することで変更できます。~ ~ sudo nano /etc/sysctl.conf ~ 下部に、新しい値を指定する行を追加します。~ /etc/sysctl.conf vm.vfs_cache_pressure=50 ~ 完了したら、ファイルを保存して閉じます。~