回答:
スワップファイルは、スワップパーティションよりも柔軟性がありますが、誤りやすいです。ファイルシステムのエラーにより、スワップファイルが破損する可能性があります。スワップファイルは、ファイルを移動または削除できないため、管理者にとっては面倒です。スワップファイルは、休止状態には使用できません。過去にはスワップファイルの速度がわずかに遅かったのですが、最近ではその差はごくわずかです。
スワップファイルの利点は、事前にサイズを決定する必要がないことです。ただし、Linuxでは、スワップファイルのサイズをオンラインで変更することはできません。登録解除、サイズ変更、再登録(または別のファイルを作成して古いファイルを削除)する必要があります。そのため、スワップパーティションと比較して、Linuxでのスワップファイルにはそれほどの利点はありません。主に、永続的なフィクスチャとしてではなく、一時的に追加の仮想メモリが必要なときに役立ちます。
スワップパーティションは、アドレス可能なメモリプールのみが必要な場合にファイルシステムへの依存を回避するため、優先される可能性があります。
ただし、スワップパーティションの代わりに、またはスワップパーティションに加えて、スワップファイルを使用することを妨げるものはありません。
ファイルを作成します。
dd if=/dev/zero of=/extraswap bs=1M count=512
ファイルの内容を初期化します:
mkswap /extraswap
これを使って:
swapon /extraswap
動作したかどうかを確認します。
free -m
起動時に常にスワップファイルの使用を開始するには、/ etc / fstabを編集して追加します
/extraswap swap swap defaults 0 0
[1] http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/custom-guide/s1-swap-adding.html
moreswap
突然余分なスワップスペースが必要になった場合に、私がずっと使用していたターミナルでの入力に役立つエイリアス:alias moreswap='swapfile=`mktemp /tmp/swapXXXX` && sudo touch $swapfile && sudo dd bs=512 count=1M if=/dev/zero | tee $swapfile | pv -s 512M && sudo mkswap $swapfile && sudo swapon $swapfile'
おそらく主な理由は、メインカーネルのディスクへのサスペンドがスワップファイルで機能しないことです。たとえば、Debian wikiの指示は、uswsusp
必要な場合にインストールすることです。
最近ではbtrfs
、ファイルシステムがの場合、スワップファイルは機能しないため、ディストリビューションが常にスワップをパーティションとして作成するのが最も簡単です。
スワップ用のファイルを使用すると、カーネルバージョン2.6より前のパーティションよりもパフォーマンスが低下する可能性があることは漠然と述べられています。 https://www.kernel.org/doc/gorman/html/understand/understand014.html#text15
完全を期すために、独自の回答を追加します。
@Gillesが言ったように、スワップファイルは休止状態には使用できません。スワップファイルを使用する場合、システムはスワップファイルのヘッダーを見つける必要がありますが、これを行うには、スワップファイルを含むファイルシステムをマウントし、ジャーナルファイルシステム(ext3、ext4、基本的にLinuxが使用するすべての最新のファイルシステム) -ディスクからの再開中にマウントできません。(実際には、そうする方法がありますが、かなり面倒です。)
ソース:https : //www.kernel.org/doc/Documentation/power/swsusp-and-swap-files.txt
これは主に、パーティションにあるデータへのアクセス時間が短いためだと思います。スワップファイルのポイントは、システム管理者が実際にRAMを使い果たしており、システムをクラッシュさせる可能性のある巨大な操作を実行する必要がある場合に役立ちます。この場合、彼は必要に応じて散発的にスワップファイルを作成します。
しかし、とにかくあなたはそれらの両方を持つことができます。