スワップファイルのサイズを固定する必要がある理由は想像できません。仮想ボックスのハードドライブイメージファイルのように、動的にサイズを変更できないのはなぜですか?
Linuxは動的なスワップファイルのサイズ変更をサポートしていないようです(とにかく、swapoff
/swapon
なしでスワップファイルのサイズが変更されたことを検出できませんでした)。
おそらく、スワップファイルは、それをサポートするためのコードを作成するときに、ファイルサイズを動的に変更しないと仮定する方が簡単です。私もそれの素晴らしい使用を見ていません。複数のスワップファイルを使用できるため、必要に応じてさらにスワップファイルを作成できます。
swapon
マンページ のこの段落にも注意してください。
The swap file implementation in the kernel expects to be able to write
to the file directly, without the assistance of the filesystem. This
is a problem on preallocated files (e.g. fallocate(1)) on filesystems
like XFS or ext4, and on copy-on-write filesystems like btrfs.
同じ問題が動的サイズのスワップファイルにも当てはまると思います。
SwapSpace は、それがあなたが探しているものである場合、動的にサイズ変更されたスワップを行うことを可能にするユーティリティです。 Ubuntuで利用できると思います。
私はそれが遅いことを知っていますが、動的スワップの最良の解決策は次のとおりだと思います:
Sudo apt install dphys-swapfile
Sudo update-rc.d dphys-swapfile enable
CONF_SWAPFACTOR=2
に/etc/dphys-swapfile
を設定し、最後に
Sudo service dphys-swapfile start
swapon
コマンドを使用して、実行中のシステムにスワップスペースを追加できます。既存の(未使用の)スワップファイル/パーティションが必要です。作成するには、dd
コマンドを使用して連続ファイルを割り当て、次にmkswap
を使用してファイル/パーティションに正しい制御情報を追加します。
スワップファイルを削除するには、swapoff
を使用します。その後、ファイルを削除できます。
@ user231695が言及したSwapSpace
dæmonがそれをしていると思う。
Swapfileが使用中の場合、swapoffは遅い操作になることに注意してください。すべてのデータを別のスワップ領域に転送する必要があります。