web-dev-qa-db-ja.com

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

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

32
Cheng

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

スワップファイルの利点は、サイズを事前に決定する必要がないことです。ただし、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

28
Penz

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

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

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

2
dr_

おそらく主な理由は、メインカーネルのディスクへのサスペンドがスワップファイルで機能しないためです。たとえば Debian wiki の説明では、必要に応じてuswsuspをインストールします。

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

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

1
sourcejedi

主にパーティションにあるデータへのアクセス時間が遅いためだと思います。スワップファイルの要点は、システム管理者がRAMから出て、システムをクラッシュさせる可能性がある巨大な操作を実行する必要がある場合です。この場合、散発的にスワップを作成します。必要なときにファイル。

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

0
Bacon