クラウドコンピューティングの、これからご紹介する機能は、ちょっと変わっているが、でも実用性は十分にある。GoogleのCompute Engineが今日(米国時間9/28)、“nested virtualization”(入れ子状の仮想マシン)と呼ばれる新たな機能を、ベータでローンチした。その名のとおり、VMの中でVMを動かせるのだ。
でも、なんでそんなことを? Compute EngineのプロダクトマネージャーScott Van Woudenbergが、今日の発表声明でこう説明している: “企業がオンプレミスで仮想マシンを動かし、その上にアプリケーションがあるとき、それらをクラウドへ移行するためにはnested virtualizationを便利に利用できる。VMのイメージをインポートして変換する必要がない。dev/test(開発/試験の繰り返し)やCI/CD(継続的インテグレーション/継続的デリバリー)などで、複数の環境でソフトウェアを検証する必要のあるワークロードでは、nested virtualizationが最適である。”
彼によると、これによりクラウドベースの災害復旧ソリューションをより安価に作れるし、教育訓練や資格認定のためにさまざまな仮想環境をセットアップしたい企業にとっても便利だ。被験者の全員に、確実に同じ環境を提供できるからだ。
この機能は、プリエンプティブVMを含め、Compute EngineのどのタイプのVMでも利用できる。唯一の要件は、その(ユーザーの)VMがIntelのHaswell以降のCPUで動くことだ。
実際にどうやるかというと、まず通常のVMをセットアップし、そのインスタンスの上にKVM互換のハイパーバイザーをインストールする。Googleによると、今のところKVM非互換のハイパーバイザー、Xen, ESX, それにMicrosoftのHyper-Vなどはサポートされない。使用するインスタンスも、Linuxインスタンスのみである。Windowsマシンではnested virtualizationを使えない。
なお、Microsoft Azureはすでにnested virtualizationをサポートしている(Hyper-Vハイパーバイザーを使用)。AWSでは、OracleのRavelloのようなツールを使って同様の機能を実現できる。