Nested Virtualizationの設定について(ESXi6)
複数のサーバ仮想化ソフトウェアを勉強する上で、限られた物理リソース上で如何にしてインフラ環境を整備するか問題に悩まされる方は多いのではないでしょうか。少なくとも私はよく悩まされます。そういったときに仮想マシン上でハイパーバイザが動かせればいいのに、と思うことが多いのではないでしょうか。
今回、VMWare ESXi上にESXiをインストールし、更にその上で64bitOSを動作させるまでの手順について、ESXi5.5でやった設定がESXi6.0でも利用できるのことを確認したので、備忘録として記載します。
【5/19 追記】
ESXi on ESXiの上で仮想マシンが通信するにはスイッチの設定も必要のため、こちらもご確認ください。
ゲストOSを動作させるために必要なもの
いわゆる仮想化支援機能と呼ばれるもので、Intel VTが代表的です。Intel VTは実はIntelが提供している仮想化支援技術の総称であり、いくつかの技術があるの(詳しくはWikipedia参照)ですが、x86サーバを仮想化する上で必要となるのはVT-xです。これがあればその上で32bitだろうが64ビットだろうがx86サーバを仮想化して動作することができます。自身のPCが対応しているかを確認するにはBIOS設定を見るなり、grep vmx /proc/cpuinfoするなり、VirtualCheckerを使うなりすれば確認できます。
Nested Virtualizationをするにはどうすればいいのか
端的にいうとVT-xを使って作成した仮想マシン上でVT-xを動作することを許可すればよいのです。ただし、これは利用する仮想化ソフト(ハイパーバイザ)によって手順は様々ですし、ソフトウェアによってはできない場合もあります。Nested Virtualizationができない代表としてはOracleのVirtual Boxでしょうか。現在公開中の5.xのβ版からはできるようになっているようですが。
仮想マシン上でVT-xが許可されていない場合の動作
インストール時にVT-xが無いため、警告が表示されます(インストール自体は可能)
インストール後、仮想マシン上のESXiで64bitのOSを利用するゲストを作成しても起動しません。
(動作OSを32bitに設定すると仮想マシンは起動し、利用することが可能です。)
これはESXiがVT-xを64bitOSを動作させるためだけに使用していることが理由のようです。とはいっても最近のOSは32bit版の提供をやめているところが多いため、VT-xが使えないと色々と苦労します。
ESXi上でNested Virtualizationをする
ESXi5.5もESXi6.0も手順は同じです。
SSHサービスを起動する
デフォルトESXiの設定ではSSHが停止しているため、サービスを起動します。
vSphere Clientで接続した場合、[構成] -> [セキュリティプロファイル] -> [サービス の プロパティ]をクリックします。
[SSH]を選択し、[オプション]をクリックします。
[開始]をクリックすればSSHサービスが起動します。
設定ファイル(/etc/vmware/config)を編集する
設定ファイル(/etc/vmware/config)の最終行に vhv.enable = "TRUE" を追記します。
[root@localhost:~] cat /etc/vmware/config libdir = "/usr/lib/vmware" authd.proxy.nfc = "vmware-hostd:ha-nfc" authd.proxy.nfcssl = "vmware-hostd:ha-nfcssl" authd.proxy.vpxa-nfcssl = "vmware-vpxa:vpxa-nfcssl" authd.proxy.vpxa-nfc = "vmware-vpxa:vpxa-nfc" authd.fullpath = "/sbin/authd" vhv.enable = "true"