SSDではなくHDDにスワップパーティションを配置する必要があることを読みました。
私の質問は次のとおりです。
- ディストリビューション(または他のもの)はいつ、どのようにスワップパーティションを見つけるために「検査」を実行しますか?
- 起動中に発生しますか?
- 利用可能なすべてのディスクを確認し、「スワップ」フラグを持つパーティションを検索しますか?
- そのようなパーティションが複数ある場合はどうなりますか?
- また、同じディスクで2つの異なるディストリビューション(FedoraやUbuntuなど)を実行している場合は、いくつのスワップパーティションが必要ですか?
答え1
静的に構成されたスワップスペース(ほとんどのディストリビューションで使用されるタイプ)は、ファイルシステムの/etc/fstab
ように構成されます。
一般的な項目は次のとおりです。
UUID=21618415-7989-46aa-8e49-881efa488132 none swap sw 0 0
フラグフィールド(4番目のフィールド)でそれを表示または指定することもできますdiscard
。nofail
これらの各ラインはスワップ領域に対応する。持つパーティションとしてスワップファイルまたはフルスワップディスクを持つことができます。
非常に特別なケースでは、スワップ領域を動的に構成することもできますが、これはメモリ管理に関連する問題の動作を引き起こす可能性があるため、非常にまれです。この場合、構成は実行時に必要に応じてスワップファイルを作成してアクティブにするユーザースペースコンポーネントによって完全に処理されます。
どのくらい必要なのかは、答えるのが複雑な質問です。ただし、他のディストリビューションをアイドル状態にして、1つのディストリビューションを実行できるようにしたくない限り、実行しようとしているさまざまなLinuxディストリビューションの数はこれに影響しません。システムを台無しにするのは非常に簡単な方法なので、これをしたくありません。)
Fedora、OpenSUSE、Linux Mint、Debian、Ubuntuなど、ほとんどすべての主要ディストリビューションに対してインストーラを実行すると、システムの既存のスワップパーティションを検出して使用するディストリビューションに追加します。 (手動でパーティションを選択しない限り)ほとんどの場合、システムは合理的な方法で構成されます。
それ以上に、ディスクが多いサーバーシステムについて話していない限り、個人的に複数のスワップパーティションを避けることをお勧めします。そのような場合でも、正しく動作するように設定するには、何をしているかを知る必要があります。 。
答え2
たとえば、FedoraとUbuntu?
...これは両方ともシステム化されたオペレーティングシステムです。
システムオペレーティングシステムでは何が起こりますか?
基本メカニズム
Systemd はさまざまな種類の単位を使用します。 .mount
ユニットファイルはボリュームのマウントを指示します。 .swap
単位ファイルは、スワップパーティションについてカーネルに通知する内容を表します。 (.service
ユニットファイルはサービスの実行方法を示します。など)これは基本的なsystemdメカニズムです。これを実装するために、systemd自体は関連するシステムコールを実行する子プロセスをフォークします。
そのオペレーティングシステムでsystemdコマンド(with)を使用すると、systemctl
ロードされたデバイスに関する情報が表示されます。たとえば、--all
.swap
dev-disk-by\x2dpartuuid-40549710\x2d05.swap ロードアクティブアクティビティ/dev/disk/by-partuuid/40549710-05 dev-disk-by\x2duuid-1bb589e8\x2d929f\x2d4041\x2d81f4\x2dff2b339b4e2a.swap アクティブなアクティビティのロード /dev/disk/by-uuid/1bb589e8-929f-404 dev-sda5.swap ロードアクティブアクティブ /dev/sda5
.mount
また、デバイスに関する情報もお知らせします。
xeが、、、および他のユニットファイルを直接作成できるように、システム管理者は実際に.swap
これらのユニットファイルを直接作成できます。 systemd自体は、ファイルシステム内の単位ファイルを探します。それらは基本的なメカニズムです。.service
.socket
これらのユニットファイルに何があるのか、ファイルシステムがそのファイルを見つけることができる場所を表示するようにsystemdに要求することもできます。
$systemctl cat dev-disk-by\\x2duuid-1bb589e8\\x2d929f\\x2d4041\\x2d81f4\\x2dff2b339b4e2a.swap # /run/systemd/generator/dev-disk-by\x2duuid-1bb589e8\x2d929f\x2d4041\x2d81f4\x2dff2b339b4e2a.swap #systemd-fstab-generatorによって自動的に生成される [単位] ソースパス=/etc/fstab ドキュメント=man:fstab(5) man:systemd-fstab-generator(8) 【交換】 何=/dev/disk/by-uuid/1bb589e8-929f-4041-81f4-ff2b339b4e2a オプション=sw $
ユニットファイルの自動生成
人々は手書きできます。 通常ただし、これらのファイルと.mount
ユニット.swap
ファイルは、次のファイルによって生成されます。発電機。そのようなジェネレータの2つはsystemd-fstab-generator
およびですsystemd-gpt-auto-generator
。どちらもブートプロセスの最初に実行され、systemctl daemon-reload
コマンドに応答し(上記のように)、デバイスファイル全体を/run/systemd/
.system自体にロードします。生成されたユニットファイルのみを使用。
古いジェネレータは、/etc/fstab
ファイル形式を認識する複数のシステム拡張子を読み込みます。私の答えの説明で指摘したように、スワップパーティションは伝統的に設置タイプこれはsw
、他のオペレーティングシステムがこのテーブルのスワップレコードを認識することを発見した方法です。しかし、Linuxソフトウェアは識別のための別のアプローチをとります。VFSタイプswap
代わりにVFSタイプを見つけます。systemd-fstab-generator
ここでも例外ではありません。これは/etc/fstab
基本的なメカニズムに変換するときに解釈される方法です。
後者ジェネレータは、EFIシステムパーティションを持つ同じディスク上のEFIパーティションテーブルを処理して、よく知られているさまざまなEFIパーティションテーブルがあるエントリを見つけます。パーティションタイプGUID。これらのGUIDの1つは、Linuxスワップパーティションに割り当てられた既存のGUIDです。systemd-gpt-auto-generator
そのGUIDを持つパーティションが見つかると(systemd docoで提供されている基準を満たす)、その.swap
単位が作成されます。/etc/fstab
全く関与しない。
もちろんこの過程には副作用が多い。たとえば、/etc/fstab
テーブルに主キーがないため、レコードに重複した「仕様」および「ファイル」(例:「何」や「場所」)フィールドがある場合があります。ただし、デフォルトのsystemdメカニズムでは、「ファイル」(たとえば「場所」)フィールドは、デバイス名.mount
に含まれるデバイスの一意のキーです。両方.mount
のユニットが共有できません。デバイスの場合、.swap
「仕様」(たとえば「コンテンツ」)フィールドはデバイスの一意のキーです。両方.swap
のユニットがそれらを共有できません。したがって、すべてのレコードが必ずしも/etc/fstab
基本メカニズムに変換されて機能するわけではありません。特に、人々が2つの異なる目的で同じマウントポイントをリストしたり、2つの異なる方法で同じスワップパーティションをリストしたりするなどのタスクを実行する場合は、さらにそうです。
/etc/fstab
同様に、基本メカニズムとsystemdの基本メカニズムに変換されたためユニットを起動する他の方法があります、システムではなくオペレーティングシステムとは若干異なる動作をします。デフォルトでは、.mount
単位は次のとおりです。自動起動systemd-udevd
、起動後もマウントされたストレージデバイスがあれば応答します。あるいは、1つWants=
、Requires=
一部.service
、または単位としてリストすることもできます.socket
。これは、アクティブになると(再)アクティブになることを意味します。でもRequiresMountsFor=
。
インストーラとシステム化方法
通常、sw
エントリはオペレーティングシステムのインストーラと後でシステムを再設定するシステム管理者によって作成されました/etc/fstab
。これがネイティブ.mount
と.swap
ユニットが最終的に自動的に生成される方法です。インストール/設定ユーティリティは、システム管理者がユーザーインターフェイスからいくつかの項目を選択してマッチを記録するため、スワップファイルがある場所を「知っています」/etc/fstab
。時々このオプションはインストール中にスワップパーティションを作成する必要があります。;時々ディスク上のスワップパーティションを使用してください。(インストールプログラムはパーティションタイプも確認します)。
しかし、システムを持つ人々は次のような考えを持っていました。オペレーティングシステムは、いわゆる本質/etc
的に空のツリーで自動的に設定できます。無状態システム、EFIパーティションテーブルを読み取るためのジェネレータなどのメカニズムがすべてです。システム化された人の計画には永続的な/etc/fstab
構成データはまったくありません/etc
。これはすべてディスクのパーティションテーブルの内容から推論、すべてのブートローダおよびすべてsystemctl daemon-reload
。書かないで/etc/fstab
。
もちろん、従来のシナリオでは、各オペレーティングシステムが独自のプライベートスワップパーティションを持ち、互いのスワップパーティションに触れないようにすることができます。実際に、スワップパーティションを介して休止状態を使用してディスクを焼き、休止状態の間に別のオペレーティングシステムで複数回起動できるようにしたい場合(これはとても悪い考えなぜならこれにより、ファイルシステムが簡単に破損する可能性があります。)必要です。
systemdシナリオでは、オペレーティングシステムがまだsystemdの人々が想像しているように「状態の非保存」状態でない場合でも、前述のジェネレータが実行されます。みんなすべてのシステムオペレーティングシステムは、必要なパーティションタイプを持つスワップパーティション(ESP /ルートディスク)を自動的に使用します。自動的に検出されたすべてのスワップパーティションを共有するため、実際にインストールされている各オペレーティングシステムに対してスワップパーティションを作成する必要はありません。
追加読書
- https://unix.stackexchange.com/a/332797/5132
- https://unix.stackexchange.com/a/233581/5132
- Lennart Petlinget al。 (2016).検索可能なパーティション仕様。 freedesktop.org.
- Lennart Petlinget al。 (2017).
systemd.swap
。 システムマニュアルページ。 freedesktop.org. - Lennart Petlinget al。 (2017).
systemd-fstab-generator
。 システムマニュアルページ。 freedesktop.org. - Lennart Petlinget al。 (2017).
systemd-gpt-auto-generator
。 システムマニュアルページ。 freedesktop.org. - レナート・ペトリング(2014-06-17)。工場初期化、無状態システム、反復可能システム、検証可能システム。 0pointer.net.
- レナート・ペトリング(2014-09-01)。Linuxシステムの構成方法の見直し。 0pointer.net.
- レナート・ペトリング(2017-06-28)。mkosi — オペレーティングシステムイメージ生成ツール。 0pointer.net.
答え3
歴史的に、スワップパーティションは/etc/fstab
タイプのエントリとして指定されましたswap
。起動時に起動プロセスはこのファイルを読み取り、この設定をカーネルにプッシュします。
項目の例は次/etc/fstab
のとおりです。
/dev/sdb none swap sw 0 0
私はスワップがどのように管理されているかよくわかりませんが、systemd
最終結果は同じだと思います。ユーザースペースプロセスはスワップに割り当てられたスペースを知り、ユーザースペースプロセスはカーネルに通知します。
答え4
他のすべての回答には、起動時にスワップファイルシステムを指す方法が記載されています。
しかし、他の答えに追加する必要があるいくつかの点があります。
- スワップスペースはファイルでもかまいません。
- スワップ空間パーティションは、通常0x82タイプで表されます。
- 1つをインストールできます交換ランタイムのどの時点でもスペースがあります。
- 後でスワップ領域として認識され、使用/マウントできるようにパーティション/ファイルを表示/初期化するには、次のコマンドを使用する必要があります
mkswap
。 - スワップパーティション/ファイルを手動で有効/使用するには、次のコマンドを使用できます
swapon
。 - もう一度申し上げますが、この機能をオフにするにはを選択します
swapoff
。