気の向くままに辿るIT/ICT/IoT
システム開発

仮想化ソフトウェア比較

ホーム前へ次へ
仮想化ソフトウェアにはどんなのがあるの?

仮想化ソフトウェア比較

仮想化ソフトウェア比較

 x86仮想化で利用できるオープンソースの仮想マシン作成・実行ソフトウェアであるQEMU、KVM/QEMU、Bochs、Xen、VirtualBoxVMware Player、Hyper-V、Virtual PC...etc.についてみてみようと思います。

仮想化比較

 OSの仮想化方法の1つとしてCPUを丸ごとエミュレートするタイプとホストOSのCPUを使って同一CPU(のOS実行環境)をエミュレートする方法があります。

CPU丸ごとエミュレート
Bochs
QEMU

 前者には、x86/IA-32のPC/AT互換機をエミュレートするBochsや各種マシンをエミュレートするQEMUがあり、CPU(実質マシン自体)を丸ごとエミュレートする為、Bochsでは、CPUの異なるマシン上であってもx86/IA-32のPC/AT互換機環境を、QEMUは複数のサポート済みCPU搭載マシン環境を異なるCPU搭載PCの仮想マシン上で実行することもできますが、何れにしてもエミュレートする際のオーバーヘッドが大きくなりがちという側面もある為、このタイプの仮想化ソフトウェアをリリースする企業・団体は今のところ多くありませんが、KVMやXenではQEMUをその一機能として利用しています。

 尚、当サイトで各種仮想マシンにおける各種ゲストOSを検証した際のテストマシンスペックであるデュアルコアCPU1.8GHz、RAM1GB程度だとVMware PlayerやVirtualBoxでは、ゲストOSの必要メモリは、256MBまでは快適、512MBではゲストだけ使う分には、まずまずですが、ぎりぎりのライン、一方、QEMUの場合、64MB以下程度ならサクサク動き、128MBでもまずまず快適ですが、256MBになると起動・起動後の挙動共に明らかに遅くなることからホスト環境としてデュアルコア、クアッドコアなどマルチコアCPUで且つRAMも2GB、更には4GBや8GB以上あれば、異なるCPU環境でも動作させられるBochsやQEMUという選択肢以外、検討する必要さえないかもしれません。

ハイパーバイザタイプ
Xen
Hyper-V
(VMware ESX/ESXi)
...etc.
ホストOSタイプ
VirtualBox
VMware Player
Virtual PC
(Parallels Desktop)
...etc.
独創的・中間的タイプ
KVM
...etc.

 仮想化の便宜上の分類方法の1つとしてマシン自体のOSも、仮想化したいOSも同じ様に管理するハイパーバイザ型とハイパーバイザをホストOS上のアプリケーションとして機能させるホストOS型があり、仮想化ソフトウェアによっては、これら2つに分類しきれない中間的、または微妙な存在のものもあります。

 何れにしてもハイパーバイザが介在することから広義ではホストOS型もハイパーバイザ型として定義(、その中で両者に分類)されているようです。

 ハイパーバイザとは、実質、スーパーバイザと言われるOS・カーネルよりも上位の管理者となる仕組み・機能であり、実機のマシンのOSと仮想化したいOSは、何れもハイパーバイザコールによって動作することから併存することになります。

準仮想化と完全仮想化

 仮想化には、ゲストOSに手を加えることなく実行可能な『完全仮想化』とゲストOSに若干手を加えることによって実行可能とする『準仮想化』があります。

 一部仮想化が難しい部分があるといわれるx86については、後にこれを解決すべく開発されたIntel-VT、AMD-Vと対応UEFIまたは、BIOSによってx86マシン上でx64 のゲストをも実行可能な『完全仮想化』が実現したといわれています。

仮想化ソフトウェアの種類

  • サーバ仮想化
  • クライアント(デスクトップ)仮想化

 IT/ICTにおける仮想化については広範囲に及びますが、C/Sシステムとしてみた場合の仮想化においてはサーバ仮想化とクライアント仮想化(デスクトップ仮想化)を挙げることができます。

  • サーバ仮想化

 サーバ仮想化においては機能ごとに分散していた物理サーバを仮想化した上でより少数のサーバに集約しようというものです。

クライアント(デスクトップ)仮想化
・サーバ上の仮想マシンをクライアントで実行
VDI/Virtual Desktop Infrastructure
プレゼンテーション仮想化
サーバで集中管理されるクライアントごとに用意された仮想マシンに接続
・クライアント上の仮想マシンを実行
仮想マシンは各クライアントで管理

 他方、クライアント仮想化とは、シンクライアントやデスクトップPCのOS上に仮想マシンを配備することでOSごと仮想化したり、仮想マシン自体をサーバに持たせてネットワークを通じてデスクトップ画面を転送、あたかもクライアント端末でOSが動作しているように見せるプレゼンテーション仮想化といったものを指します。

  • アプリケーション仮想化

 更にOSとは別にアプリケーション部分を仮想化、サーバからストリーミングまたは、サーバ上のアプリケーションをクライアントで実行することでOSやアプリケーションといったリソースをサーバ側で集中管理できるようにするのがアプリケーション仮想化です。

 クライアント仮想化の中でもプレゼンテーション仮想化、アプリケーション仮想化といった仕組みは、クライアントごとにインストールやアップデート、アンインストールなどを行う必要がなく管理がしやすくなります。

  • ネットワーク仮想化
  • ストレージ仮想化

 こうしたクライアントにおける仮想化は、時にネットワークブートやネットワーク仮想化、クライアントPCのストレージ(保存用ディスク)の仮想化にもつながります。

 ちなみにリモートデスクトップは、サーバやサーバに限らず、一方の端末から他方の端末のデスクトップを遠隔操作することを可能とする技術であり、仮想化とは若干異なります。

デスクトップ仮想化

 仮想化ソリューションの概要やサーバ仮想化(製品)等については別ページ(仮想化ソフトウェア動向)に記すとして、ここではC/Sシステムを忘れてデスクトップ環境に絞って仮想マシン作成・実行ソフトウェアの特徴を挙げてみると以下のようなことが言えるでしょう。

  • Xenは、ハイパーバイザタイプである為、ホストOSは存在せず、且つサーバ上での利用を想定したLinuxやBSD、UNIX等のサーバOS上でゲストOSとしてWindowsを含む他OSを実行可能、完全仮想化と準仮想化をサポート
  • BochsやQEMUは、CPU自体をエミュレートする為、ホストOSやゲストOSとして利用可能なOSは多彩、最新バージョンでホストOSとしてx86/x64をサポートするが、オーバーヘッドが大きい為、高スペックなホストマシンを要する
  • KVMは、ホストOSはLinuxでその一部としてQEMUを利用、完全仮想化と一部準仮想化をサポートし、ゲストOSは多彩、最新バージョンでホストOSとしてx86/x64をサポート
  • VirtualBoxは、ホストOS・ゲストOSともに多彩で最新バージョンでホストOSとしてx86/x64をサポート
  • VMware Playerは、ホストOS・ゲストOSともに多彩でx86/x64ホストOSをサポートするも最新バージョン(ver4含む以降)はWindowsに限っては、ホストOSはx64に特化
  • Virtual PCは、Virtual PC 2004/Virtual PC 2007の後継としてWindows 7(x86/x64)専用のWindows Virtual PC、Windows 8(x64)専用のクライアント版Hyper-VとしてWindowsに特化(一方、クラウド環境Windows Azure上の仮想マシンではLinuxをサポート、サーバとしても利用可能)
  • Parallels Desktop for MacはMac OS X上でゲストOSとしてWindowsを動作させる為にリリースされた有償製品

ホストOSサポートから見たデスクトップ仮想マシン

ホストOS:Windows
  1. VirtualBox
  2. VMware Player
  3. Virtual PC
  4. QEMU
ホストOS:Linux
  1. KVM/QEMU
  2. QEMU
  3. VirtualBox
  4. VMware Player
ホストOS:Mac OS X
  1. QEMU
  2. VirtualBox
  3. (Parallels)
  4. (VMware Fusion)

 ホストOSを何にするかによっても選択肢は変わってきます。

VirtualBox/VMware Player/Virtual PC比較

 VirtualBox 4.x、VMware Player 3.x、Virtual PC 2007をホストOSにWindows、ゲストOSにDOS、WindowsやLinuxなどをインストール、使用してみたところ、LinuxやDOSについては、何れも遜色なし、ゲストOSをWindowsとした場合には、XPでは何れも遜色なし、3.x/95/98/98SE/MEなどはVirtual PCが最もスムースであるものの、VMware Playerでも、また、98/98SE/PEを除けばVirtualBoxもほとんど遜色なしといったところです。

 客観的にみると、ただでさえ、実質利用はできても他OSをサポートしない汎用性に欠けるVirtual PC 2004、Virtual PC 2007の後継は、XP Mode含め、Windows 7上でのみサポートされるWindows Virtual PC、Windows 8(x64)上でのみサポートされるHyper-Vと実質Windows専用という位置づけとなっています。

 ただ、クラウド環境であるWindows Azureでは、Windowsはもとより、Linuxをサーバとして利用することもでき、Linuxも大々的にサポートしているようです。

 Parallels DesktopやVMware Fusionは、Mac OS X用の有償の仮想化ソフトウェアであり、QEMUやVirtualBoxはMac OS Xでも無償で利用可能です。

デスクトップ仮想マシンのインストールと挙動比較

 ここでいくつかの観点から仮想マシン作成・実行ソフトウェアを分類してみます。

  • KVM/QEMU
  • VirtualBox
  • VMware Player

 オープンソースで且つWindows、Mac OS X、Linux、BSD、PC-UNIX、DOS、OS/2など多彩なゲストOSに対応する汎用的な仮想マシン作成・実行ソフトウェアでオーバーヘッドが比較的小さいものとなるとこのようになります。

  • KVM/QEMU
  • VirtualBox

 この内、64ビット移行期ではあるものの、まだまだ現役で存在するx86(32ビット)マシンを現時点の最新バージョンでホストOSとしてサポートしているとなるとこのようになります。

 但し、KVMは、ホストはLinux限定かつ64ビットマシン、または、ハードウェア仮想化支援機能(Intel VT-x/AMD-V)付き32ビットマシンのみ利用可能、ちなみに、こうしたマシンであれば、KVM/QEMU、Xen、VMware、VirtualBox、Hyper-V、LXC/Linux Containers、UML/User Mode Linux...等々あらゆる仮想化ソフトウェア上の仮想マシンやそのリソースをも管理できてしまうlibvirtというライブラリを使ったCLI/Command Line Interface環境virsh、GUIフロントエンドvirt-managerを利用することも可能です。

  • VirtualBox

 更にこの内、ホスト及びゲストOS共に汎用的な仮想マシン作成・実行ソフトウェアとなるとこのようになります。

 尚、オープンソースの仮想マシン作成・実行ソフトウェアの中でもVirtualBoxは、C++(Java/Python)プログラミングAPIによる拡張が可能だったり、Intel-VT/AMD-V対応だったり、PXEブート対応だったり、3D対応だったり、OVF対応だったり、そうでなくとも複数の他仮想マシンディスクフォーマットとの互換性が高かったり(、サーバ仮想化技術も別途あったり)とより機能が充実していると言えそうです。

x86とx64における仮想マシン

 CPUもPCの高性能化に伴い、8bit/16bit/32bit/64bitと拡張されてきましたが、32bitから64bitへの移行は円滑に進んでいるとは言い難く、例えば、Windowsで言えば、XP含む以降には既にx64版もありますが、Windows Vista/2008/7/2008 R2/8...と今尚、並行して32bitであるx86版、64bitであるx64版いずれも販売・提供されているのが実状です。

Windows 7(x86/x64)
Windows Virtual PC
Windows 8(x86/x64)
専用の仮想化ソフトウェアなし
Windows 8 pro(x64)
Hyper-V

 仮想化ソフトウェアもx86とx64対応が進んでいますが、ことWindowsについては、Micorosoft社の仮想化ソフトウェア入手、開発の経緯からx86にはVirtual PC、x64には、Hyper-Vというラインナップがあり、ホストとなるWindows OSをx86からx64に移行する際、及び(x86、x64何れも)Windows 7からWindows 8 Pro(x64)に移行する際には、仮想化ソフトウェアは、必然的にVirtual PCからHyper-Vに移行する必要があり、一方、なんでそうなったのか、Windows 8(x86やx64)に移行してもMicrosoftがサポートする専用の仮想化ソフトウェアはないという状況になっているようです。

仮想マシン環境自動化ツール

 ハイパーバイザー型、ホストOS型仮想化ソフトウェアでは、仮想マシンを作成後、希望する特定のOSをインストール/起動するというスタイルですが、他方で開発環境を構築することに主眼を置き、物理マシンや仮想マシン、使用するOS、周辺環境を予め構成ファイルにまとめて記述しておくことでOSやアプリケーションの起動までを自動化し、必要なら簡単に同じ環境を複数構成することもでき、クラウド環境との連携も意識した環境構築自動化ツール/フレームワークとしてVagrant、Chef、Puppet、Ansible、Saltといったものもあります。

備考

 また、仮想化ソフトウェアと呼ぶべきものか微妙な気もしますが、ハイパーバイザー型、ホストOS型と対比し、コンテナ型仮想化ソフトウェアとも呼ばれることもあるLXCやDockerもあります。

 このLXCやDockerは、Linuxカーネルを前提にしているため、Linuxでのみ利用可能な技術ですが、稼働マシンのOS上とは隔離してOS環境やアプリケーションの実行環境を構築できることからFreeBSDのjail(やLinuxのchroot)と対比されることもあります。

ホーム前へ次へ