VMware Workstation Pro / Player と Hyper-V の同居はできる? / ネストはできる?
先日の 2022年 8月 VMUG で「vExpert が語る 第18回 LT」の登壇ネタ、「VMware Workstation 16 Pro / Player で使う Windows 11」の中の「VMware Workstation をWindows 11 で使う」で話した内容をまとめました。
VMware Workstation Pro / Player をWindows 11 で使うには
現在提供されている VMware Workstation 16.2 Pro / Player を使えば、何も悩むことなく使うことができます。また、それ以前のバージョンでも VMware Workstation 15.5 Pro / Player 以降であれば問題なく利用できます。
では、VMware Workstation 15.1 Pro / Player 以前のバージョンではどうでしょうか。実は条件によって VMware Workstation Pro / Player のインストールができても、仮想マシンを動かすことができない場合が出てきます。この記事ではそれを説明したいと思います。
VMware Workstation Pro / Player の仕組み
VMware Workstation Pro / Player を動かすには、vSphere とは異なりホスト OS が必要になります。
上の図を見ていただくとわかるのですが、VMware Workstation Pro / Player 上で仮想マシンを動かすためには、仮想マシン内のアプリケーションは仮想マシンの仮想ハードウエアにゲストOS経由で命令を出します。それを VMware Workstation Pro / Player が受け取ってホスト OS が理解できる形に変換し ホスト OS に対して命令を伝達、ホスト OS はその命令をハードウエアに出すという形をとります。命令の結果はその逆順を通って仮想マシン内のアプリケーションに伝わるので、オーバーヘッドが非常に大きくなるというのが理解できるかと思います。この方法ではリソースを効率よく使うことができません。vSphere ではこの OS の部分をハイパーバイザーである vSphere が代替することで、中間にワンクッションある命令の変換をなくしリソースを効率的に使えるようにするとともに、オーバーヘッドを小さくすることができます。VMware Infrastructure 3 まではこの処理をすべてソフトウエアで行っていましたので、VMware Workstation や VMware GSX Server のようなホスト OS が必要な仕組みよりはオーバーヘッドは少なかったのですが、リソース特に CPU パワーをまだまだ有効に使うことができませんでした。そこで VMware Infrastructure 3.5 からは命令をハードウエアに肩代わりしてもらう機能を活用することになります。それにより、今の vSphere のようなオーバーヘッドがほぼないハイパーバイザーになっていったのですが、VMware Workstation Pro / Player ではホスト OS があるのでそのようなことができません。でも幸いなことに Windows では直接ハードウエアを操作する API などが用意されていたため、VMware Workstation 15.1 Pro / Player 以前のバージョンではそれを活用することで、オーバーヘッドを減らしパフォーマンスの向上を図ることができていました。
境目は Windows 10 20H1 ビルド 19041.264 以降
Windows 10 から クライアント OS でも正式に Hyper-V が利用できるようになりました。Windows 11 ではフレッシュインストールではデフォルトで Hyper-V がオンに、Windows 10 からのアップグレードではオフになっていますが、以下のように後から簡単にインストールができるようになっています。
※メーカーの Windows 11 PC では、メーカーの都合で Hyper-V がオフになっているものもあるかもしれません。その場合でも、上の手順で簡単に Hyper-V を有効にすることができます。(Windows 11 Home ではこの手順ではできません。でも、コマンド操作が必要ですが Hyper-V を有効にすることはできます。)
この Hyper-V が曲者で、Hyper-V が有効になったホスト OS では Windows のセキュリティ強化の機能 Virtualization Based Security (VBS)も有効になり、この影響で直接ハードウエアに対して API で命令を出すことができなくなりました。つまり、VMware Workstation 15.1 Pro / Player 以前のバージョンでは、ハードウエアに対して命令を伝達することができなくなりました。
Virtualization Based Security (VBS) は何をするの?
VBS は Windows オペレーティングシステムや Hyper-V から独立した Virtual Secure Module (VSM) と呼ばれる仮想マシンにより機能が提供され、Local Security Authority (LSA)、Virtual Trusted Platform Module (VTPM)、Hypervisor-Enforced Code Integrity (HVCI) などのチェックと情報の管理を行っています。
同時に使えるよう VMware はどのような対処をしたの?
この課題に対して VMware は VMware Workstation Pro / Player の改修を行い、VBS が有効な状態(つまり Hyper-V がオンな状態)でも VMware Workstation Pro / Player を動作できるようにしました。このバージョンが 15.5 で、それ以降の VMware Workstation Pro / Player では、Hyper-V が動作している Windows 10 / Windows 11 でも動作ができるようになりました。具体的には WBS を通過できるように Windows Hypervisor Platform (WHP) API を使うように VMware Workstation Pro / Player の改修を行い、VMware Workstation Pro / Player は特権モードでの動作を一切せずにすべてユーザーモードで動作するようにしました。これにより、Windows 側の仮想化環境(Windows Hypervisor Platform)が変わっても WHP API を守っている限り問題なく動作できるようになりました。
Hyper-V 上で VMware Workstation が使えるのはどの仮想ハードウエアバージョン?
Windows 10 / 11 の Hyper-V が動作している環境で VMware Workstation Pro / Player の仮想マシンを動かす場合、仮想ハードウエアバージョンも対応している必要があります。Hyper-V が動いている環境に使える仮想ハードウエアバージョン 16 以降が必須です。現在販売されている VMware Workstation 16 Pro / Player (16.2) では仮想ハードウエアバージョン は 18 なので問題ありませんが、古い仮想マシンをそのまま Hyper-V が動いている Windows 上の VMware Workstation Pro / Player にコピーまたは移動して使う場合は、仮想ハードウエアバージョンを適宜アップグレードしてください。下表の赤字が対応しているバージョンです。
仮想ハードウエア バージョン |
対応する Workstation Pro バージョン |
対応する Workstation Player バージョン |
対応する config バージョン |
20 | 2022H2 | 2022H2 | 8 |
19 | - | - | 8 |
18 | 16.2 16 |
16.2 16 |
8 |
17 | - | - | 8 |
16 | 15.x | 15.x | 8 |
15 | - | - | 8 |
14 | 14.x | 14.x | 8 |
13 | - | - | 8 |
12 | 12.x | 12.x | 8 |
11 | 11.x | 7.x | 8 |
10 | 10.x | 6.x | 8 |
9 | 9.x | 5.x | 8 |
8 | 8.x | 4.x | 8 |
7 | 7.x 6.5x |
3.x | 8 |
6 | 6.0x | - | 8 |
5 | - | 2.x | 8 |
4 | 5.x | 1.x | 8 ※4 |
3 | 4.x | - | 7 |
2 | 3.x | - | 6 |
1 ※2 |
2.x VMware 2.0 for Linux, VMware 2.0 for Windows NT and 2000 |
- | 2 |
1 ※1 ※3 |
VMware 1.1 for Linux, VMware 1.0 for Windows NT and 2000 | - | 1 |
※1 仮想ハードウエアバージョンの記述がないが、最初の仮想ハードウエアなので便宜上 1とした。
※2 仮想ハードウエアのバージョン上げずに拡張するために config.version を使用している。
※3 仮想ハードウエアバージョン(virtualHW.version)及び config.version の記述なし
※4 これ以降は config.version を使わず仮想ハードウエアバージョンを上げていくようになった。
ちなみに、VMware Workstation Pro / Player に存在しない仮想ハードウエアバージョンは、ESX / ESXi だけのバージョンになります。
使用している PC で Hyper-V がオンになっているかどうかを知るには
Hyper-V 上で動作することが保証されている 15.5 以降の場合、インストール時に以下のダイアログが出て、必要な機能が追加されます。
既に VMware Workstation Pro / Player をインストール済みの場合は、「スタート」 → 「Windows ツール」 → 「システム情報」の中の「仮想化ベースのセキュリティ」で確認することができます。
Hyper-V を有効にした VMware Workstation 上の 仮想マシンに Hyper-V をネストできるの?
今までの Hyper-V が動いていない Windows 上の VMware Workstation Pro / Player では、Hyper-V や ESXi などをネストして動かすことができました。これは Hyper-V が動作している Windows 上の VMware Workstation Pro / Player でも、仮想マシンの設定を一部変えることで、ネストさせることは可能です。
うまく動かないときは
以下のダイアログが出て仮想マシンが起動しない場合、仮想マシンの設定を変えてください。
変える場所は一つ、上のダイアログのメッセージに書かれている部分になります。具体的には以下の部分です。
Windows 11 仮想マシンが動かないときは(インストールできない、起動しない)
以下の記事を参考に .vmx ファイルを編集してください。
具体的には
managedvm.autoAddVTPM = "software"
を追記するだけでインストールも起動もできるようになります。もう少しすれば現在パブリックベータの VMware Workstation 22H2 (Build 20200310 / 2022/07/28 Tech Preview が正式版になり Windows 11 もサポート対象になるので、それまで待つということもあります。それについては以下の記事を参考にしてください。