検証環境の課題
仮想化基盤(KVM、Xen、VMware ESXiなど)をユーザーに向けて提供する場合、セキュリティパッチ適用や機能追加を考慮し、動作検証を行うための「検証環境」を準備するのが一般的です。実際にサービスを提供している「本番環境」と同等の「検証環境」を用意しますが、その際、以下のような課題に直面します。
- 本番環境と検証環境を常に同じ状態に保つため、継続的な維持運用が必要になる。
- サーバー台数を多く用意しないと検証を並列に実施できない。
- 定常的に検証を行っていない場合は、検証環境のハードウェアリソースが余る。
仮想化基盤内で動作検証を完結
従来の仮想化基盤では、ゲストOS(仮想マシン上で動作しているOS)がホストのCPUへ特権命令を発行した際の処理が大きなオーバーヘッドになっていました。このオーバーヘッドを解決するため、ハイパーバイザー型の仮想化基盤では、CPUの仮想化支援機能(Intel系CPUの場合VT-x、AMD系CPUの場合AMD-V)を使用しています。VT-xでは、「VMX rootモード」と「VMX non-rootモード」という2つの動作モードが導入されています。ゲストOSが発行する通常の命令をVMX non-rootモードで実行し、ゲストOSが発行する特権命令をVMX rootモードで実行することにより、オーバーヘッドを減少しています。一方、仮想化支援機能自体を操作する命令(例えばVMX non-rootとVMX rootを切り替えるVMXON、VMXOFFなど参考1)は、ゲストOS上では再現できませんでした。
しかし近年の技術進展により、KVMではLinuxカーネル3.2以降、ゲストOSの中でCPUの仮想化支援機能を使えるようになりました。この機能はnested、Nested VMX、Nested Virtualizationなどと呼ばれており参考1、ゲストOSの中にさらなるゲストOS(孫に該当する)を設けた構成を実質的に可能としました。これにより、仮想化基盤を仮想化基盤上で再現でき、仮想化基盤内で動作検証を完結できるようになりました。VMware ESXiもVer.5.0以降、同様の機能が利用できるようになっています参考2。
図:仮想化基盤の中に仮想化基盤を作る
仮想化on仮想化の未来
将来、Amazon EC2などのIaaS型パブリッククラウドサービスで、ゲストOSによるCPUの仮想化支援機能をサポートした場合、現在持っている検証環境をパブリッククラウドに移行したり、災害対策で複数のロケーションに検証環境を簡単に作成する事が可能になるなど、より使いやすく管理しやすい検証環境が実現されるでしょう。
NTTデータでも仮想化on仮想化の適用に向けた技術検証を行っています。
参考文献
- 参考1ゲストOSで仮想化支援機能を利用する仕組みの詳細説明
- 参考2Running Nested VMs(外部リンク)