Changing the machine type of a VM instance

If your VM does not have a local SSD and is not part of a managed instance group (MIG), you can change the machine type of your VM after stopping it.

If your existing machine type is not a good fit for the workloads you run on your VM, change the machine type of that VM. You can change the machine type of a VM to adjust the number of vCPUs and memory as your workload changes. For example, you can start a VM with a smaller machine during setup, development, and testing and change the VM to use a larger machine type when you are ready for production workloads.

For VMs that do not have a local SSD and are not part of a MIG, you can change the machine type without affecting the following resources:

  • The VM's SSH keys
  • The VM configurations, such as VM metadata
  • The VM's persistent disk data, including installed applications and application data

If you need to change the machine type of VMs within a MIG, read about updating MIGs.

If your VM has a local SSD, you cannot stop the VM to change its machine type unless you force it to stop, which causes you to lose all of the data on the local SSD. For details, see Adding local SSDs.

Before you begin

Billing implications

Each machine type is billed at a different rate, so make sure you understand the pricing implications of changing machine types. For example, an e2-standard-2 machine type costs more than an e2-micro machine type.

Changing a machine type might also affect the sustained use discounts for that VM. Sustained use discounts are calculated separately for different categories in the same region. If you change machine types so that the new machine type is in a different category, the subsequent running time of the VM counts toward the sustained use discount of the new category.

For example, assume you have a VM with n2-standard-2 machine type running for half a month. You then decide to change the machine type to m1-ultramem-40. Once you make that change, Compute Engine starts counting the running time of the VM towards the sustained use discount of the memory-optimized vCPU and memory category.

On your bill, you would see a sustained use discount applied to the n2-standard-2 machine type from before you made the machine type change, and a separate sustained use discount for m1-ultramem-40, if your VM remains running on m1-ultramem-40 for at least a 25% of the rest of the month.

Changing a machine type

You can only change the machine type of a stopped VM. A VM is considered stopped only when the VM is in the TERMINATED state. You cannot change the machine type of a running VM.

Permissions required for this task

To perform this task, you must have the following permissions:

  • compute.instances.setMachineType on the VM

Console

  1. In the Google Cloud Console, go to the VM instances page.

    Go to VM instances

  2. In the Name column, click the name of the VM for which you want to change machine type.

  3. From the VM instance details page, complete the following steps:

    1. If the VM is running, click Stop to stop the VM.
    2. To edit the VM, click Edit.
    3. In the Machine configuration section, select the machine type that you want to use, or create a custom machine type.

    4. To save your changes, click Save.

gcloud

  1. Stop the VM by using the gcloud compute instances stop command:

    gcloud compute instances stop VM_NAME
    

    Replace VM_NAME with the VM containing the machine type to change.

  2. Change the machine type by using the gcloud compute instances set-machine-type command:

    gcloud compute instances set-machine-type VM_NAME \
        --machine-type NEW_MACHINE_TYPE
    

    Replace NEW_MACHINE_TYPE with the new machine type for the VM. The machine type can be one of the following:

API

  1. Stop the VM by using the instances.stop method:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
    

    Replace the following:

    • PROJECT_ID: the project ID

    • ZONE: the zone containing the VM

    • VM_NAME: the VM containing the machine type to change

  2. Change the machine type by using the instances.setMachineType method:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMachineType
    

    In the body of the request, provide the updated machineType:

    {
        machineType: "zones/MACHINE_TYPE_ZONE/machineTypes/NEW_MACHINE_TYPE"
    }
    

    Replace the following:

    • MACHINE_TYPE_ZONE: the zone containing the machine type

    • NEW_MACHINE_TYPE: the new machine type for the VM

      The machine type can be one of the following:

Moving to a smaller machine type

If you move from a machine type with more resources to a machine type with fewer resources, such as moving from a e2-standard-8 machine type to a e2-standard-2, you could run into hardware resource issues or performance limitations because smaller machine types are less powerful than larger machine types. Make sure that your new machine type is able to support any applications or services that are currently running on the VM, or that you update your services and applications to run on the smaller machine types.

Best practices

It is good practice to make regular backups of your persistent disk data using snapshots. Consider taking a snapshot of your persistent disk data before you change the machine type. If you want to make sure the new machine type is able to support the data on the existing VM, you can take a persistent disk snapshot and use it to start a second VM with the new machine type to confirm that the VM starts up successfully.

If you have a second persistent disk attached to your VM, make sure it is added to the /etc/fstab file so that it is automatically mounted when the VM reboots.

What's next