このドキュメントでは、仮想マシン(VM)インスタンスでネストされた仮想化を有効にする方法と、ネストされた VM を作成可能かどうか確認する方法について説明します。次のいずれかの方法を使用して、VM でネストされた仮想化を有効にします。
(推奨)VM の作成時に
enableNestedVirtualization
フィールドをtrue
に設定するか、VM を更新することで、ネストされた仮想化を新規または既存の VM 上で有効にします。カスタム イメージの作成や特別なライセンスキーの使用が不要であるため、この方法をおすすめします。特別なライセンスキーを使用して、ネストされた仮想化を有効にします。ブートディスクを作成して、ネストされた仮想化の特別なライセンスキーを使用してカスタム イメージを作成し、それを使用する VM を作成します。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、 Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
Select the tab for how you plan to use the samples on this page:
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
VM_NAME
: ネストされた仮想化が有効になっている新しい L1 VM の名前ZONE
: ネストされた仮想化を有効にした新しい L1 VM のゾーンPROJECT_ID
: プロジェクト IDZONE
: ネストされた仮想化を有効にした新しい L1 VM のゾーンVM_NAME
: ネストされた仮想化が有効になっている新しい L1 VM の名前次の
gcloud compute instances export
コマンドを使用して、VM のプロパティをエクスポートします。gcloud compute instances export VM_NAME \ --destination=YAML_FILE_PATH \ --zone=ZONE
次のように置き換えます。
VM_NAME
: プロパティをエクスポートする VM の名前YAML_FILE_PATH
: エクスポートした構成データを保存する .yaml ファイルのパスとファイル名ZONE
: VM が配置されているゾーン
FILE_PATH に保存された VM 構成ファイルで、
enableNestedVirtualization
の値を更新します。値がファイルに含まれていない場合は、次の行を追加します。advancedMachineFeatures: enableNestedVirtualization: true
次の
gcloud compute instances update-from-file
コマンドを使用して、enableNestedVirtualization
の値で VM を更新します。gcloud compute instances update-from-file VM_NAME \ --source=FILE_PATH \ --most-disruptive-allowed-action=RESTART \ --zone=ZONE
次のように置き換えます。
VM_NAME
: 更新する VM の名前FILE_PATH
: 更新された VM 構成ファイルへのパス。ZONE
: 更新する VM が配置されたゾーン
PROJECT_ID
: プロジェクトの IDZONE
: VM が配置されているゾーンVM_NAME
: プロパティをエクスポートする VM の名前公開イメージまたはカスタム イメージからブートディスクを作成します。次の例では、イメージ プロジェクトに
debian-cloud
を使用し、イメージ ファミリーにdebian-10
を使用します。既存のディスクを含む VM インスタンスがすでにある場合は、この手順をスキップできます。gcloud
gcloud compute disks create DISK_NAME \ --zone=ZONE \ --image-project=debian-cloud \ --image-family=debian-10
次のように置き換えます。
DISK_NAME
: 新しいディスクの名前ZONE
: ディスクを作成するゾーン
REST
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks { ... "name": "DISK_NAME", "sourceImage": "projects/debian-cloud/global/images/family/debian-10", ... }
次のように置き換えます。
PROJECT_ID
: プロジェクト IDZONE
: ディスクを作成するゾーンDISK_NAME
: 新しいディスクの名前
ネストされた仮想化に必要な特別なライセンスキーを使用して、カスタム イメージを作成します。
gcloud
gcloud compute images create IMAGE_NAME \ --source-disk DISK_NAME \ --source-disk-zone ZONE \ --licenses "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"
次のように置き換えます。
IMAGE_NAME
: 新しいイメージの名前DISK_NAME
: 以前に作成したディスクの名前ZONE
: イメージを作成するゾーン
REST
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images { ... "licenses": ["projects/vm-options/global/licenses/enable-vmx"], "name": "IMAGE_NAME", "sourceDisk": "zones/ZONE/disks/DISK_NAME", ... }
次のように置き換えます。
PROJECT_ID
: プロジェクト IDIMAGE_NAME
: 新しいイメージの名前ZONE
: イメージを作成するゾーンDISK_NAME
: 以前に作成したディスクの名前
必要に応じて、特別なライセンスでイメージを作成した後、ソースディスクを削除します。
gcloud
gcloud compute disks delete DISK_NAME --zone=ZONE
次のように置き換えます。
DISK_NAME
: 削除するディスクの名前ZONE
: 削除するディスクを含むゾーン
REST
DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME
次のように置き換えます。
PROJECT_ID
: プロジェクト IDZONE
: 削除するディスクを含むゾーンDISK_NAME
: 削除するディスクの名前
特別なライセンスで新しいイメージを使用する VM を作成します。最小 CPU プラットフォームは
"Intel Haswell"
にする必要があります。gcloud
gcloud compute instances create VM_NAME \ --zone=ZONE \ --min-cpu-platform "Intel Haswell" \ --image IMAGE_NAME
次のように置き換えます。
VM_NAME
: VM の名前ZONE
: VM を作成するゾーンIMAGE_NAME
: 以前に作成されたイメージの名前
REST
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { ... "name": "VM_NAME", "minCpuPlatform": "Intel Haswell", "disks": [ { "initializeParams": { "sourceImage": "IMAGE_NAME" } } ] ... }
次のように置き換えます。
PROJECT_ID
: プロジェクト IDVM_NAME
: VM の名前ZONE
: VM を作成するゾーンIMAGE_NAME
: 以前に作成されたイメージの名前
VM インスタンスに接続します。
gcloud compute ssh VM_NAME
VM_NAME
は、接続する VM の名前に置き換えます。ネストされた仮想化が有効になっていることを確認します。ネストされた仮想化が有効であれば、
0
以外のレスポンスが返されます。grep -cw vmx /proc/cpuinfo
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
ネストされた仮想化を新しい VM で直接有効にする
VM 上でネストされた仮想化を直接有効にするには、次の操作を行います。
gcloud
次の
gcloud compute instances create
コマンドを使用して、ネストされた仮想化を有効にした L1 VM を作成します。gcloud compute instances create VM_NAME \ --enable-nested-virtualization \ --zone=ZONE \ --min-cpu-platform="Intel Haswell"
次のように置き換えます。
REST
次の
instances.insert
メソッドを使用して、ネストされた仮想化を有効にした L1 VM を作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { ... "name": "VM_NAME", ... "minCpuPlatform": "Intel Haswell", "advancedMachineFeatures": { "enableNestedVirtualization": true }, ... }
次のように置き換えます。
既存の VM で直接ネストされた仮想化を有効にする
既存の VM でネストされた仮想化を有効にするには、次の手順を行います。
gcloud
REST
次の
instances.update
メソッドを使用して、enableNestedVirtualization
の値を更新します。PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME?most_disruptive_allowed_action=RESTART { ⋮ "advanced_machine_features": { ⋮ "enableNestedVirtualization": "true" }, ⋮ }
次のように置き換えます。
特別なライセンスキーを使用してネストされた仮想化を有効にする
L1 VM で VMX を有効にする特別なライセンスキーを使用して、カスタム イメージを作成することで、ネストされた仮想化を VM で有効にすることもできます。ライセンスキーには追加料金はかかりません。
ネストされた仮想化が VM で有効になっていることを確認する
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-07-21 UTC。
-