仮想化の最大のメリットは、通常、サーバーの使用率が向上すると言われています。
しかし、なぜそのために仮想化が必要なのですか?
使用頻度の低いN台の物理サーバーを入手したとします。これらのNサーバー上のすべてのアプリを1つの物理サーバーに結合しないのはなぜですか?このようにして、仮想化によるパフォーマンスの低下は発生しません。
この場合、仮想化は私に何をもたらしますか?
この場合、仮想化は私に何をもたらしますか?
要件と依存関係が異なる2つの別々のものを実行する機能。これらの要件が矛盾する場合は特に価値があります。たとえば、Windows 2000サーバーでのみ実行される古いエンタープライズアプリがあり、Windows 2008 .Netフレームワークなどを必要とする新しい光沢のあるアプリケーションがあるとします。これら2つのアプリケーションは、同じOS内では実行できません。 、ただしVMを使用すると、同じハードウェアで実行できます。
さまざまなサービスのメンテナンスサイクルが異なる場合に役立ちます。多くのVMを使用すると、セカンダリDNSサーバーを更新/再起動できますVM大きな影響はありません。ただし、そのDNSサーバーがファイルサーバー、プリントサーバー、メールサーバーなどでもある場合は、スケジュールを設定します。その更新ははるかに困難になります。
仮想化は、これらのアプリケーションを分離するのに最適です。
アプリケーションをすべて同じサーバーにインストールできない場合や、セキュリティ上の理由から、アプリケーションを同じサーバーにインストールしたくない場合があります。ハッキングされた場合は、その1つだけがハッキングされます。
他の人のためにアプリケーションをホストしていて、各人に独自の「マシン」を提供したいと思うかもしれません。
同じサーバーが10台あり、ほとんどの場合1台しか必要ない場合もありますが、負荷が高くなると、さらにいくつか必要になる場合があります。これにより、さらに9台のサーバーを起動する必要がなくなり、すべてが1つ(またはいくつかの仮想サーバー)で統合されて実行されます。
仮想化を使用する理由はたくさんあります(おそらく、仮想化を使用しない理由も同じくらいです)。
IMHO、仮想化の最大のメリットはisolationです。
Nセットのアプリケーションすべてをまとめるというあなたの考えには、あらゆる種類のリスクがあります。突然、再起動が必要なパッチが必要になった場合はどうなりますか?パッチを適用してから、他のすべてを再起動します。複数のVMを使用する場合は、1つだけを再起動します。 1つのアプリがRHEL5.2で最適に動作し、別のアプリがSuse 10.0を好む場合はどうなりますか?あるアプリがOracleのバージョンXを絶対に必要とし、別のアプリがバージョンXを絶対に使用できない場合はどうなりますか? (私たちは皆、この種のことを見てきました!)。
1つの物理システムを使用してN個のアプリケーションセットを実行できることは、前述のアプリが相互に干渉する可能性がない(または少なくとも非常に可能性が低い)場合に大きなメリットとなることがよくあります。
以前は、アプリ「A」にサーバーの再起動が必要な場合、アプリ「B」にペナルティが課されないため、アプリはサイロ化されていました。そうは言っても、ますます多くのアプリケーションがより回復力のある/分離されているため、サーバーの再起動が必要になる可能性は低くなっています。その考え方の問題は克服するのが難しいです。
仮想化環境を実行することで、セキュリティ上のメリットが認識されます。
1960年代以降、安全なOSの作成に失敗したという認識があり、ある仮想化環境が別の仮想化環境に干渉できない安全な仮想マシンを突然作成することができます。もちろん、これはナンセンスです。実行中の2つのプロセスを相互に完全に保護するCPUを作成することすらできません。
より複雑でより多くのコード行は、単により多くのバグを意味します。
コンパイル/テストの目的でクリーンな環境が必要な場合、仮想マシンは追加のハードウェアの購入を回避するのに便利ですが、それは実際にはその範囲です。多くの場合、適切に設計されたアプリケーションは、説明したとおりに実行できます。各アプリケーションは、OSがアクセスできるリソースを決定する独自のユーザーIDで実行されます。