仮想化実装分類

Re:そろそろ区別するべき? (#1304495) | 手軽な仮想化ソフトウェア、lguest | スラドのコメントに触発されたので自分なりに分類してみます.

用語を統一するために仮想化環境を提供する側をホスト,提供される側をゲストと定義します.

計算機の仮想化(完全仮想化,準仮想化)

ホスト上で様々なOSを動作させることができるます.準仮想化の場合ゲストにホストを意識した修正が必要となります.(Linuxの場合デフォルトで対応していたりしますが...)

  • KVM
    • いまのところハードウェア支援必須
    • 完全仮想化
    • 準仮想化との併用もあり
  • Xen
    • 準仮想化が基本
    • 完全仮想化もサポート
  • VMware
    • ダイナミックトランスレーションによる完全仮想化が売り
    • 準仮想化,ハードウェア支援活用となんでもあり
  • VirtualBox
    • ハードウェア支援利用はオプション
  • QEMU
    • エミュレーションによる完全仮想化
    • 周辺デバイスのエミュレーション機能は引っ張りだこ
      • XenKVMに利用されている
    • 異なる命令セットアーキテクチャ(ISA)の相互変換が可能
  • lguest
    • 現在はLinux on Linuxのみだが,私見ではlguestはゲストとしてLinux以外のOSを動かすポテンシャルはあるはず...
  • Solaris Logical Domains (LDoms)
    • ハイパーバイザ構成,完全仮想化

KVM, Xen, VMwareにはいろいろなバリエーションがあるので表にしてみました.

  ハードウェア支援あり ハードウェア支援なし
完全仮想化 KVM, Xen(, VMware, VirtualBox) VMware, VirtualBox, QEMU
準仮想化 KVM, Xen, VMware Xen, VMware, lguest

Container型の仮想化

ホストの機能を部分的にそのまま利用し,カーネルなどを除いてホストと異なる環境を提供します.

UMLのみホストと異なるバージョンのカーネルを動かすことができます.しかし,ホストとゲストが同じLinuxである必要があるため,計算機の仮想化からは外しました.構造的には準仮想化に近いかもしれないですが...

その他の仮想化

ホストとは異なるOS環境(通常1種類)を提供します.