複数のスワップファイルの目的は何ですか


28

ほとんどの(すべてではないにしても)Linuxディストリビューションのインストール中に、ハードドライブはデフォルトでスワップパーティションを含むようにパーティション分割されます。

この動作を変更することは可能です swapon -p priority

マニュアルページによると、優先度は次のとおりです。

PRIORITY
Each swap area has a priority, either high or low. The default priority is 
low. Within the low-priority areas, newer areas are even lower priority 
than older areas.
All priorities set with swapflags are high-priority, higher than default. 
They may have any non-negative value chosen by the caller. Higher numbers 
mean higher priority.

Swap pages are allocated from areas in priority order, highest priority 
first. For areas with different priorities, a higher-priority area is 
exhausted before using a lower-priority area. If two or more areas have the 
same priority, and it is the highest priority available, pages are 
allocated on a round-robin basis between them.

As of Linux 1.3.6, the kernel usually follows these rules, but there are 
exceptions

なぜ複数のスワップファイルが必要になるのでしょうか?
システム管理者が複数のスワップを構成することは一般的な習慣ですか?

回答:


47

スピンドルが1つしかない場合でも、複数のスワップ領域を持つことには多くの理由があります(ファイルである必要はありません)。

20-20後知恵:単一のスワップ領域を持つマシンを展開し、最終的にそれが十分ではないことに気付きました。あなたは意志でマシンを再デプロイすることはできませんが、できるオプションとなり、レイアウトパーティションをやり直すまで、別のスワップ領域(おそらくファイル)を作成します。

スワップ領域のサイズ変更または移動:スワップ領域のサイズを変更することはできません(Evan Teitelmanによると)。そしてswapoff、単にswapon十分なRAMがない限り、新しいスワップ領域を作成することはできません。スワップ領域をswapoff解放する前に、スワップアウトされたすべてのページをRAMに移動したい場合。あなたは、一時的なスワップ領域、作るように、swapoffすべてのページは、元のスワップパーティションのサイズを変更し、一時的なものに古いスワップ領域から移動してきたまで元、待ち時間を、mkswapそれが、その後、swapon1とリサイズswapoff一時的なもので。スワップされたページは、一時的なスワップ領域からサイズ変更されたページにコピーされ、完了です。スワップ領域を移動する場合、一時的な領域さえ必要​​ありません。mkswap新しいもの、swaponそれ、そしてswapoff 古いものとすべてが移動しました。

クレイジーな高速スワッピング:最新のディスクはゾーンビット記録を採用しています。ディスクの最初のゾーンが最速です。ディスクを測定し、ドライブの最初の最速ゾーンを正確にカバーするパーティションを作成することができます。これは、意図したスワップサイズよりも小さい場合があります。したがって、同じ手法を使用して、複数のディスクに複数のパーティションを追加します。

クレイジーな高速スワッピング、続編:または、ディスクの最速ゾーンがどこにあるかがわかれば、最初のゾーンに優先度の高いスワップ領域、2番目のゾーンに優先度の低いスワップ領域などを作成できます。すべての高速ディスクゾーンで負荷分散を行い、高速ゾーンを優先し、必要に応じて低速ゾーンをオーバーフローエリアとして使用します。

対称ロードバランシング:多数のスピンドル(サーバーなど)を備えた適切に構築されたシステムでは、複数のスワップパーティションがすべてのディスクの先頭を占有するのが好きです(ゾーンビット記録を利用するため)。これらはすべて同じ優先度を持っているため、カーネルはスワップの負荷を分散します。1つのスピンドルで100 MB / sが得られる場合がありますが、すべてのスピンドルでスワップすると、その倍数になる可能性があります。(ナイーブに言えば)

ボトルネックを意識した負荷分散:ただし、実際には、他のボトルネックが存在します。そのため、たとえば、16ディスクサーバーには4つの6 Gbps SATAポートがあり、それぞれに4ポートマルチプライヤと帯域幅を共有する4つのディスクがあります。これについて知っている場合は、ポート1〜4のディスク1が最高の優先順位を持ち、ポート1〜4の2番目のディスクが2番目に高い優先順位を持つようにスワップスペースを整理できます。ポートマルチプライヤ。

異なるパフォーマンスのデバイス間での交換:(Lukeによると)システムが真新しいサーバーではなく、長年にわたって有機的に成長している場合、他のデバイスよりもかなり高速なブロックデバイスが存在する可能性があります。最初に最速のデバイスに交換し、次に次の最速のデバイスに交換したい、などです。

サイズに関する考慮事項:David Kohen提供)すべてのスワップを1つのドライブに置くと、ドライブにいくつかのギグが残されます(これは2001年のシナリオのように聞こえますが、これが問題になる可能性のある古いまたは組み込みのデバイスがたくさんあります)。それをすべてのドライブに分割し、上記の他のすべての利点に加えて、ドライブあたりのディスクスペース使用量を改善します。スピンドルごとに2つのギグを失うことと、1つのディスクから300のギグを失うことです。

緊急事態:博士論文を提出するのに正確に96時間あり、最後の実験(あなたの名前の後にノーベル賞とファンキーな大/小文字混合物を得る可能性が高いもの)は印象的な速度で記憶を吸い取っています。スワップがほとんどなくなりました。メインスワップデバイスの優先度よりも低い優先度でスワップファイルを作成します。カーネルはそれをオーバーフロースワップスペースとして使用します。自動的にこれを行うためにswapdをインストールすることもできます。そのため、これらの巨大なemacsLaTeXの実行のために十分なスワップスペースも確保できます。

異なるメディア間でのスワップ Linuxはキャラクターデバイスにスワップすることはできませんが、物理的および仮想的な多くの異なるメディアがあります:SSD(注:おそらくSSDでスワップしたくないでしょう)、衝撃的な異なる種類のハードスピンディスク、フロッピー(はい、フロッピーで交換できます-いつでもUnixで足元を撃つことができます)、DRBDボリューム、iSCSI、LVMボリューム、LUKS暗号化パーティションなど(これらの超現実的で気が遠くなるようなレイヤーの組み合わせを含む) IEEE802.3ad集約イーサネット上のiSCSIを介したパラレルポートZIPドライブ上のLVM上のLUKSを交換しますか?問題ありません。これらはニッチなシナリオであり、ニッチな要件をサポートするためのものです。


おかげで、私はゾーンビットの録音に精通していません。スワップパーティションをプラッターの
物ggingいに

1
過去に、1つのディスクをスワップデバイスとして使用すると、スペースを使いすぎてディスクの残りの部分が役に立たなかったり、役に立たなくなったり、スワップスペースを複数のデバイスに分割したりするため、効果的ではないという歴史的な理由を付け加えます大きなスワップスペースとディスク上の使用可能な連続スペースの量との妥協点を提供しました。
ディディコーヘン

まだそうです。また、スワップがディスクの最速ゾーンを占有するようにしたい場合がありますが、それだけです。これにより、スピンドルごとにプレイするスペースが非常に多くなります。歴史的にはそうではありませんでしたが、ゾーン化されたHDDは「新しい」ものだからです。(「歴史的」の私のバージョンは、記憶が言葉で測定されたときです)
アレクシオス

「Unixを使えばいつでも自分自身を撃つことができる」ための+1 :
DUzun

3

複数の速度のディスクドライブ。最初に使用する高速なものをセットアップし、失敗した場合は遅いものをセットアップすることができます。


3

スワップファイルを(少なくとも、私が知る限り)拡張したり、使用中のパーティションをスワップしたりすることはできません。使用可能なスワップ領域を使い果たしそうな場合は、追加のスワップファイルを作成する必要があります。

また、システムに4GBのスワップスペースが必要で、2GBのストレージユニットが2つある場合、少なくとも2つのスワップ領域を使用する必要があります。

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