1. Instance states
    1. PROVISIONING - Resources are being allocated for the instance.
    2. The instance is not running yet
    3. STAGING - Resources have been acquired and the instance is being prepared for first boot
    4. RUNNING - The instance is booting up or running.
    5. You can connect to the instance shortly after it enters this state
    6. STOPPING - The instance is being stopped.
    7. A user has made a request to stop the instance or there was a failure.
    8. This is a temporary status and the instance will move to TERMINATED once the instance has stopped.
    9. REPAIRING - The instance is being repaired.
    10. This can happen because the instance encountered an internal error or the underlying machine is unavailable due to maintenance.
    11. During this time, the instance is unusable.
    12. If repair is successful, the instance returns to one of the above states.
    13. TERMINATED - A user stopped the instance, or the instance encountered a failure.
    14. Start the instance again or delete it.
  2. Stopping
    1. You can stop an instance if no longer needed, but kept around for future use
    2. Alternatively, reset an instance to wipe the contents of the instance's memory or application state
    3. Stop an instance to it into a different instance state (TERMINATED)
    4. Resetting an instance keeps the instance in RUNNING state throughout the process
    5. The reset operation causes an immediate hard reset of the VM
    6. The VM does not do a graceful shutdown of the guest OS
    7. Stopping an instance causes Compute Engine to send the ACPI Power Off signal to the instance
    8. Modern guest operating systems are configured to perform a clean shutdown before powering off in response to the power off signal
    9. Compute Engine waits a short time for the guest to finish shutting down and then transitions the instance to the TERMINATED state
    10. Stopped instance
      1. Pay for resources still attached to the VM instance such as static IPs and persistent disk data
      2. Do not pay the cost of a running VM instance
      3. Ephemeral external IP addresses are released from the instance but new ephemeral external IP addresses are assigned when the instance is restarted
      4. Static external IP addresses are retained.
    11. Stop an instance if
      1. Do not want to pay for an instance not currently needed, but want to keep the instance around and retain its internal IPs, MAC address, and persistent disk for future use
      2. Do not need to preserve the guest OS memory, device state, and application state
      3. Want to change certain properties of the instance that require the instance to be stopped, such as changing the machine type
    12. Restart a stopped instance to use it again
  3. Resetting
    1. Wipes the memory contents of the VM instance and reset the virtual machine to its initial state
    2. Causes an immediate hard reset of the VM; the VM does not do a graceful shutdown of the guest OS
    3. VM retains all persistent disk data and none of the instance properties change
    4. The instance remains in RUNNING state through the reset
    5. Clears the guest OS memory, the device state, or application of VM, either for troubleshooting or to return VM to its initial power-on state
    6. Resetting an instance is a disruptive action
    7. The VM does not do a graceful shutdown of the guest OS and all application state and memory is lost
  4. Deleting
    1. Deleting an instance removes the instance and its attached resources from projects with some exceptions
    2. Specifically, Compute Engine retains persistent disks for a deleted instance if the disks have their auto delete status to false and any static external IPs will be returned to the project so it can be used again for another resource
    3. Deleting a VM instance is permanent so cannot restart a deleted instance
    4. Instance can be recreated with the same name and properties but for all purposes, Compute Engine will treat this as a new instance with new properties (such as a new system-generated instance ID)