Linuxがファイルではなくスワップパーティションを使用するのはなぜですか?


32

スワップファイルの方が柔軟性が高いようです。


1
Linuxでスワップファイルを使用できます。私は今、複数のマシンでそうしています。ただし、特別なものは使用せず、LVMではext4またはext4のみを使用します。暗号化も複雑なものもありません。NVMeマシン上でも、サスペンドとハイバネートはうまく機能しました。
コリーT

回答:


32

スワップファイルは、スワップパーティションよりも柔軟性がありますが、誤りやすいです。ファイルシステムのエラーにより、スワップファイルが破損する可能性があります。スワップファイルは、ファイルを移動または削除できないため、管理者にとっては面倒です。スワップファイルは、休止状態には使用できません。過去にはスワップファイルの速度がわずかに遅かったのですが、最近ではその差はごくわずかです。

スワップファイルの利点は、事前にサイズを決定する必要がないことです。ただし、Linuxでは、スワップファイルのサイズをオンラインで変更することはできません。登録解除、サイズ変更、再登録(または別のファイルを作成して古いファイルを削除)する必要があります。そのため、スワップパーティションと比較して、Linuxでのスワップファイルにはそれほどの利点はありません。主に、永続的なフィクスチャとしてではなく、一時的に追加の仮想メモリが必要なときに役立ちます。


4
過去にはパフォーマンス上の利点もありました。しかし、2.6がリリースされたときに終わったと思います。
xenoterracide

これは本当に質問に答えていないようです。それとも何か不足していますか?答えはスワップファイルについてのみであり、パーティションについてはまったく言及していません。@Gillesはそのように意図的でしたか、それとも単にタイプミスをしましたか?
ガベ。

1
@gabe:パーティションと比較してスワップファイルについて議論していました。うまくいけば、これがより明確になりました。
ジル「SO-悪であるのをやめる」

1
ペンツの答えで私のコメントをここに示します。スワップファイルのfsによって引き起こされるパフォーマンスの低下は意味がありません。
ata

2
Ubuntu Community Help Wiki help.ubuntu.com/community/SwapFaqによると、休止状態にはスワップパーティションが必要です。引用:「アクティブなファイルシステムではスワップファイルを使用できません。」また、パフォーマンスに関しては、ファイルがスパースでない限り違いはないようです。serverfault.com/questions/25653/...
エリックSjölund

28

スワップパーティションは、アドレス可能なメモリプールのみが必要な場合にファイルシステムへの依存を回避するため、優先される可能性があります。

ただし、スワップパーティションの代わりに、またはスワップパーティションに加えて、スワップファイルを使用することを妨げるものはありません。

  • ファイルを作成します。

    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


5
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'
Michael Mrozek

これは良い情報ですが、質問には答えません。
レスマナ

6
また、ファイルシステムのオーバーヘッドのビットは不正確です。一般的な考えに反して、スワップファイルを使用してもオーバーヘッドはゼロです。アンドリュー・モートンはここで簡単な説明をします。これは、swapspaceデーモンのような動的なスワップファイルベースのスワップマネージャを使用することが、適切に構成されている場合の優れたソリューションです。
ata

スワップファイルアプローチは、クラウドで実行しているときの唯一のオプションになり得ることを付け加えましょう。
ソリン

1

おそらく主な理由は、メインカーネルのディスクへのサスペンドがスワップファイルで機能しないことです。たとえば、Debian wikiの指示は、uswsusp必要な場合にインストールすることです。

最近ではbtrfs、ファイルシステムがの​​場合、スワップファイルは機能しないため、ディストリビューションが常にスワップをパーティションとして作成するのが最も簡単です。

スワップ用のファイルを使用すると、カーネルバージョン2.6より前のパーティションよりもパフォーマンスが低下する可能性があることは漠然と述べられています。 https://www.kernel.org/doc/gorman/html/understand/understand014.html#text15


1

完全を期すために、独自の回答を追加します。

@Gillesが言ったように、スワップファイルは休止状態には使用できません。スワップファイルを使用する場合、システムはスワップファイルのヘッダーを見つける必要がありますが、これを行うには、スワップファイルを含むファイルシステムをマウントし、ジャーナルファイルシステム(ext3、ext4、基本的にLinuxが使用するすべての最新のファイルシステム) -ディスクからの再開中にマウントできません。(実際には、そうする方法がありますが、かなり面倒です。)

ソース:https : //www.kernel.org/doc/Documentation/power/swsusp-and-swap-files.txt


0

これは主に、パーティションにあるデータへのアクセス時間が短いためだと思います。スワップファイルのポイントは、システム管理者が実際にRAMを使い果たしており、システムをクラッシュさせる可能性のある巨大な操作を実行する必要がある場合に役立ちます。この場合、彼は必要に応じて散発的にスワップファイルを作成します。

しかし、とにかくあなたはそれらの両方を持つことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.