複数の仮想マシンのLinuxシステムが同じスワップパーティションを共有できますか? [コピー]

複数の仮想マシンのLinuxシステムが同じスワップパーティションを共有できますか? [コピー]

複数のシステム間のディスク容量を節約し、同じスワップパーティションを再利用しようとしています(大丈夫です)。

私は現在複数の仮想マシンで作業しており、Linuxスワップとして使用するためにファイルシステムを別のドライブに転送することを検討しています。

同じスワップパーティションに両方のシステムをインストールすることは可能ですが、これは問題を引き起こす可能性があります。アプリケーションがマップされ、競合しないため、オペレーティングシステムの識別子もマップされますか、それともアプリケーションマッピングの一部ですか?

よりストレスの多いシナリオは、複数の仮想マシンが実行されている場合です(一時停止され、同時にアクティブに実行されない可能性があります)。

確かに:

  1. 仮想マシン1の起動
  2. 仮想マシン 1 一時停止
  3. 仮想マシン2の起動

どちらも同じスワップファイルを共有します。休止状態なしで以下を見た場合:FreeBSDとLinuxの共有パーティションしかし、答えはこれが証明されていないことを示唆しています。また、他のOS /カーネルバージョンと競合しているかどうかを知る必要があります。

ベストアンサー1

私はそれが可能であることを知っていると思いますが、おそらくお勧めできません。 3つの仮想化技術のレビュー:

  • 仮想ボックス
  • 仮想マシンソフトウェア
  • キーボード仮想マシン

最初の2つ(VirtualBoxとVMWare)では可能です。

これはKVMでも可能ですが、いくつかの注意事項があります。最新バージョンのRHELを使用している場合は、新しいテクノロジが呼び出されます。KSM - カーネルと同じページをマージするデプロイされ、同じページをVMゲスト間で共有できますが、メモリに「固定」され、交換できません。

抜粋KVM(カーネル仮想マシン)KVMのベストプラクティス

KSM共有メモリページは固定されているため、システムは交換できません。

したがって、VMに独自のスワップがあり、これらのゲストページの1つをVMでスワップする必要がある場合、何が起こるのか不明になります。したがって、これを実行しても物理メモリは解放されないため(私の推測です)、VMのスワップ領域にあるディスクは無駄になり、物理RAMは引き続き使用されます。

さらに、すべてのVMが同じスワップ領域を使用することは、この理由で危険に見えます。スワップ領域がいっぱいになると、リソースが本質的に枯渇するため、すべてのVMが危険にさらされます。

抜粋KVMの乱用

KVM 仮想マシンは Linux プロセスなので、仮想マシンがアイドル状態であるか使用量が多い場合は、仮想マシンが使用するメモリをスワップ領域に配置できます。メモリは、スワップメモリ​​と物理RAMの合計サイズにコミットできます。仮想ゲストがRAM全体を使用している場合、問題が発生する可能性があります。 pdflushプロセスに置き換える仮想マシンプロセスに十分なスワップスペースがない場合、クリーンアッププロセスが開始されます。 pdflushは、システムがクラッシュしないようにメモリを解放するためにプロセスを終了します。 pdflush は仮想ゲストやその他のシステムプロセスを破壊し、ファイルシステムエラーを引き起こし、仮想ゲストの起動を妨げる可能性があります。

KVMスワップアウトプロファイリング

一つあるVMでメモリを構成する方法を説明するKVM Webサイトの素晴らしい記事そしてそれが結局どのように交換を活用するのか。 qemu-kvm v0.12用に作成されたため、そのバージョン以降にどれだけ変更されたかは不明です。

上のページから抜粋

スワップアウトパス

ここで、ホストがメモリ不足状態にあると仮定します。上記のページはLinux LRUを通過し、非アクティブリストにあることがわかりました。カーネルは次のページを返すことにしました。

  1. ホストカーネルはrmap構造を使用して、ページがマップされているVMA(vm_area_struct)を見つけます。

  2. ホストカーネルはVMAに関連付けられているmm_structを検索し、Linuxページテーブルに沿ってページのホストハードウェアページテーブルエントリ(pte_t)を探します。

  3. ホストカーネルはページを交換してpte_tを消去します(ページが1つの場所でのみ使用されると仮定します)。しかし、ページを公開する前に。

  4. ホストカーネルはmmu_notifier informate_page()を呼び出します。 NPT / EPT構造内のページ項目を見つけて削除します。

  5. これで、ページへのすべての後続のアクセスがホストに置き換えられます(上記のエラーパスの(2))。

したがって、上記のことは、ゲストVMのメモリページを交換する必要があるときにホストでこれを行うことです。ただし、これはゲスト仮想マシンがすべてのRAMを消費するのではなく、ホスト全体がすべてのRAMを消費する場合です。

KVMでスワップを使用する必要がありますか?

はい。システムに多くのVMがあり、過剰にプロビジョニングされている場合は、すべてディスクにアクセスできるため、ディスクに多数のI / Oが作成されることを理解している限りです。 。これを見て詳細についてはServerFaultの問題

おすすめ記事