サーバ仮想化によりこの限界を大きく緩和できる。1台の物理サーバ上で複数のOS(たとえば、UNIXとWindowsとLinux)や異なるバージョンのOS(たとえば、Windows NT 4.0とWindows Server 2003)を同時に稼働できるからである。また、アプリケーション間の相互影響も軽減できる。重要な本番系アプリケーションと他のアプリケーション(たとえば、開発業務)を別の仮想マシン上で稼働すれば、本番系アプリケーションのパフォーマンスへの悪影響を最小化することができる。
また、処理能力の要求の変化に応じて、仮想マシン間で資源の再配分を行うこともできる。16CPUのサーバマシンを2つの仮想マシン(それぞれが8CPUを活用)に分割して、本番アプリケーションとテストアプリケーションを稼働していたとする。期末のピーク時には本番アプリケーションを12CPUで、テストアプリケーションを4CPUで稼働するように設定変更を行うことができる(システム環境にもよるが、リブートなしでこのような変更をできる場合もある)。
つまり、ハードウェアの変更なしに、処理能力の調整作業が可能となるのである。これは、単に物理的なサーバを複数台稼働するだけでは実現できないメリットだ。
サーバ仮想化の実現方式には、いくつかの種類がある。メインフレームやハイエンドのUNIXサーバではハードウェアによる実装が行われていることが多い(これは、区画分割(パーティショニング)と呼ばれることが多い)。
一方、ソフトウェアによる実装も普及してきている。VMware、オープンソースのXen、マイクロソフトのVirual PCなどの製品がある。また、メインフレームやUNIXサーバ上では、ハードウェアベンダーが自社独自の仮想化ソフトウェアを提供しており、ハードウェアの区画分割機能と適材適所で活用できるようになっている。
もちろん、仮想化にも考慮点はある。仮想マシンを作り出すためには、余分な処理オーバーヘッドが必要となる。しかし、今日のハードウェアの価格性能比の向上を考えれば、それよりも運用管理コスト削減のメリットの方が大きいことが多い。
なお、デスクトップ機での仮想化テクノロジーの活用も基本的には同様だ。上記のVMwareやXenに加えて、マイクロソフトが提供するVirtual PC、Intel Mac環境向けのParallels Desktopなどの製品が提供されている。また、IntelのVT(Virtual Technology)やAMDのPacific(コード名)のように、CPUレベルで仮想マシンをアシストする機能を追加する動きも見られる。
では、一台の物理的サーバを複数の仮想マシンに分解するのではなく、複数サーバをたばねて1台のマシンのように見せる仮想化はないのだろうか?
たとえば、グリッドはこのような仮想化の一種であるということができる(ただし、仮想化という言葉使いがされることはあまり多くない)。しかし、現実にはトランザクション処理などの典型的な企業コンピューティングの処理を大規模なグリッド上で稼働することは難しい。これらの処理は基本的にI/O中心型であり、データへのアクセスの遅延やロックのオーバーヘッドの解消が困難だからである。
サーバの仮想化に加えてストレージの仮想化も重要性が高まりつつある。ストレージの仮想化とは、複数の物理ディスクをあたかも巨大なひとつのディスク空間があるかのように見せてくれるテクノロジである。
ユーザーは物理ディスクの境界を意識することなく、大容量のディスクスペースを必要に応じて割り当てて使えるというメリットを得られる。一方、1台の物理ディスクを複数の論理ディスク(パーティション)に分割することも、原理的には仮想化と呼べるが、この場合に仮想化という言葉が使われることはまずない。用語の使い方という点では一貫性が欠けるが、慣例上しかたがないと考えるべきだろう。