仮想マシンのアーキテクチャの種類とその特徴まとめ


近年、コンテナ型の仮想化技術を利用したDockerが流行っていて、使ってみるだけならその仕組を理解していなくても大丈夫なくらいには簡単で便利です。しかし、そもそも仮想マシンとはどういうもので、その中でコンテナ型とはどういうものなのか、を把握しておくことは大事なのではないでしょうか。以下に、簡単に仮想マシンのアーキテクチャの種類とその特徴をまとめました。

ホスト型

ホストOS上に仮想ハードウェアを入れ、その上でゲストOSを動かす方式。 

  • 参考 : 1日5分のXen理解: 第1回 仮想マシンとは何か?
  • 例 : User Mode Linux, VMware Workstation, VMWare Fusion
  • メリット: 既存の環境の上で仮想マシンを構築できるため、導入が手軽にできる
  • デメリット: ゲストOSからハードウェアへのアクセスには必ずホストOSを経由するため、オーバーヘッドが大きくなる

ハイパーバイザー型

ハードウェア上にハイパーバイザーと呼ばれる仮想マシン管理ソフトウェアを用意し、その上でゲストOSを動かす方式。 ハイパーバイザーにどこまで機能をもたせるかによって、モノリシックカーネル型と、マイクロカーネル型に分けることができる。

モノリシックカーネル型

仮想マシンを実行するためのすべての機能をハイパーバイザーが担う方式。

  • 例 : VMWare ESXi
  • メリット:すべての処理をハイパーバイザーが担うのでコンテキストスイッチがなく処理が早い
  • デメリット:アドレス空間の分離がなくセキュリティ上のリスクが高くなる

マイクロカーネル型

仮想マシンの管理やデバイスドライバを、特別な権限をもった仮想マシン(親パーテーション)に任せ、ハイパーバイザーの機能を最小限にする方式である。

  • 例 : Hyper-V
  • メリット: アドレス空間が分離され、セキュリティ上安全である。通常のOSのデバイスドライバがそのまま使える
  • デメリット:ハイパーバイザーと親パーテーションでのコンテキストスイッチによるオーバーヘッドがある

コンテナ型

OSレベルではなく、アプリケーションレベルでの仮想化をひとつのホストOS上で行う方式。

  • 参考 : 【図解】コレ1枚で分かるコンテナ型仮想化とDocker
  • 例 : Docker, LXC, OpenVZ
  • メリット: ハイパーバイザー型よりさらにオーバーヘッドが小さい。メモリなどの資源が節約できる
  • デメリット: コンテナ間の分離のレベルが低いのでセキュリティ上のリスクが高い