A disk is either a boot disk that is used to start and run the operating system on a virtual machine (VM) instance or a non-boot disk that a VM uses only for data storage.
You can use snapshots to backup and restore disk data in the following ways:
After you take a snapshot of a boot or non-boot disk, create a new disk based on the snapshot.
After you take a snapshot of a boot disk, create a new VM based on the boot disk snapshot.
After you take a snapshot of a non-boot disk, create a new VM with a new non-boot disk based on the snapshot.
Create a disk from a snapshot and optionally attach it to a VM
If you backed up a boot or non-boot disk with a snapshot, you can create a new disk based on the snapshot.
Restrictions
The new disk must be at least the same size as the original source disk for the snapshot. If you create a disk that is larger than the original source disk for the snapshot, you must resize the file system on that persistent disk to include the additional disk space. Depending on your operating system and file system type, you might need to use a different file system resizing tool. For more information, see your operating system documentation.
You can create a new zonal disk from a given snapshot at most once every ten minutes. If you want to issue a burst of requests to snapshot your disks, you can issue at most 6 requests in 60 minutes. This limit does not apply when creating regional disks from a snapshot. For more information, see Snapshot frequency limits.
Console
In the Google Cloud console, go to the Snapshots page.
Find the name of the snapshot that you want to restore.
Go to the Disks page.
Click Create new disk.
Specify the following configuration parameters:
- A name for the disk.
- A type for the disk.
- Optionally, you can override the default region and zone selection. You can select any region and zone, regardless of the storage location of the source snapshot.
Under Source type, click Snapshot.
Select the name of the snapshot to restore.
Select the size of the new disk, in gigabytes. This number must be equal to or larger than the original source disk for the snapshot.
Click Create to create the disk.
Optionally, you can then attach the new disk to an existing instance.
- Go to the VM instances page.
- Click the name of the instance where you want to restore your non-boot disk.
- At the top of the instance details page, click Edit.
- Under Additional disks, click Attach existing disk.
- Select the name of the new disk made from your snapshot.
- Click Done to attach the disk.
- At the bottom of the instance details page, click Save to apply your changes to the instance.
gcloud
Use the
gcloud compute snapshots list
command command to find the name of the snapshot you want to restore:gcloud compute snapshots list
Use the
gcloud compute snapshots describe
command command to find the size of the snapshot you want to restore:gcloud compute snapshots describe SNAPSHOT_NAME
Replace SNAPSHOT_NAME with the name of the snapshot being restored.
Use the
gcloud compute disks create
command command to create a new regional or zonal disk from your snapshot. If you need an SSD persistent disk for additional throughput or IOPS, include the--type
flag and specifypd-ssd
.gcloud compute disks create DISK_NAME \ --size=DISK_SIZE \ --source-snapshot=SNAPSHOT_NAME \ --type=DISK_TYPE
Replace the following:
- DISK_NAME: the name of the new disk.
- DISK_SIZE: The size of the new disk, in gigabytes. This number must be equal to or larger than the original source disk for the snapshot.
- SNAPSHOT_NAME: the name of the snapshot being restored.
- DISK_TYPE: full or partial URL for the type
of the disk. For example,
https://www.googleapis.com/compute/v1/projects/PROJECT_ID /zones/ZONE/diskTypes/pd-ssd
.
Optional: attach the new disk to an existing instance by using the
gcloud compute instances attach-disk
command:gcloud compute instances attach-disk INSTANCE_NAME \ --disk DISK_NAME
Replace the following:
- INSTANCE_NAME is the name of the instance.
- DISK_NAME is the name of the disk made from your snapshot.
API
Construct a
GET
request tosnapshots.list
to display the list of snapshots in your project.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots
Replace PROJECT_ID with your project ID.
Construct a
POST
request to create a zonal disk using thedisks.insert
method. Include thename
,sizeGb
, andtype
properties. To restore a disk using a snapshot, you must include thesourceSnapshot
property.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks { "name": "DISK_NAME", "sizeGb": "DISK_SIZE", "type": "zones/ZONE/diskTypes/DISK_TYPE" "sourceSnapshot": "SNAPSHOT_NAME" }
Replace the following:
- PROJECT_ID: your project ID.
- ZONE the zone where your instance and new disk are located.
- DISK_NAME: the name of the new disk.
- DISK_SIZE: the size of the new disk, in gigabytes. This number must be equal to or larger than the original source disk for the snapshot.
- DISK_TYPE: full or partial URL for the type
of the disk. For example
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ ZONE/diskTypes/pd-ssd
. - SNAPSHOT_NAME: the source snapshot for the disk you are restoring.
Optionally, you can then attach the new disk to an existing instance by constructing a
POST
request to theinstances.attachDisk
method, and including the URL to the zonal disk that you just created from your snapshot.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/attachDisk { "source": "/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME" }
Replace the following:
- PROJECT_ID is your project ID.
- ZONE is the zone where your instance and new disk are located.
- INSTANCE_NAME is the name of the instance where you are adding the new disk.
- DISK_NAME is the name of the new disk.
After you create and attach a new disk to an instance, you must mount the disk so that the operating system can use the available storage space.
Go
Go
Before trying this sample, follow the Go setup instructions in the Compute Engine quickstart using client libraries. For more information, see the Compute Engine Go API reference documentation.
To authenticate to Compute Engine, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
Java
Java
Before trying this sample, follow the Java setup instructions in the Compute Engine quickstart using client libraries. For more information, see the Compute Engine Java API reference documentation.
To authenticate to Compute Engine, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
Node.js
Node.js
Before trying this sample, follow the Node.js setup instructions in the Compute Engine quickstart using client libraries. For more information, see the Compute Engine Node.js API reference documentation.
To authenticate to Compute Engine, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
Python
Python
Before trying this sample, follow the Python setup instructions in the Compute Engine quickstart using client libraries. For more information, see the Compute Engine Python API reference documentation.
To authenticate to Compute Engine, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
Create a VM from existing disks
You can create boot disk and data disks from snapshots and then attach these disks to a new VM.
Go
Go
Before trying this sample, follow the Go setup instructions in the Compute Engine quickstart using client libraries. For more information, see the Compute Engine Go API reference documentation.
To authenticate to Compute Engine, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
Java
Java
Before trying this sample, follow the Java setup instructions in the Compute Engine quickstart using client libraries. For more information, see the Compute Engine Java API reference documentation.
To authenticate to Compute Engine, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
Node.js
Node.js
Before trying this sample, follow the Node.js setup instructions in the Compute Engine quickstart using client libraries. For more information, see the Compute Engine Node.js API reference documentation.
To authenticate to Compute Engine, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
Python
Python
Before trying this sample, follow the Python setup instructions in the Compute Engine quickstart using client libraries. For more information, see the Compute Engine Python API reference documentation.
To authenticate to Compute Engine, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.
Create a VM from a boot disk snapshot
If you backed up a VM's boot disk with a snapshot, you can use that snapshot to create a new VM.
Console
In the Google Cloud console, go to the VM instances page.
Select your project and click Continue.
Click Create instance.
Specify a Name for your VM. For more information, see Resource naming convention.
Optional: Change the Zone for this VM. Compute Engine randomizes the list of zones within each region to encourage use across multiple zones.
Select a Machine configuration for your VM.
In the Boot disk section, click Change, and then do the following:
- Click the Snapshots tab.
- In the Snapshot list, click a snapshot.
- Specify the boot disk type and size.
- Optional: For advanced configuration options, click Show advanced configurations.
- To confirm your boot disk options, click Select.
In the Firewall section, to permit HTTP or HTTPS traffic to the VM, select Allow HTTP traffic or Allow HTTPS traffic.
The Google Cloud console adds a network tag to your VM and creates the corresponding ingress firewall rule that allows all incoming traffic on
tcp:80
(HTTP) ortcp:443
(HTTPS). The network tag associates the firewall rule with the VM. For more information, see Firewall rules overview in the Virtual Private Cloud documentation.To create and start the VM, click Create.
gcloud
Use the
gcloud compute instances create
command
and include the --source-snapshot
flag:
gcloud compute instances create VM_NAME \ --source-snapshot=BOOT_SNAPSHOT_NAME \ --boot-disk-size=BOOT_DISK_SIZE \ --boot-disk-type=BOOT_DISK_TYPE \ --boot-disk-device-name=BOOT_DISK_NAME
Replace the following:
VM_NAME
: name for the new VMBOOT_SNAPSHOT_NAME
: name of the boot disk snapshot that you want to restore to the boot disk of the new VM.BOOT_DISK_SIZE
: Optional: size, in gigabytes, of the new boot diskThe size must be equal to or larger than the size of the source disk from which the snapshot was made.
BOOT_DISK_TYPE
: Optional: type of the boot persistent diskFor example,
pd-ssd
.BOOT_DISK_NAME
: name of the new boot disk for this VM
API
When you use the API to create a VM from a snapshot, the following restrictions apply:
- Only one persistent disk can be used as the boot persistent disk.
- You must attach the boot persistent disk as the first disk for that VM.
If you specify the
source
property, you cannot also specify theinitializeParams
property. Providing asource
indicates that the boot persistent disk exists already, but theinitializeParams
property indicates that Compute Engine should create a new boot persistent disk.To create a VM from a boot disk snapshot, specify the
sourceSnapshot
field under thedisks
property. Optional: specify thediskSizeGb
anddiskType
properties for the new boot disk:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "machineTypes/MACHINE_TYPE" "networkInterfaces": [{ "accessConfigs": [{ "type": "ONE_TO_ONE_NAT", "name": "External NAT" }], "network": "global/networks/default" }], "disks": [{ "boot": true, "initializeParams": { "sourceSnapshot": "global/snapshots/BOOT_SNAPSHOT_NAME", "diskSizeGb": "BOOT_DISK_SIZE", "diskType": "BOOT_DISK_TYPE" } }], }
Replace the following:
PROJECT_ID
: your project IDZONE
: zone where you want to create the new VMVM_NAME
: name of the VM that you want to restore a snapshot toMACHINE_TYPE
: machine type of the VMBOOT_SNAPSHOT_NAME
: name of the snapshot that you want to use to create the boot disk of a new VMBOOT_DISK_SIZE
: Optional: size, in gigabytes, for the new boot diskThe size must be equal to or larger than the size of the source disk from which the snapshot was made.
BOOT_DISK_TYPE
: Optional: type of the boot diskFor example,
pd-ssd
.
Go
Go
Before trying this sample, follow the Go setup instructions in the Compute Engine quickstart using client libraries. For more information, see the Compute Engine Go API reference documentation.
To authenticate to Compute Engine, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.