root(/)ディレクトリにswapfileという必要なサイズのファイルを割り当てます。
4GBのファイルを作成。
sudo fallocate -l 4G /swapfile
次のように入力して、正しい容量のスペースが確保されたことを確認できます。
ls -lh /swapfile -rw-r--r-- 1 root root 4.0G Apr 25 11:14 /swapfile
ファイルは、適切な容量のスペースを確保して作成されました。
適切なサイズのファイルが使用可能となったので、実際にこれをスワップ領域に変換する。
まず、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
スワップは正常にセットアップされ、オペレーティングシステムは必要に応じて使用を開始します。
先の変更により、現在のセッションのスワップファイルが有効になりました。しかし、再起動すると、サーバーはスワップ設定を自動的に保持しません。これを変更するには、スワップファイルを/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
次に、スワップ領域を調整するために更新できるいくつかの設定を確認します。
スワップを処理するときにシステムのパフォーマンスに影響を与えるいくつかのオプションを設定できます。
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
完了したら、ファイルを保存して閉じます。
cat /proc/sys/vm/vfs_cache_pressure 100
sudo sysctl vm.vfs_cache_pressure=50 vm.vfs_cache_pressure = 50
sudo nano /etc/sysctl.conf
/etc/sysctl.conf vm.vfs_cache_pressure=50