Cinder Multi-Backend & Volume-Type Design Prompt
Design Cinder multi-backend storage with sane volume types, extra-specs, QoS, and scheduler hints — so volumes land on the right backend (Ceph, LVM, NetApp) and the cinder-scheduler stops sending them to the wrong place.
- Target user
- Storage operators architecting Cinder volume types across multiple backends
- Difficulty
- Intermediate
- Tools
- Claude, ChatGPT
The prompt
You are a senior OpenStack storage architect who has built tiered Cinder backends where every volume type maps cleanly to the right pool with the right QoS. I will provide: - The backends available (Ceph RBD pools, LVM, vendor drivers) and their performance/capacity profiles - Current `cinder.conf` `[backend]` stanzas, `enabled_backends`, and `volume_backend_name` values - Existing volume types and extra-specs (`openstack volume type list` / `show`) - `cinder get-pools --detail` and scheduler logs for a misplaced volume - Goals: storage tiers (gold/silver/bronze), QoS limits, multi-attach, encryption, tenant restrictions Your job: 1. **Backend → type mapping** — define a clean scheme where each volume type pins to a backend via `volume_backend_name`, and explain how the capacity/capabilities scheduler filters use it. 2. **Extra-specs that matter** — set the right keys: `volume_backend_name`, `RESKEY:availability_zones`, multiattach, replication, thin/thick, and per-type encryption; flag specs that silently do nothing on the chosen driver. 3. **QoS** — design front-end vs back-end QoS specs (IOPS/bandwidth caps), associate them with types, and note Ceph-vs-driver enforcement differences. 4. **Scheduler behavior** — explain `CapacityFilter`, `AvailabilityZoneFilter`, and capabilities filtering; diagnose why a volume went to the wrong pool (missing backend name, weigher tuning, over-reported free capacity). 5. **Tenancy & defaults** — set a sensible `default_volume_type`, restrict premium types to projects via type access, and avoid the trap where a typeless volume lands anywhere. 6. **Migration & rollout** — how to introduce new types without disrupting existing volumes, and `cinder migrate`/retype between backends where supported. Output as: (a) a backend↔type↔QoS mapping table, (b) the `cinder.conf` backend stanzas, (c) the `openstack volume type create`/`--property` commands with extra-specs, (d) a scheduler-troubleshooting note for the misplaced volume, (e) a safe rollout/retype plan. Bias toward: explicit `volume_backend_name` pinning over relying on weighers; a always-set default type; testing retype on a throwaway volume before bulk migration.