この記事では『仮想化』について、
- ホスト型・ハイパーバイザー型・コンテナ型の違い
- ホスト型(ホストOS型)仮想化の特徴
- ホスト型仮想化の「メリット」と「デメリット」
- ホスト型専用の仮想化ソフトウェアの種類
- ハイパーバイザー型仮想化の特徴
- ハイパーバイザー型仮想化の「メリット」と「デメリット」
- ハイパーバイザー型専用の仮想化ソフトウェアの種類
- コンテナ型仮想化の特徴
- コンテナ型仮想化の「メリット」と「デメリット」
- コンテナ型専用の仮想化ソフトウェアの種類
などを図を用いて分かりやすく説明するように心掛けています。ご参考になれば幸いです。
ホスト型・ハイパーバイザー型・コンテナ型の違い
仮想化とは、「1台の物理マシンや物理サーバー」の「ハードウェア(CPU、メモリ、ストレージなど)」を仮想化ソフトウェアを用いて、分割し、「複数の独立した仮想マシンや仮想サーバー」を構築する技術と仕組みのことです。
仮想化の実装方式には大きく分けて、「ホスト型(ホストOS型とも呼ばれる)」、「ハイパーバイザー型」、「コンテナ型」の3種類があります。
上図に各仮想化の大まかな構成を示しています。「ホストOS(物理マシンや物理サーバーにインストールされているOS)」と「ゲストOS(仮想マシンや仮想サーバーにインストールされているOS)」の有無がそれぞれ異なります。
それぞれの仮想化の要点を下記に示します。
ホスト型・ハイパーバイザー型・コンテナ型の違い
- ホスト型
- ホストOSに「ホスト型専用の仮想化ソフトウェア」をインストールしています。
- ホストOSもゲストOSも必要です。
- Windows上でLinuxを実行したり、Mac上でWindowsを実行したりするなど、仮想化を手軽に実現できます。
- ハイパーバイザー
- ハードウェアに「ハイパーバイザー」と呼ばれる「ハイパーバイザー型専用の仮想化ソフトウェア」を直接インストールしています。
- ホストOSが不要です。
- データセンターやクラウドサービスなど大規模な仮想環境で一般的に使用されている仮想化方法です。
- コンテナ型
- ホストOSに「コンテナエンジン」と呼ばれる「コンテナ型専用の仮想化ソフトウェア」をインストールしています。
- ゲストOSが不要です。
- 仮想マシンや仮想サーバーを構築する代わりに、「コンテナ型専用の仮想化ソフトウェア(コンテナエンジン)」の上にコンテナを置くことで、複数のアプリケーションが同じホストOS上で独立して実行できる環境を実現しています。
ではこれから、各仮想化の特徴、メリット、デメリットを順番に説明します。
補足
OSには「Windows」、「macOS」、「Linux」などの様々な種類があります。
ホスト型(ホストOS型)仮想化
ホスト型仮想化では、「物理マシンや物理サーバー」のハードウェアにホストOSがインストールされており、ホストOSの上に「ホスト型専用の仮想化ソフトウェア」をインストールし、仮想化ソフトウェアの上に「仮想マシンや仮想サーバー」を構築しています。
また、それぞれの「仮想マシンや仮想サーバー」にはゲストOSをインストールします。
例えば、ホストOSをWindowsとし、ゲストOSとしてLinuxを動作させることが可能です。どのようなゲストOSを動作できるかは、ホストOSにインストールした「ホスト型専用の仮想化ソフトウェア」の種類によって決まります。
ホスト型(ホストOS型)仮想化の「メリット」と「デメリット」
ホスト型(ホストOS型)仮想化の「メリット」と「デメリット」を以下に示します。
メリット
- 既存のホストOSを利用できるので、手軽に仮想化を実現することができる
- そのため、ホスト型は個人用途の仮想マシン、ちょっとした動作チェック、開発環境・テスト環境などに適しています。
- 仮想化に必要なソフトウェアが扱いやすい
- それぞれの「仮想マシンや仮想サーバー」に異なるゲストOSをインストールすることができる
デメリット
- ホストOSの起動時間が長い場合、仮想化ソフトウェアを実行できず、「仮想マシンや仮想サーバー」を起動するまでに待ち時間が発生する
- ホストOSがハードウェアのリソース(CPUやメモリなど)を管理しているため、仮想マシンのリソース管理が難しい
- ホストOSはハードウェアのリソースを管理し、仮想マシンにリソースを割り当てています。このため、複数の仮想マシンが同時に実行されている場合、ホストOSがリソースの配分を適切に行う必要があります。しかし、ホストOSは通常のOSの役割も果たしており、自身のタスクやアプリケーションの実行にもリソースを割り当てる必要があります。そのため、仮想マシンへのリソースの割り当てや管理が難しくなることがあります。
- 仮想マシンがハードウェアにアクセスするには、ホストOSを経由しなければならないため、オーバーヘッドが大きく、仮想マシンの動作速度が遅い
ホスト型専用の仮想化ソフトウェアの種類
ホスト型専用の仮想化ソフトウェアの種類を以下に示します。
- VMware Workstation Player
- VMwareが提供している仮想化ソフトです。
- ホストOSにはWindowsかLinuxを使用します。
- 商用利用でなければ無償で利用できます。
- VMware Fusion
- VMwareが提供している仮想化ソフトです。
- ホストOSにはmacOSを使用します。 有料のソフトウェアです。
- Oracle VM VirtualBox
- Oracleが提供している仮想化ソフトです。
- Windows、Linux、macOSのどのホストOSでも使用可能です。
- 「VMware Workstation Player」と異なり、OSSで提供されています。無償で商用利用も可能です。
- Parallel Desktops
- Parallelsが提供している仮想化ホストです。
- ホストOSにはmacOSを使用します。
- 有料のソフトウェアです。
- macOSでWindowsを動作させる際に一般的に使用されています。
ハイパーバイザー型仮想化
ハイパーバイザー型仮想化では、「物理マシンや物理サーバー」のハードウェアに「ハイパーバイザー」と呼ばれる「ハイパーバイザー型専用の仮想化ソフトウェア」を直接インストールし、ハイパーバイザーの上に「仮想マシンや仮想サーバー」を構築しています。また、ホスト型仮想化と同様、それぞれの「仮想マシンや仮想サーバー」にはゲストOSをインストールします。
ハイパーバイザー型仮想化は、「ハードウェア」にホストOSをインストールする必要がありません。ホストOSを必要としないため、「仮想マシンや仮想サーバー」がハードウェアを直接制御することができ、処理速度の低下を最小限に抑えることができます。
ハイパーバイザー型仮想化は、データセンターやクラウドサービスなど大規模な仮想環境において効率的にリソースを活用するために一般的に使用されています。
補足
ハイパーバイザー型は「ベアメタル型」とも呼ばれています。
ハイパーバイザー型仮想化の「メリット」と「デメリット」
ハイパーバイザー型仮想化の「メリット」と「デメリット」を以下に示します。
メリット
- ホストOSのライセンス料金が不要
- ホストOSを起動しなくてよいので、「仮想マシンや仮想サーバー」を起動するまでの待ち時間が短い
- 仮想マシンがハードウェアにアクセスする際に、ホストOSを経由する必要がないため、ホスト型と比較すると、オーバーヘッドが小さく、仮想マシンの動作速度が速い
- それぞれの「仮想マシンや仮想サーバー」に異なるゲストOSをインストールすることができる
デメリット
- 仮想環境を構築する際に、ホストOSを使用しないため、導入や管理に専門的な知識が必要で、手間がかかることがある
ハイパーバイザー型専用の仮想化ソフトウェアの種類
ハイパーバイザー型専用の仮想化ソフトウェアの種類を以下に示します。
- Microsoft Hyper-V
- Microsoftが提供している仮想化ソフトです。
- Windows Server 2008より標準搭載されています。
- VMware ESXi
- VMwareが提供している仮想化ソフトです。
- 無料版と有料版が存在し、有料版の場合、追加機能が利用可能になります。
- Linux KVM(Kernel-based Virtual Machine)
- Linuxカーネル開発者(Linuxコミュニティ)が提供されている仮想化ソフトです。
- Linuxカーネル2.6.20より標準搭載されています。
- OSSで提供されています。
- Citrix Xen Server
- アメリカのソフトウェア企業であるCitrix Systems ,Inc.が提供している仮想化ソフトです。
- OSSで提供されており、無償で商用利用も可能です。
コンテナ型仮想化
コンテナ型仮想化では、「物理マシンや物理サーバー」のハードウェアにホストOSがインストールされており、ホストOSの上に「コンテナエンジン」と呼ばれる「コンテナ型専用の仮想化ソフトウェア」をインストールし、コンテナエンジンの上に「コンテナ(アプリケーションを実行するためのリソースがまとめられたパッケージ)」を置いています。複数のコンテナは同じホストOS上で動作しており、独立したアプリケーション実行環境を提供します。
コンテナ型はホスト型やハイパーバイザー型とは全く異なる概念です。コンテナ型仮想化は、「ホストOS型の仮想化」および「ハイパーバイザー型仮想化」と異なり、ゲストOSが必要がありません。また、コンテナ型仮想化は「仮想マシンや仮想サーバー」を構築せず、「コンテナ型専用の仮想化ソフトウェア」の上にコンテナを置くことで、複数のアプリケーションがホストOS上で動く環境を実現しています。
コンテナ型仮想化の「メリット」と「デメリット」
コンテナ型仮想化の「メリット」と「デメリット」を以下に示します。
メリット
- ゲストOSが不要で、ホストOSのみで動作しているので、ハードウェアのリソース(CPUやメモリなど)を消費が少なく、動作速度が速い
- ストレージの使用量が小さい
- ゲストOSの起動が不要なため、コンテナを起動するまでの待ち時間が短い
- コンテナを起動する際には、アプリケーションと関連ライブラリだけを読み込むだけなので、待ち時間が短くなります。一方、ハイパーバイザー型では「仮想マシンや仮想サーバー」を起動する時にゲストOSを起動させないといけないので、起動速度はコンテナ型よりも劣ります。
デメリット
- コンテナは1つのホストOSを共有しているため、ホストOSと異なるOSを必要とするアプリケーションは実行できない
- コンテナを異なる環境に移す場合、ホストOSが異なるとうまく動作しないことがあります。そのため、コンテナを別のOSに移行する場合には、作業に手間がかかります。
- 例えば、多くのコンテナ型仮想化はLinuxベースのため、LinuxのホストOS環境でWindowsのアプリケーションを実行することはできません。異なるOSのアプリケーションを稼働させたい場合には、ホスト型かハイパーバイザー型を使用する必要があります。
- 比較的新しい技術のため、学習コストが高い
コンテナ型専用の仮想化ソフトウェアの種類
コンテナ型専用の仮想化ソフトウェアの種類を以下に示します。
- Docker
- Dockerが提供している仮想化ソフトです。
- Windows、Linux、macOSのどのホストOSでも使用可能です。
- OSSで提供されており、コンテナ型仮想化ソフトウェアでは最も有名です。
- Kubernetes
- Googleが提供しているコンテナオーケストレーションツールです。
- Windows、Linux、macOSのどのホストOSでも使用可能です。
- OSSで提供されています。
- コンテナの管理面に強みを持っています。
- LXC(Linux Containers)
- Linuxコミュニティが提供している仮想化ソフトです。
- OSSで提供されています。
本記事のまとめ
この記事では『仮想化』について、以下の内容を説明しました。
- ホスト型・ハイパーバイザー型・コンテナ型の違い
- ホスト型(ホストOS型)仮想化の特徴
- ハイパーバイザー型仮想化の特徴
- コンテナ型仮想化の特徴
お読み頂きありがとうございました。