ハイパーバイザーについて調べてみた
ハイパーバイザー
ハイパーバイザーは、OS間で同じコンピューティングリソースを共有できるようにしてくれるソフトウェアです。
1. Type1ハイパーバイザー(ネイティブ・ハイパーバイザー/ベアメタル・ハイパーバイザー)
- KVM、Microsoft Hyper-V、VMware vSphereなど
2. Type2ハイパーバイザー(ホスト型ハイパーバイザー)
- VMware Workstation、Oracle VirtualBoxなど
Type1ハイパーバイザー
基盤となるコンピューターの物理ハードウェア上で直接実行され、CPU、メモリー、および物理ストレージと直接対話します。
物理ハードウェアに直接アクセスできるため、非常に効率的です。これにより、CPUとの間に攻撃者が侵害する可能性のあるものが何もないため、セキュリティーも強化されます。
さまざまなVMを管理し、ホスト・ハードウェアを制御するために別の管理マシンが必要になることがよくあります。
ゲストOSが直接ハードウェアを制御しているイメージですね。
Type2ハイパーバイザー
基盤となるハードウェア上で直接実行されません。代わりに、OSでアプリケーションとして実行されます。
ハイパーバイザー タイプ2はホストOS経由でコンピューティング、メモリー、およびネットワーク・リソースにアクセスする必要があるため、パフォーマンスに影響を与える可能性のある遅延の問題が発生します。
OS(ホストOS)の中にアプリケーションとして別のOS(ゲストOS)が実行されているイメージですね。
Hyper-Vについて
このHyper-V動作の仕組みについて、Oracle VBoxとWSL2を使用した環境で、AlmaLinuxのインストールでつまったので、整理してみました。
つまったときにスクラップした記事は、こちら↓
Hyper-VはWindows上にインストールされますが、ホストOSの下のレイヤーに挿入されます。他の競合他社のType1ハイパーバイザーとは、ホストOS(Windows)の機能の一部として使用するという点で異なっています。
Hyper-Vは、共有したいコンピューティングリソースをホストOS(Windows)上でプールして管理するソフトウェアのようです。
なので、ゲストOSもホストOSのデバイスドライバー(CPUやメモリ、I/O制御をするドライバー)を通じてデバイスを制御しているというイメージです。
命令をする流れとしては、
ゲストOS VSC ⇔ VMBus ⇔ ホストOS VSP ⇔ ホストOS デバイスドライバー ⇔リソース
です。
Hyper-VってType1ハイパーバイザーなのに、Type2ハイパーバイザーと何が違うのか一瞬混乱しませんか?
私は、混乱しました。だって、ホストOSの中身つかっているじゃん!これってやってもらっているのと何が違うの?Type2と同じなんじゃないの?
Hyper-Vが少し特殊らしいのですが。
自分なりに調べた結果、以下の解釈に落ち着きました。
Type2は、ゲストOSは、ホストに対してあくまでアプリケーション上で動作しているOSなので、ホストOSの制御の範囲内でしか動けないです。Type2には、デバイスドライバーの制御なんてことはできないので、代わりに仮想化レイヤーというものでホストOSに空いているリソースをリクエストして、割り当ててもらってやってもらっているだけです。
イメージ↓こんな感じ? 間違っていたら、指摘してくださいね~。
まとめ
- Type1ハイパーバイザーとType2ハイパーバイザーは、仮想化マシンからのリソースの制御方法が違う。
- Hyper-Vは、Windowsとの親和性を高めるためにホストOSのWindowsをドライバとして機能させてリソースを使用している。
参考
Discussion