Skip to content
🎉 Launch sale:50% off everything over $22 — automatically applied at checkout· ends Aug 2Shop the sale →
DevOps AI ToolKit
Newsletter
All guides
AI for OpenStack By James Joyner IV · · 8 min read Last reviewed Jul 2026

OpenStack Error: Glance 'Store ... not configured' / No Default Store on Image Create

Quick answer

Fix OpenStack Glance 'Store for scheme ... not found' and 'no default store' image-create errors: configure enabled_backends, default_backend, and the glance-api store.

  • #openstack
  • #glance
  • #troubleshooting
  • #errors
Free toolkit

Stuck on this OpenStack error? Get the free incident triage checklist

A one-page PDF — the exact steps to isolate, fix, and verify a production error like this one. No spam, unsubscribe anytime.

Exact Error Message

$ openstack image create --disk-format qcow2 --container-format bare \
    --file jammy.img ubuntu-22.04
HTTP 410 Gone: Error in store configuration. Adding images to store is disabled.

Depending on release and configuration you may instead see one of these variants from glance-api:

glance.common.exception.UnknownScheme: Store for scheme file not found
Store for identifier default_backend not found. Please configure a
default_backend under [glance_store].

What It Means

Glance separates its API/metadata layer from its image data store. The store (file, Swift, Ceph RBD, S3, etc.) is where the actual image bits are written. If glance-api starts without a working store backend — or with backends defined but no default selected — it can serve metadata but has nowhere to put uploaded data. Attempting to create an image with a file then fails with a store/configuration error, even though listing existing images may still work.

The HTTP 410 “Adding images to store is disabled” specifically means data upload is turned off or unconfigured, while “Store for scheme … not found” / “default_backend not found” mean the requested or default backend is not registered.

Common Causes

  • [glance_store] enabled_backends is empty or omitted, so no store is registered.
  • enabled_backends lists backends but default_backend is unset or points at an undefined name.
  • The store’s directory/credentials are wrong (e.g. filesystem_store_datadir missing or unwritable).
  • A Ceph/Swift/S3 backend is configured but its client packages or credentials are missing, so the store fails to initialize.
  • Upgrading from the legacy single-store (stores/default_store) config to multi-store without setting default_backend.
  • glance-api was not restarted after editing glance-api.conf.

Diagnostic Commands

Confirm the store configuration Glance is actually using:

sudo crudini --get /etc/glance/glance-api.conf glance_store enabled_backends
sudo crudini --get /etc/glance/glance-api.conf DEFAULT default_backend

Check the target datadir for a filesystem store exists and is writable by the glance user:

sudo ls -ld /var/lib/glance/images
sudo -u glance test -w /var/lib/glance/images && echo writable || echo NOT-writable

Inspect the glance-api startup log for store initialization errors:

sudo journalctl -u devstack@g-api --no-pager | grep -i "store\|backend"
# package installs: /var/log/glance/glance-api.log

List existing images to confirm the API itself is up (metadata works even when the store does not):

openstack image list

Step-by-Step Resolution

  1. Decide on the store type. For a simple single-node install, a filesystem store is the quickest correct configuration.

  2. Enable a backend and set it as the default in glance-api.conf:

[DEFAULT]
enabled_backends = fast:file
default_backend = fast

[fast]
filesystem_store_datadir = /var/lib/glance/images/
  1. Ensure the datadir exists and is owned by the glance service user:
sudo mkdir -p /var/lib/glance/images
sudo chown -R glance:glance /var/lib/glance/images
  1. If you use Ceph RBD instead, define the rbd backend and confirm the client is present:
[DEFAULT]
enabled_backends = rbd:rbd
default_backend = rbd

[rbd]
rbd_store_pool = images
rbd_store_ceph_conf = /etc/ceph/ceph.conf
rbd_store_user = glance
  1. Restart glance-api so it re-reads the store configuration:
sudo systemctl restart devstack@g-api    # or openstack-glance-api
  1. Verify the store registered without errors, then test an upload:
sudo journalctl -u devstack@g-api --no-pager | grep -i "registered store"
openstack image create --disk-format qcow2 --container-format bare \
  --file jammy.img ubuntu-22.04
  1. Confirm the new image reports active and shows its store in the properties:
openstack image show ubuntu-22.04 -c status -c stores

Prevention

  • Always set both enabled_backends and default_backend when using the multi-store model; one without the other fails.
  • Validate that store directories/credentials exist and are writable by the glance user before starting the service.
  • When migrating from legacy stores/default_store, complete the move to enabled_backends/default_backend in the same change.
  • Add a post-deploy smoke test that uploads and deletes a tiny image to catch store misconfiguration early.
  • Keep glance-api.conf in configuration management so store settings are consistent across API nodes.
  • HTTP 400 Bad Request: Invalid disk format — a format problem, not a store problem.
  • Failed to upload image data due to internal error — the store is configured but the backend write failed (permissions/capacity).
  • Store for scheme swift not found — the Swift store is referenced but its driver/credentials are missing.
  • 409 Conflict: Image status transition ... not allowed — an image-state issue unrelated to store config.

Frequently Asked Questions

Why can I list images but not create them? Listing only touches metadata, which lives in the Glance database. Creating an image with data needs a working store backend, so a broken store fails only on upload.

What is the difference between enabled_backends and the old default_store? enabled_backends/default_backend is the current multi-store model; stores/default_store is the deprecated single-store style. Mixing them, or setting one without the other, causes “default_backend not found.”

Do I have to restart glance-api after changing the store? Yes. Store backends are initialized at startup, so edits to glance-api.conf only take effect after restarting the service.

How do I confirm the store initialized correctly? Check the glance-api log for a “registered store” line and then run a small openstack image create --file ...; a successful active image confirms the backend works. For store-config prompts, see the OpenStack prompts.

Which store should I use for a single node? A filesystem store (file) pointed at a writable, glance-owned datadir is the simplest correct choice. For more image-service guides, see the OpenStack guides.

Free download · 368-page PDF

Fixed it? Get 500 OpenStack & DevOps AI prompts — free

500 battle-tested, copy-paste AI prompts engineered by a senior systems engineer — every one with fill-in placeholders and safety/back-out notes. Drop your email and it's yours.

  • 500 prompts: Linux · Kubernetes · Terraform · OpenStack · GitLab · Docker · Monitoring · Incident Response
  • Instant PDF download — yours free, forever
  • Plus one practical AI-workflow email a week (no spam)

Single opt-in · unsubscribe anytime · no spam.

Did this fix your issue?

Free download · 368-page PDF

Get 500 Battle-Tested DevOps AI Prompts — Free

500 battle-tested, copy-paste AI prompts engineered by a senior systems engineer — every one with fill-in placeholders and safety/back-out notes. Drop your email and it's yours.

  • 500 prompts: Linux · Kubernetes · Terraform · OpenStack · GitLab · Docker · Monitoring · Incident Response
  • Instant PDF download — yours free, forever
  • Plus one practical AI-workflow email a week (no spam)

Single opt-in · unsubscribe anytime · no spam.