Linuxでスワップされるファイルシステム


14

Linuxでは、パーティションにext3やreiserfsなどを選択できます。スワップパーティションには、「スワップ」を選択します。これは実際にはどのファイルシステムですか?ext3パーティションを作成して、それをスワップパーティションにすることはできますか?それはどう違いますか?


Linux上のスワップファイルシステムは、Linuxスワップファイルシステムと呼ばれるようです。それについての本当の情報を見つけることができたら、答えを投稿します。これまでのところ、en.wikipedia.org / wiki / Pagingから、カーネルがスワップファイルのファイルシステムをバイパスすることを読みました。スワップパーティションでも同じことが言えます。
-AndrejaKo

1
Gentooフォーラムのすばらしい人々がこのリンクを提供してくれました!すべてがうまく説明されているようです。ああ、ありがとうJohn R. Graham
-AndrejaKo

回答:


26

スワップは実際のファイルシステムではありません。これは、特別な構造のない生のアドレス可能なメモリであるディスクの予約部分にすぎません。

mkswapは、追加情報を含むスワップ領域のヘッダーを作成します。util-linux-ngパッケージのswapheader.hから:

struct swap_header_v1 {
    char         bootbits[1024];    /* Space for disklabel etc. */
    unsigned int version;
    unsigned int last_page;
    unsigned int nr_badpages;
    unsigned int padding[125];
    unsigned int badpages[1];
};

ヘッダーバージョン1は現在使用されています。スワップの生の構造の背後にあるすべての魔法についてです。


パーティションにとって意味のある何かを読み書きするために、何らかの種類のファイルシステムが必要ではないでしょうか?
tony_sid

5
いいえ。メモリの塊に対処するだけです。それがまさにページです。これは、権限と日付がデータとともに保存される実際のファイルシステムのように、複雑な構造や追加情報でデータを保存しないためです。
マティアスクル

6
ファイルシステムがない場合でも、ブロックのアドレスを指定できます。
マティアスクル

8

スワップパーティションにはファイルシステムが必要ないのは、その中にファイルやディレクトリがないからだと思います。スワップパーティションは仮想RAMの場所です。


2
それは正確に仮想ラムの場所ではありません。プロセスの仮想メモリにマップできるのは(RAMのような)メモリです。
マティアスクル

4

Linuxには、スワップパーティションとスワップファイルの2つの形式のスワップスペースがあります。スワップパーティションは、スワップ専用に使用されるハードディスクの独立したセクションです。他のファイルをそこに置くことはできません。スワップファイルは、システムファイルとデータファイルの間に存在するファイルシステム内の特別なファイルです。

スワップは、2つの重要な理由で必要です。まず、システムが物理的に利用可能なメモリよりも多くのメモリを必要とする場合、カーネルは使用されていないページをスワップアウトし、メモリをすぐに必要とする現在のアプリケーション(プロセス)にメモリを提供します。第二に、アプリケーションの起動段階で使用されるかなりの数のページは、初期化にのみ使用でき、その後は使用できません。システムはこれらのページをスワップアウトし、他のアプリケーションやディスクキャッシュ用にメモリを解放できます。


2
答えは本当に素晴らしく、問題の核心を説明していますが、「GNU / Linuxのスワップとは」という質問に対する答えです。ここで何をしているのでしょうか?また、リンク関連linux.com/news/software/applications/...
AndrejaKo

スワップとは何ですか。
tony_sid

...スワップファイルオプションについて知らなかった
MrCalvin

-1

スワップスペースを作成するには、ファイルシステムスワップとデバイス(またはraw)スワップの2つの方法があります。ファイルシステムスワップでは、ファイルシステム上にファイルを作成し、それをスワップスペースとして使用します(Windowsでpagefile.sysを使用するのと同じように)。デバイススワップでは、スワップ専用に作成したパーティションにスワップします。

どちらが良いですか:

この議論は、「昔」では以前よりずっと興味深いものになりました。

デバイススワップが「優れている」理由:rawパーティションにスワップしているため、inodeやその他のファイルシステムオーバーヘッドでファイルシステムの余分なオーバーヘッドをすべて処理する必要がないため、高速です

しかし今日、この議論は実際には成り立たない。最近のディスクアクセス速度の進化に伴い、デバイススワップはファイルシステムスワップよりも多くの時間を費やすことはありません。

ファイルシステムのスワップが「優れている」理由:サイズの変更がはるかに簡単です。パーティションサイズを変更すると、新しいファイルを作成するよりもずっと難しくなります。

しかし今日、多くの人がrawパーティションの代わりにLVMを使用しているため、スワップスペースの縮小と拡大は簡単です。

今日、それはさらに議論の余地があります:最近のほとんどのサーバーは、パフォーマンス上の理由から、メモリでいっぱいに接続するだけのコストの価値があります。(この議論は、RAMの入手が難しく、サーバーに4 GBから8 GBのRAMしか配置しないことが一般的だったため、以前よりずっと人気がありました)

FILESYSTEM SWAPを使用する理由(および一般的なスワップ)

最近では、4gigスワップのみでインストールするように指示し、すべてのLinuxインストールに同じconfig / imageを使用しています。Oracleのインストールには、より高いスワップの使用が必要なので、Oracleを使用するシステムでは、残りをファイルシステムスワップで作成します。アプリケーションにスワップ要件がある可能性があり、その場合は後でファイルシステムスワップを使用して追加できます。

これは役立ちますか?

私はここでLinuxでこれを行う方法の詳細な手順を持っています:http : //geekswing.com/geek/how-to-add-filesystem-swap-on-linux-and-unix-systems/


1
「しかし、今日、この議論は実際には成り立たない。最近のディスクアクセス速度の進化に伴い、デバイススワップはファイルシステムスワップよりも多くの時間を節約できません。」–これは理由ではありません。ここでの考え方は、スワップスペースがすぐに必要になる可能性があるということです。ファイルシステムを通過するには、ディレクトリ、ブロック、iノード、バッファキャッシュなどが含まれます。これらは、より多くのメモリを必要とするコードパスであり、ループにつながります。そのため、スワップはrawブロックデバイスで行うのが最適です。また、スワップファイルの断片化も回避します。
ミラビロス14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.