OpenStack Error: Glance 'Store ... not configured' / No Default Store on Image Create
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
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_backendsis empty or omitted, so no store is registered.enabled_backendslists backends butdefault_backendis unset or points at an undefined name.- The store’s directory/credentials are wrong (e.g.
filesystem_store_datadirmissing 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 settingdefault_backend. glance-apiwas not restarted after editingglance-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
-
Decide on the store type. For a simple single-node install, a filesystem store is the quickest correct configuration.
-
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/
- 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
- 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
- Restart glance-api so it re-reads the store configuration:
sudo systemctl restart devstack@g-api # or openstack-glance-api
- 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
- Confirm the new image reports
activeand shows its store in the properties:
openstack image show ubuntu-22.04 -c status -c stores
Prevention
- Always set both
enabled_backendsanddefault_backendwhen 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 toenabled_backends/default_backendin the same change. - Add a post-deploy smoke test that uploads and deletes a tiny image to catch store misconfiguration early.
- Keep
glance-api.confin configuration management so store settings are consistent across API nodes.
Related Errors
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.
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?
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.