KVM / libvirtホストとゲスト間で共有されるLVMボリュームグループ:これは悪い考えですか?


12

4つのSATA IIハードドライブを搭載し、CentOS 5.5 x86_64を実行する、光沢のある新しいKVM / libvirtベースの仮想マシンホストを構築しました。

ディスクをqcowイメージとして作成する通常のプラクティスの代わりに、libvirtストレージプールとして管理されるLVMボリュームグループに論理ボリュームとして仮想マシンディスク作成することにしました

私が決められないのは、VMホストのボリュームグループに仮想マシンの論理ボリュームを作成するか、専用のボリュームグループに作成するかです。

どの方法を選択する必要があり、なぜですか?


方法1:VMホストのボリュームグループを使用する

実装:

  • ファイルシステムmd0を含む小さなRAID1/boot
  • md1LVMボリュームグループを含む残りのスペースを占める大きなRAID10 vghostvghostVMホストのルートファイルシステムとスワップパーティションが含まれます
  • vghost必要に応じて、仮想マシンディスクを論理ボリュームとして作成します

長所:

  • VMホストのルートファイルシステムがスペースを使い果たした場合、vghost比較的簡単により多くのスペースを割り当てることができます
  • システムはすでに稼働しています(ただし、最初からやり直すことは大したことではありません)

短所:

この方法が機能しているように見えるという事実を無視して、これが何らかの形で悪い考えであるという感覚を揺るがすことはできません。私はそのように感じる:

  • これは何らかの形でセキュリティリスクになる可能性があります
  • 将来のある時点で、セットアップに何らかの制限があり、専用のグループを使用したい
  • システム(CentOS、libvirtなど)は実際にはこのように使用するように設計されていない可能性があるため、ある時点でVMホストのファイルやファイルシステムを誤って破損/紛失する可能性があります

方法2:専用のボリュームグループを使用する

実装:

  • 方法1 md0と同じmd1。ただしmd1、VMホストを収容するのに十分な大きさにする(5〜10GBなど)
  • md2残りのスペースを占める大きなRAID10 。論理ボリュームが仮想マシンによって排他的に使用されるmd2LVMボリュームグループを含むvgvms

長所:

  • vgvmsホストOSを壊すことを恐れずにいじることができます
  • これはよりエレガントで安全なソリューションのようです

短所:

  • VMホストのファイルシステムがスペースを使い果たした場合、そのファイルシステムの一部(たとえば、/ usrまたは/ var)をvgvmsに移動する必要があります。
  • ホストOSを再インストールする必要があります(以前に述べたように、実行することはあまり気にしません)

更新#1:

方法2でVMホストのディスク領域が不足することを心配する理由の1つは、VMホストがすべてのサービスを仮想マシンで実行できるほど強力かどうかわからないためです。一部またはすべてのサービスを仮想マシンからホストOSに移行する必要がある場合があります。

VMホストのハードウェア仕様:

  • Phenom II 955 X4 Black Editionプロセッサー(3.2 GHz、4コアCPU)
  • 2x4GB Kingston PC3-10600 DDR3 RAM
  • Gigabyte GA-880GM-USB3マザーボード
  • 4x WD Caviar RE3 500GB SATA II HDD(7200rpm)
  • Antec BP500U Basiq 500W ATX電源
  • CoolerMaster CM 690ケース

更新#2:

方法1でシステムがホストVGをlibvirtストレージプールとして使用するように設計されていないように思える理由の1つは、virt-managerで気づいたいくつかの動作です。

  • 追加時に、VGをアクティブにできないと不平を言いました(明らかに、ホストOSがすでにアクティブにしているため)
  • 削除時に、VGを非アクティブ化できなかったため(ホストOSがまだルートおよびスワップLVを使用しているため、そうすることを拒否しました)

質問(#272324)で、あなたのソリューション#1が非常に良い答えだったと思います!そして、これはまさに私が似たような設定で行ったものです-そして、私はこれまでのところそれでかなり満足しています。ただし、ホスト内の同じLVを「ループマウント」する場合よりも、ゲスト内のdiskIOがかなり遅いという問題があります。
stolsvik

回答:


3

よく考え抜かれた質問!

方法2を使用しますが、それは個人的な好みです。私にとって、方法2の短所はそれほど大きな問題ではありません。ホストOSが余分なものをインストールし始めない限り、ホストOSが5-10GBパーティションを超えて成長することはありません。シンプルさとセキュリティのために、ホストOSは実際には最小限のインストールである必要があり、管理に必要な最小限のインストール(sshdなど)以外は実行しないでください。

IMOの方法1の短所も実際には問題ではありません。ルート化されたVMが何らかの理由でパーティションから抜け出し、他のパーティションに感染/損傷する可能性がある場合、別のVGでホストOSを使用しても違いは生じない可能性があるため、余分なセキュリティリスクはないと思います。他の2つの短所は、直接の経験から話すことはできませんが、CentOS、LVM、およびlibvirtは、それらを心配しないほど柔軟で堅牢であると私は思います。

編集-アップデート1への対応

最近では、仮想化のパフォーマンスヒットは非常に低く、特にそれをサポートする組み込みのプロセッサを使用するため、ゲストVMからホストOSにサービスを移動する価値はないと思います。あなたは可能性がある「ベアメタル」上で実行することにより、10%の速度向上を得ることができますが、小さな、タイト、セキュアホストOSを持つことのメリットを失い、そして潜在的にサーバ全体の安定性に影響を与えるでしょう。価値がない、IMO。

これに照らして、私はまだ方法2を好むでしょう。

更新2への対応

libvirtがストレージのレイアウトを想定している特定の方法は、方法2を支持するもう1つのポイントのようです。私の推奨事項は、方法2に進みます。


ありがとう。質問に2つの更新を追加しました。これは、あなたが対処したいくつかの短所を挙げた理由をさらに説明しています。アップデートはあなたの意見を変えますか?
モスノ

@mosno:あなたの更新に応じて私の答えを更新しました。
スティーブン

皆さんの回答に感謝します。すべてが私に役立っており、誰の回答を受け入れるかを選ぶのは困難でした。Steven'sを選んだのは、質問に答えるために最善を尽くしていると思うからです。記録については、方法2の方がおそらく優れていることに同意しますが、方法1が有効であり、時間の制約があるため、方法1のままにすることにしました。
モスノ

1
また、この方法の限界を探求することは教育的だと思うので、私は今のところ方法1にとどまっています。たとえば、ゲストOSでデバイス(たとえば、パーティション/ dev / vda1ではなくdevice / dev / vda)にLVM PGを直接作成すると、ホストOSのpvscanがゲストのPVを一覧表示する(つまり、 / dev / vdaではなく、/ dev / vda1を使用してください)。
モスノ

1

常に1つのシステムのみが特定のLVを読み取り/書き込みモードで使用しようとする限り、ホストとゲストに同じVGを使用することが可能です。複数のシステムが同じLVに書き込もうとすると、ファイルシステムが破損します。


確かに、これを管理するための複雑さが増しています。それは賢い。多分賢すぎる。
Unix Janitor

@ user37899:これはLVMを処理する通常の方法です
ハビエル

感謝しますが、私はそれを理解しています。私はそうするつもりはありませんでした。
モスノ

ホストOSで「lvscan」を実行すると、ゲストのLVが「ACTIVE」として報告されます。ホストにはLVがマウントされていません。LVは単に「アクティブ」状態にあるだけで「読み取り/書き込みモード」を構成しますか、それともホストのファイルシステムへの明示的なマウントを意味しますか?
モスノ

明示的なr / wマウントを意味します。
イグナシオバスケス-エイブラムス

1

あなたはこれを見て、おそらくいじくり回し、このプロジェクトがあなたが話していることをどのように行うかを見てみたいかもしれません。

ProxmoxVEはベアメタルKVMホストであり、RHELのより重い対応物ではなく、libvirtのperl実装を使用します。両方のシナリオを実装します。

仮想ディスクは.rawおよびスパースで、.qcowと似ていますが高速です。

qcowおよびvmdkディスクイメージ形式もサポートされていますが、LVMの制限が関係していると思われます。私はそれらを使用しないので、それについてはあまり言えません。

LVMストレージはノード上のVM間で共有され、DRBDデバイスにすることができます。

OSのVGスペースの共有に関して、懸念される唯一の制限は、バックアップ中のスナップショットサイズです。ここで、この値は設定ファイルで変更でき、フォーラムで時々変更する必要がありますが、巨大な仮想ディスクであっても、デフォルトは数年前から役立っています。

PVEのLVMストレージの詳細:

http://pve.proxmox.com/wiki/Storage_Model#LVM_Groups_with_Network_Backing

これは、VGのレイアウト方法です。

メタデータタイプlvm2を使用してボリュームグループ「LDatastore1」が見つかりました

メタデータタイプlvm2を使用してボリュームグループ「LDatastore0」が見つかりました

メタデータタイプlvm2を使用してボリュームグループ「pve」が見つかりました

これらは私のLVです:

ACTIVE '/ dev / LDatastore1 / vm-9098-disk-1' [4.00 GB]継承

ACTIVE '/ dev / LDatastore1 / vm-7060-disk-1' [2.00 GB]継承

ACTIVE '/ dev / LDatastore1 / vm-5555-disk-1' [8.00 GB]継承

ACTIVE '/ dev / LDatastore0 / vm-4017-disk-1' [8.00 GB]継承

ACTIVE '/ dev / LDatastore0 / vm-4017-disk-2' [512.00 GB]継承

ACTIVE '/ dev / LDatastore0 / vm-7057-disk-1' [32.00 GB]継承

ACTIVE '/ dev / LDatastore0 / vm-7055-disk-1' [32.00 GB]継承

ACTIVE '/ dev / LDatastore0 / vm-6030-disk-1' [80.01 GB]継承

ACTIVE '/ dev / pve / swap' [3.62 GB]継承

ACTIVE '/ dev / pve / root' [7.25 GB]継承

ACTIVE '/ dev / pve / data' [14.80 GB]継承

これは、6 7200 rpm Seagate Barracuda SATAドライブで構成されたRAID10上のLVMです。

CPU BOGOMIPS:53199.93

正規表現/秒:824835

HDサイズ:19.69 GB(/ dev / mapper / LDatastore0-testlv)

バッファ読み取り:315.17 MB /秒

平均シーク時間:7.18 ms

FSYNCS / SECOND:2439.31

これは、VMが存在する前述の/ dev / pve / dataと同じVGである単一のIntel X25-E SATA SSD上のLVMです。

CPU BOGOMIPS:53203.97

正規表現/秒:825323

HDサイズ:7.14 GB(/ dev / mapper / pve-root)

バッファリングされた読み取り:198.52 MB /秒

平均シーク時間:0.26 ms

FSYNCS / SECOND:1867.56

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