フォーム読み込み中
Nested Virtualizationが利用できるクラウドについて調べた記事です。
まず、仮想マシンであるVM(Virtual Machine)とは、物理的なハードウェア上に仮想化技術を使用して、仮想的なコンピュータ環境を作成し、その中でオペレーティングシステム(OS)やアプリケーションを稼働させることです。
Nested Virtualizationとは、仮想マシン上で、さらに仮想マシンを動かすことです。日本語だとネストした仮想化、入れ子の仮想化、でしょうか。
大手クラウドベンダのクラウド上で、気軽にVMを立ち上げて利用することも多いでしょう。クラウドサービスの具体例を出すと、AWSのEC2などがVMです。VMの上でVMを動作させなくても、別途VMを複数立ち上げればいいのでは、と思われるかもしれません。EC2の上でVMを立ち上げなくても、EC2をスケールアウトしていけばいいのではないか、という疑問です。
何かのサービスを提供するために、インフラとして利用することが目的の場合はその通りなのですが、VM自体の開発や試験をする際は、クラウド側で提供されているVMに依存しないVM環境がほしくなります。異なる環境も自在にエミュレートでき、開発およびテストプロセスもより柔軟に管理できます。
KubernetesやOpenShiftを独自に構築する際も、IaaSとしての共通基盤はVMを使うことになるため、任意の設定が可能なVMへの要求が生まれることがあります。
こういった理由がNested Virtualizationを利用したい動機となります。クラウド上でVM on VMができると、物理サーバの準備が不要となり、非常に便利です。
しかし、実はそう簡単な話ではないということが分かったのでその説明をしていこうと思います。
VMを自前で立ち上げるとは、どのような作業手順を踏むのかを例示します。
Linuxカーネルが提供する仮想化機能であるKVM(Kernel-based Virtual Machine)と、ハードウェアのエミュレータであるQEMUを使い、virt-managerを通して生成します。
$ sudo dnf install libvirt -y $ sudo dnf install virt-install -y $ virt-install \ --name ubuntu00 \ --vcpus 1 \ --cpuset=0 \ --memory 4096 \ --os-variant ubuntu20.04 \ --graphics none \ --extra-args 'console=ttyS0 --- console=ttyS0' \ --location http://us.archive.ubuntu.com/ubuntu/dists/focal/main/binary-amd64/
簡易な例ですが、このようにコマンドを打つだけでVMの構築は完了です。オプションの詳細は省略します。雰囲気を分かってもらえれば十分です。ローカルなサーバ環境ではこれでVMが動きます。
ただし、クラウド側のVM上で同じ操作をすると、以下のレスポンスが返ってきました。
cpuinfoの情報を見てみます。Intelの場合ならvmxが、AMDの場合はsvmが有効になっているはずです。
$ egrep -m 1 "svm|vmx" /proc/cpuinfo 出力なし
確かに、これではVMを作れません。
各クラウドがNested Virtualizationに対応しているかを調査します。
ベアメタルで稼働させるHyper-Vだけ許可されているようです。
Nested Virtualization with HyperV on EC2 instance
Dv3、Ev3以降であれば対応しています。
やりたいことの、まさにその通りの図もありました。
Google Cloudでもできそうですが、細かく制限があるようです。
L1 VM には次の制限事項があります。 ・Linux ベースの OS を実行する必要があります。Windows Server イメージは使用できません。 ・GPU が接続された E2、N2D、N1 と、A2 のマシンタイプは使用できません。 ・Intel Haswell 以降のプロセッサを使用する必要があります。AMD プロセッサはサポートされていません。ゾーンのデフォルトのプロセッサが Sandy Bridge または Ivy Bridge の場合、そのゾーンの VM の最小 CPU を Intel Haswell 以降に変更してください。各ゾーンでサポートされているプロセッサの詳細については、利用可能なリージョンとゾーンをご覧ください。 L2 VM には次の制限事項があります。 ・QEMU を実行できる OS を使用する必要があります。 ・ライセンスされた OS の場合、お客様所有ライセンスを使用する必要があります。
NGです。x86システムのNested技術はIBMが走りだと思っていたので、少し意外です。
Nested virtualization on virtual server instances is not a supported configuration.
https://cloud.ibm.com/docs/vpc?topic=vpc-limitations&locale=en
PriVM(Primary VM)が、SecVMs(SecondaryVMs)をネストさせず、cgroupsなどでフラットにSPAWNさせるような技術の方向を探っていたりするようです。
クラウド上のVM上でVMを稼働させようと気軽に考えていましたが、クラウドベンダによって対応はまちまちで、また制限があることが分かりました。
理由を少し調べたところ、いくつか課題があるためだそうです。
あとは利用者の多くが求めていないということもあるかもしれません。とはいえ、今回の私のように、VMの試験場を探しているエンジニアもいるのではないでしょうか。本記事がご参考になりましたら幸いです。
ソフトバンクはAWS アドバンストティアサービスパートナーです。「はじめてのAWS導入」から大規模なサービス基盤や基幹システムの構築まで、お客さまのご要望にあわせて最適なAWS環境の導入を支援します。
Microsoft Azureは、Microsoftが提供するパブリッククラウドプラットフォームです。コンピューティングからデータ保存、アプリケーションなどのリソースを、必要な時に必要な量だけ従量課金で利用することができます。
Google サービスを支える、信頼性に富んだクラウドサービスです。お客さまのニーズにあわせて利用可能なコンピューティングサービスに始まり、データから価値を導き出す情報分析や、最先端の機械学習技術が搭載されています。
IBM Watsonの導入は、ソフトバンクにご相談ください。お客さまと共に課題を明確にしIBM Watsonの最適な活用方法をご提案します。
条件に該当するページがございません