Skip to content

How to back up and restore a Quake AI VM

How-to · Updated Jun 2026

Coming from another cloud?

▸AWS·EBS Snapshot

This Quake AI feature maps to AWS’s EBS Snapshot.

▸DigitalOcean·Droplet Snapshots

Droplet Snapshotshigh

  • DigitalOcean requires the Droplet to be powered off for a consistent snapshot (POST /v2/droplets/{id}/actions with {"type": "snapshot"}); a live snapshot option exists but is explicitly not guaranteed to be consistent. OpenStack Nova createImage is non-disruptive on running instances.
  • DO Droplet snapshots are billed per-GiB per month. Automated weekly backups are a percentage of the Droplet monthly price and retain the last 4 snapshots. See the DigitalOcean pricing page for current rates.
  • Droplet snapshot creation powers down the Droplet by default, creating downtime unless the live (inconsistent) option is used. Nova createImage is non-disruptive and does not affect server state.
  • DO snapshots can be used to create new Droplets in any region (with cross-region transfer) or restore the original Droplet. Nova images can launch new instances in the same region; cross-region requires Glance backend replication or manual download/upload.
DigitalOcean docs ↗
▸Google Cloud·Machine Images (full VM state capture)

OS imageshigh

  • Public images shareable across projects (e.g. debian-cloud); OpenStack typically tenant-private.
  • Image families point to latest version; no OpenStack equivalent.
  • Custom images stored in Cloud Storage with licensing fees for premium OS.
Google Cloud docs ↗
▸Hetzner·Snapshots

This Quake AI feature maps to Hetzner’s Snapshots.

How to back up and restore a Quake AI VM

Protect a VM with snapshots, copy backups off-project for disaster recovery, and run a restore drill that proves you can boot from the backup. Instance snapshots live in the same project as the source VM. Treat same-project snapshots as a quick rollback tool, not a full DR strategy by themselves.

Prerequisites

Windows: CLI examples use bash. Set up a Linux CLI environment on Windows before proceeding.

  • A running instance with a boot volume
  • Optional: a second project or S3-compatible destination for offsite copies

Layer 1: Same-project snapshot#

Follow How to create an instance snapshot before risky changes (package upgrades, configuration edits, migrations).

Layer 2: Copy to another project or export as a file#

Quake AI instances boot from a Cinder volume. openstack server image create registers a thin Glance image that references the backing volume snapshot; the Glance entry reports size: 0 and holds no downloadable bytes. See Instance snapshots CLI reference for the full boot-from-volume behavior.

Pick the path that matches your recovery goal:

GoalPath
Launch from the backup in another Quake AI projectShare the snapshot image
Store a qcow2 file in object storage or off-cloudExport through a temporary volume

Share the snapshot with another project#

  1. Create the Layer 1 snapshot and note its Glance image ID or name.
  2. Share the image with the destination project:
bash
openstack image add project BACKUP_IMAGE_ID DESTINATION_PROJECT_ID
  1. In the destination project, accept the member if your workflow requires it, then launch a drill instance from the shared snapshot image. See Images service CLI reference.

The destination project boots from the shared snapshot image; Nova clones the backing volume snapshot into a new boot volume in that project.

Export a qcow2 file for object storage#

Work from the Cinder volume snapshot that holds the bytes:

  1. Resolve the backing volume snapshot ID. Match the snapshot name from Layer 1 in openstack volume snapshot list, or read block_device_mapping from openstack image show BACKUP_IMAGE_ID.
  2. Create a temporary volume from that snapshot (size must be at least the source boot volume):
bash
openstack volume create \
  --snapshot VOLUME_SNAPSHOT_ID \
  --size BOOT_VOLUME_SIZE_GIB \
  export-src-vol

Wait until the volume status is available.

  1. Upload the volume to Glance as a full image (not a thin snapshot shim):
bash
openstack image create \
  --volume export-src-vol \
  --disk-format qcow2 \
  --container-format bare \
  myapp-export-$(date +%Y%m%d)
  1. Wait until the export image is active and size is greater than zero:
bash
openstack image show myapp-export-$(date +%Y%m%d) -c status -c size
  1. Download the file:
bash
openstack image save --file myapp-backup.qcow2 myapp-export-$(date +%Y%m%d)
  1. Upload the file to object storage with the S3 CLI and your S3 credentials.

  2. Delete the temporary export image and volume when the upload finishes:

bash
openstack image delete myapp-export-$(date +%Y%m%d)
openstack volume delete export-src-vol

Layer 3: Restore drill#

Prove the backup works before you need it:

  1. Launch a new instance from the snapshot or saved image (create instance).
  2. Attach the same security groups and floating IP pattern as production (or test on a temporary floating IP).
  3. Run application health checks (systemctl status, HTTP probe, database migration status).
  4. Delete the drill instance when finished.

Document the drill cadence in your runbook (monthly or after major releases).

See also#

Usage Guidelines

The sample code, software libraries, command line tools, proofs of concept, templates, and other related technology on this page (including any of the foregoing that is provided by Quake AI personnel) is provided to you as Quake AI Content under the Quake AI Customer Agreement, or the relevant written agreement between you and Quake AI (whichever applies). Do not use this Quake AI Content in your production accounts, or on production or other critical data. You are responsible for testing, securing, and optimizing the Quake AI Content (such as sample code) as appropriate for production grade use based on your specific quality control practices and standards. Deploying Quake AI Content may incur Quake AI charges for creating or using Quake AI chargeable resources, such as running Compute instances or storing data in Object Storage. Your use is also subject to the Acceptable Use Policy.

For the full policy, see Usage Guidelines.

Last validated: 30.06.2026

Quick answers

Was this page helpful?