今回は Nested Virtualization の1つとして「ESXi 上に Hyper-V を構築する方法」についてまとめます。
事象
ESXi 上の Windows 内で Docker を利用しようと思ったら、Hyper-V が利用できないために正常起動しないという事象がありました。 そのとき発生したエラーは、以下のようなものでした。
Unable to start: ユーザー設定変数 "ErrorActionPreference" または共通パラメーターが Stop に設定されているため、実行中のコマンドが停止しました。'MobyLinuxVM' は起動できませんでした。 Hyper-V コンポーネントの 1 つが実行されていないため、仮想マシン 'MobyLinuxVM' を起動できませんでした。 'MobyLinuxVM' は起動できませんでした。(仮想マシン ID BA02EB4E-07B5-44D1-B97E-B1AEEF2D1730) Hyper-V コンポーネントの 1 つが実行されていないため、仮想マシン管理サービスは仮想マシン 'MobyLinuxVM' を起動できませんでした (仮想マシン ID BA02EB4E-07B5-44D1-B97E-B1AEEF2D1730)。 Start-MobyLinuxVM、<ファイルなし>: 行 296、<ファイルなし>: 行 412 場所 Docker.Core.Pipe.NamedPipeClient.Send(String action, Object[] parameters) 場所 C:\workspaces\stable-18.09.x\src\github.com\docker\pinata\win\src\Docker.Core\pipe\NamedPipeClient.cs:行 36 場所 Docker.Actions.DoStart(SynchronizationContext syncCtx, Boolean showWelcomeWindow, Boolean executeAfterStartCleanup) 場所 C:\workspaces\stable-18.09.x\src\github.com\docker\pinata\win\src\Docker.Windows\Actions.cs:行 92 場所 Docker.Actions.<>c__DisplayClass19_0. b__0() 場所 C:\workspaces\stable-18.09.x\src\github.com\docker\pinata\win\src\Docker.Windows\Actions.cs:行 74 場所 Docker.WPF.TaskQueue.<>c__DisplayClass19_0.<.ctor>b__1() 場所 C:\workspaces\stable-18.09.x\src\github.com\docker\pinata\win\src\Docker.WPF\TaskQueue.cs:行 59
今回は、上記エラーを解消する方法を以下に手順として整理しました。
対応
-
Hyper-Vを有効化したい仮想マシンをシャットダウンしておく
-
Hyper-Vを有効化したい仮想マシンを選択し、[アクション]-[設定の編集]を開く
-
「仮想ハードウェア」の「CPU」の項目を開き、 「ハードウェア仮想化」にある「ハードウェア アシストによる仮想化をゲスト OS に公開」を有効化
-
「設定の編集」を「保存」して閉じる
-
Hyper-Vを有効化したい仮想マシンを起動
作業としては以上でDockerが利用できるようになります。
[おまけ] GUI から vmx ファイルを修正する方法
ただ、参考にした各サイトはいずれも以下の設定を追記していたようですが…追記しなくても動作はするようです。
- vhv.enable = "TRUE"
- hypervisor.cpuid.v0 = "FALSE"
もし、仮に設定するにしても[仮想マシンオプション]タブ→[詳細]-[構成の編集]から追加したほうが簡単です。 以下に簡単な手順を載せておきます…。
-
「設定の編集」にある「仮想マシンオプション」タブへ移動
-
「詳細」を展開
-
「構成の編集」を選択
-
「パラメータの追加」を選択して追加
- vhv.enabl
- "TRUE"
- hypervisor.cpuid.v0
- "FALSE"
-
[OK]を選択して保存
今回は「ESXi 上で Hyper-V を動作させる方法」についてまとめました。 参考になったでしょうか? 本記事がお役に立っていると嬉しいです!!
参考記事
- オラクる。 - ESXi上の仮想マシンにHyperVを構築する方法
- らくがきちょう - vSphere ESXi 上の仮想マシンで VT-x を有効化するには
- tokyo-wasted’s diary - Nested ESXi 構築時のレシピまとめ (vSphere 6.5 + vSAN)
- watercloud.net - VMwareの仮想マシン上でIntel VT-x等の仮想化支援機能を有効にするには
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!