Learn OpenStack · core/storage/object
Object Storage — Swift
Swift is the OpenStack Object Storage service. It stores and retrieves unstructured data — files, blobs, backups, logs, media — as named objects inside containers inside accounts. There is no filesystem hierarchy, no block device, and no POSIX interface. Objects are addressed by a three-level namespace: account/container/object.
Swift was one of the first OpenStack projects and predates the OpenStack Foundation. It is a fully distributed, eventually consistent system with no single point of failure. Every component is horizontally scalable. Data durability is achieved through configurable replication (default: 3 replicas) or erasure coding across failure domains (zones, regions).
When to Read This Skill
- Deploying Swift for the first time or adding capacity
- Creating containers and uploading objects via CLI, API, or SDK
- Configuring container ACLs, object versioning, temp URLs
- Uploading large objects (> 5 GiB) using SLO or DLO
- Building or rebalancing rings after adding or removing hardware
- Understanding replication, auditor, and updater background processes
- Configuring erasure coding storage policies
- Setting up encryption at rest with keymaster middleware
- Diagnosing object loss, ring imbalance, or replication lag
- Tuning proxy pipeline middleware (rate limiting, temp URL, SLO, DLO)
Sub-Files
| File | What It Covers |
|---|---|
| architecture.md | Proxy server, account/container/object servers, ring architecture (partitions, replicas, zones, regions), consistent hashing, eventually consistent model, storage policies, WSGI pipeline |
| operations.md | CLI and API: containers, objects, large objects (SLO/DLO), ACLs, versioning, temp URLs, bulk operations, static websites; swift-ring-builder overview |
| internals.md | Ring building in detail, replicator/auditor/updater processes, consistency engine (hashes.pkl), erasure coding (liberasurecode), storage policy configuration, proxy pipeline middleware, encryption at rest, account reaper |
Quick Reference
# Create a container
openstack container create my-container
# Upload an object
openstack object create my-container local-file.txt
# List objects in a container
openstack object list my-container
# Download an object
openstack object save my-container local-file.txt
# Delete an object
openstack object delete my-container local-file.txt
# Delete a container
openstack container delete my-container
# Make a container publicly readable
openstack container set --property 'read-acl=.r:*,.rlistings' my-container
# Generate a temp URL (valid 1 hour)
swift tempurl GET 3600 /v1/AUTH_<account-id>/my-container/local-file.txt <temp-url-key>
# Show container metadata
openstack container show my-container
# Upload a large file as a Static Large Object
openstack object create --use-slo my-container large-file.iso
Dependencies
| Dependency | Purpose | Notes |
|---|---|---|
| Keystone | Authentication and account mapping | Swift maps Keystone project ID to account; authtoken middleware validates tokens |
| Memcached | Auth token cache, account/container metadata cache in proxy | Required in production; dramatically reduces account/container DB lookups |
| SQLite (per-server) | Account and container databases | One SQLite DB per account, per container; stored on local disk alongside objects |
python-openstackclient + python-swiftclient |
Unified CLI and Swift-specific CLI | openstack for standard ops; swift CLI for advanced Swift-specific features |
liberasurecode |
Erasure coding library | Required only when EC storage policies are configured |
python-keystonemiddleware |
Auth token validation in proxy pipeline | Validates Keystone tokens; required for Keystone-integrated deployments |
Releases Covered
This skill covers OpenStack 2025.1 (Epoxy), 2025.2, and 2026.1.
Swift release notes: https://docs.openstack.org/releasenotes/swift/ Swift admin guide: https://docs.openstack.org/swift/latest/admin_guide.html Swift API reference: https://docs.openstack.org/api-ref/object-store/ Swift ring overview: https://docs.openstack.org/swift/latest/overview_ring.html