開発やインフラ構築の世界でよく使う仮想化技術。
仮想化とは文字通り、実際には存在しないけど、あるように振舞っているものを作り出すことです。
例えば、仮想メモリとはハードディスクの一部分をメモリと同様の役割として与えられているものを指します。
仮想メモリは「実態はハードディスク」です。
しかし、与えられている役割は「メモリ」です。
簡単ですが、仮想化とはこのようなことを指します。
仮想マシンとは
仮想マシンとは、パソコンの中に存在するパソコンです。
仮想マシンを作るには2つのやり方があります。
1.もともとあるOS(ホストOS)の上に仮想マシンを作る方法
2.空のハードディスクの中に仮想マシンを作る方法
1の仮想化技術をハイパーバイザ型、2の仮想化技術をホストOS型といいます。
ホストOS型
ホスト型はハードウェアの上にOSが載っている状態でその上に仮想化ソフトを乗っける状態で作り出す仮想化技術です。
もともとハードディスクの上にホストOSがあるので、この状態でもPCは動きます。
そこからさらに上乗せで仮想化ソフトウェアを乗っけて、その上に仮想的なOSであるゲストOSを立てます。
これがホストOSです。
通常のPCの状態に仮想マシンをそのままどんと乗っけるというイメージです。
仮想環境の構築のしやすさから、アプリの検証環境によく使われます。
仮想化ソフトウェアの具体例は、以下のものがあげられます。
「VMware Workstation Player」
「VMware Fusion」
「Oracle VM Virtualbox」
ハイパーバイザ型
ホストOS型に対して、ハイパーバイザ型はホストOSという概念がありません。
「ハイパーバイザ」という仮想化のソフトウェアを使用します。
ホストOSがないハードウェア、つまり空のハードディスクの上にハイパーバイザを乗せます。
このハイパーバイザがホストOSのような役割を担っています。
ホストOSを必要としないので、ハイパーバイザが直接ハードウェアの制御ができることによって仮想マシンの速度の遅延化を低減させることができます。
複数の仮想マシンを効率よく稼働させるための仕組みがあるため、大規模なインフラ構築に向いています。
代表的なハイパーバイザは以下の通りです。
「Microsoft Hyper-V」
「Linux KVM」
「VMware ESXi」
ホストOS型とハイパーバイザ型の両方を説明しましたが、もう一つ「コンテナ」といわれる仮想化技術があります。
ホストOS型ともハイパーバイザ型でもないコンテナ型についてです。
コンテナ型
ホストOSとかハイパーバイザとかの概念とは全く異なる考えの仮想化技術です。
コンテナはホストOSの上にコンテナという仮想空間を作り出します。
ここでいう仮想空間とは、アプリケーションを稼働させるための環境を指します。
比較的新しい仮想化技術といえます。
利点としては、
・必要最小限のCPUやメモリを使用しないので、負荷が小さい
・開発と運用(DevOps)との相性が良く、アプリケーションの高速リリースやアジャイル開発に向いている
コンテナ技術として使われるものとしては以下のものがあげられます。
「Docker」
「Kubernetes」
仮想化技術を用いることで、リソースを効率よく活用できたり、技術方針によって柔軟に対応が可能になります。
■参考
https://www.itmanage.co.jp/column/virtualization-server-integration/#top