Stay organized with collections
Save and categorize content based on your preferences.
This page describes how to restore a virtual machine (VM) disk from an image disk snapshot that was created
through Google Distributed Cloud (GDC) air-gapped backup and restore procedures.
Before you begin
To restore a VM disk from a snapshot, you must have the following:
An existing snapshot. For more information, see Back up disks.
The necessary identity and access roles:
Project VirtualMachine Admin: manages VMs in the project namespace. Ask your
Project IAM Admin to grant you the Project VirtualMachine Admin
(project-vm-admin) role.
Backup Creator: creates manual backups and restores. Ask your Project IAM
Admin to grant you the Backup Creator (backup-creator) role.
Project Viewer: has read-only access to all resources within project
namespaces. Ask your Project IAM Admin to grant you the Project Viewer
(project-viewer) role.
Restore a snapshot
Create a new VM from a disk snapshot by using the GDC console or the
application programming interface (API).
Console
Sign in to the GDC console.
In the navigation menu, click Virtual Machines > Snapshots.
Select a project.
In the list of snapshots, find the snapshot to restore and click
Restore.
In the New disk name field, enter the name of the disk to restore
the backup in.
Enter a Restore name for the restore.
Click Restore.
API
Create a VirtualMachineRestoreRequest custom resource to initiate the restore
process.
The restoration of application capability is subject to the VM operating system or image.
Create a VirtualMachineRestoreRequest custom resource to initiate the
restore process:
VM_BACKUP_NAME: the name of the VirtualMachineBackup resource to restore from.
PROJECT_NAME: the name of the GDC project.
RESTORE_REQUEST_NAME: the name of the restore request that is being initiated.
RESTORE_NAME: the name to give the restore that is being initiated.
RESTORE_PREFIX: a prefix that is appended to the start of the name for backups that this request restores.
RESTORED_RESOURCE_DESCRIPTION: description of why the restore is performed.
The result of the restore creates a new disk with the same configuration and
disk state as the snapshot, completing the data backup and recovery process.
View a restore
View a restore using the GDC console or kubectl command-line interface
(CLI).
Console
Sign in to the GDC console.
In the navigation menu, click Virtual Machines > Snapshots.
Select a project.
Click the Restores tab.
In the list of restores, click the restore name to view its details.
kubectl
View a restore by listing the restores and viewing their details:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-29 UTC."],[[["\u003cp\u003eThis guide details the process of restoring a virtual machine (VM) disk from a snapshot created through Google Distributed Cloud (GDC) air-gapped backup and restore procedures.\u003c/p\u003e\n"],["\u003cp\u003eRestoring a VM disk from a snapshot requires an existing snapshot and specific identity and access roles, including Project VirtualMachine Admin, Backup Creator, and Project Viewer.\u003c/p\u003e\n"],["\u003cp\u003eYou can restore a snapshot using either the GDC console by navigating to the Snapshots section and selecting the Restore option or by creating a \u003ccode\u003eVirtualMachineRestoreRequest\u003c/code\u003e custom resource via the API.\u003c/p\u003e\n"],["\u003cp\u003eAfter initiating the restoration, a new disk is created with the same configuration and state as the snapshot, effectively completing the data recovery process.\u003c/p\u003e\n"],["\u003cp\u003eYou can use either the GDC console or the \u003ccode\u003ekubectl\u003c/code\u003e CLI to view and delete restores, and the guide provides the specific steps for each method.\u003c/p\u003e\n"]]],[],null,["# Restore a VM from a snapshot\n\nThis page describes how to restore a virtual machine (VM) disk from an image disk snapshot that was created\nthrough Google Distributed Cloud (GDC) air-gapped backup and restore procedures.\n\nBefore you begin\n----------------\n\nTo restore a VM disk from a snapshot, you must have the following:\n\n- An existing snapshot. For more information, see [Back up disks](/distributed-cloud/hosted/docs/latest/gdch/platform-application/pa-ao-operations/vm-backup/back-up-disks).\n- The necessary identity and access roles:\n\n - Project VirtualMachine Admin: manages VMs in the project namespace. Ask your Project IAM Admin to grant you the Project VirtualMachine Admin (`project-vm-admin`) role.\n - Backup Creator: creates manual backups and restores. Ask your Project IAM Admin to grant you the Backup Creator (`backup-creator`) role.\n - Project Viewer: has read-only access to all resources within project namespaces. Ask your Project IAM Admin to grant you the Project Viewer (`project-viewer`) role.\n\nRestore a snapshot\n------------------\n\nCreate a new VM from a disk snapshot by using the GDC console or the\napplication programming interface (API). \n\n### Console\n\n1. Sign in to the GDC console.\n2. In the navigation menu, click **Virtual Machines \\\u003e Snapshots**.\n3. Select a project.\n4. In the list of snapshots, find the snapshot to restore and click **Restore**.\n5. In the **New disk name** field, enter the name of the disk to restore the backup in.\n6. Enter a **Restore name** for the restore.\n7. Click **Restore**.\n\n### API\n\nCreate a `VirtualMachineRestoreRequest` custom resource to initiate the restore\nprocess.\n\nThe restoration of application capability is subject to the VM operating system or image.\nCreate a `VirtualMachineRestoreRequest` custom resource to initiate the\nrestore process: \n\n apiVersion: virtualmachine.gdc.goog/v1\n kind: VirtualMachineRestoreRequest\n metadata:\n name: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eRESTORE_REQUEST_NAME\u003c/span\u003e\u003c/var\u003e\n namespace: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003ePROJECT_NAME\u003c/span\u003e\u003c/var\u003e\n spec:\n virtualMachineBackup: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eVM_BACKUP_NAME\u003c/span\u003e\u003c/var\u003e\n restoreName: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eRESTORE_NAME\u003c/span\u003e\u003c/var\u003e\n restoredResourceName: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eRESTORE_PREFIX\u003c/span\u003e\u003c/var\u003e\n restoredResourceDescription: \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-l devsite-syntax-l-Scalar devsite-syntax-l-Scalar-Plain\"\u003eRESTORED_RESOURCE_DESCRIPTION\u003c/span\u003e\u003c/var\u003e\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003eVM_BACKUP_NAME\u003c/var\u003e: the name of the `VirtualMachineBackup` resource to restore from.\n- \u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e: the name of the GDC project.\n- \u003cvar translate=\"no\"\u003eRESTORE_REQUEST_NAME\u003c/var\u003e: the name of the restore request that is being initiated.\n- \u003cvar translate=\"no\"\u003eRESTORE_NAME\u003c/var\u003e: the name to give the restore that is being initiated.\n- \u003cvar translate=\"no\"\u003eRESTORE_PREFIX\u003c/var\u003e: a prefix that is appended to the start of the name for backups that this request restores.\n- \u003cvar translate=\"no\"\u003eRESTORED_RESOURCE_DESCRIPTION\u003c/var\u003e: description of why the restore is performed.\n\nThe result of the restore creates a new disk with the same configuration and\ndisk state as the snapshot, completing the data backup and recovery process.\n\nView a restore\n--------------\n\nView a restore using the GDC console or `kubectl` command-line interface\n(CLI). \n\n### Console\n\n1. Sign in to the GDC console.\n2. In the navigation menu, click **Virtual Machines \\\u003e Snapshots**.\n3. Select a project.\n4. Click the **Restores** tab.\n5. In the list of restores, click the restore name to view its details.\n\n### kubectl\n\nView a restore by listing the restores and viewing their details:\n\n1. List the existing snapshots:\n\n kubectl get virtualmachinerestores.virtualmachine.gdc.goog -n \u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e\n\n Replace \u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e with the name of the project.\n2. In the list, find the restore that you want to view.\n\n3. View the restore details:\n\n kubectl describe virtualmachinerestore.virtualmachine.gdc.goog \u003cvar translate=\"no\"\u003eRESTORE_NAME\u003c/var\u003e -n \u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eRESTORE_NAME\u003c/var\u003e: the name of the restore.\n - \u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e: the name of the project.\n\nDelete a restore\n----------------\n\nDelete a restore by using the GDC console or `kubectl` command-line interface\n(CLI). \n\n### Console\n\n1. Sign in to the GDC console.\n2. In the navigation menu, click **Backup for Virtual Machines**.\n3. Select a project.\n4. Click the **Restores** tab.\n5. In the list of restores, find the restore to delete and click **Delete Restore**.\n6. In the **Restore name** field, enter the name of the restore to delete.\n7. Click **Delete Restore**.\n\n### kubectl\n\nView a restore by listing the restores and viewing their details:\n\n1. List the existing restores:\n\n kubectl get virtualmachinerestores.virtualmachine.gdc.goog -n \u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e\n\n Replace \u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e with the name of the project.\n2. In the list, find the restore that you want to delete.\n\n3. Delete the restore:\n\n kubectl delete virtualmachinerestores.virtualmachine.gdc.goog \u003cvar translate=\"no\"\u003eRESTORE_NAME\u003c/var\u003e -n \u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eRESTORE_NAME\u003c/var\u003e: the name of the restore.\n - \u003cvar translate=\"no\"\u003ePROJECT_NAME\u003c/var\u003e: the name of the project.\n\nWhat's next\n-----------\n\n- [Clean up labels after restoring VM-attached disks](/distributed-cloud/hosted/docs/latest/gdch/platform-application/pa-ao-operations/vm-backup/clean-up-labels-after-restore)"]]