How to back up and restore a Quake AI VM
Coming from another cloud?
▸AWS·EBS Snapshot
This Quake AI feature maps to AWS’s EBS Snapshot.
▸DigitalOcean·Droplet Snapshots
Droplet Snapshots
- 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.
▸Google Cloud·Machine Images (full VM state capture)
OS images
- 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.
▸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
- ConsoleLogged in to the Quake AI console
- CLIOpenStack CLI installed and authenticated (
clouds.yamloropenrcsourced) - APIAPI token generated with
$OS_TOKENand service endpoint variables set - TerraformOpenTofu installed with Quake AI provider configured
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:
| Goal | Path |
|---|---|
| Launch from the backup in another Quake AI project | Share the snapshot image |
| Store a qcow2 file in object storage or off-cloud | Export through a temporary volume |
Share the snapshot with another project#
- Create the Layer 1 snapshot and note its Glance image ID or name.
- Share the image with the destination project:
openstack image add project BACKUP_IMAGE_ID DESTINATION_PROJECT_ID- 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:
- Resolve the backing volume snapshot ID. Match the snapshot name from Layer 1 in
openstack volume snapshot list, or readblock_device_mappingfromopenstack image show BACKUP_IMAGE_ID. - Create a temporary volume from that snapshot (size must be at least the source boot volume):
openstack volume create \
--snapshot VOLUME_SNAPSHOT_ID \
--size BOOT_VOLUME_SIZE_GIB \
export-src-volWait until the volume status is available.
- Upload the volume to Glance as a full image (not a thin snapshot shim):
openstack image create \
--volume export-src-vol \
--disk-format qcow2 \
--container-format bare \
myapp-export-$(date +%Y%m%d)- Wait until the export image is
activeandsizeis greater than zero:
openstack image show myapp-export-$(date +%Y%m%d) -c status -c size- Download the file:
openstack image save --file myapp-backup.qcow2 myapp-export-$(date +%Y%m%d)-
Upload the file to object storage with the S3 CLI and your S3 credentials.
-
Delete the temporary export image and volume when the upload finishes:
openstack image delete myapp-export-$(date +%Y%m%d)
openstack volume delete export-src-volLayer 3: Restore drill#
Prove the backup works before you need it:
- Launch a new instance from the snapshot or saved image (create instance).
- Attach the same security groups and floating IP pattern as production (or test on a temporary floating IP).
- Run application health checks (
systemctl status, HTTP probe, database migration status). - 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
- Why does `openstack image save` write a 0-byte file for my boot-from-volume instance?CLI
- Why does `openstack server create` fail with "Only volume-backed servers are allowed for flavors with zero disk"?CLIAPITerraform
- Why does my project still have a 10 GiB Cinder volume after I deleted my instance?CLIAPI