The OpenStack stack uses the following storage types:
On-instance / ephemeral | Block storage (Cinder) | Object Storage (Swift) |
Runs operating systems and provides scratch space | Used for adding additional persistent storage to a virtual machine (VM) | Used for storing virtual machine images and data |
Persists until VM is terminated | Persists until deleted | Persists until deleted |
Access associated with a VM | Access associated with a VM | Available from anywhere |
Implemented as a filesystem underlying OpenStack Compute | Mounted via OpenStack Block-Storage controlled protocol (for example, iSCSI) | REST API |
Administrator configures size setting, based on flavors | Sizings based on need | Easily scalable for future growth |
Example: 10 GB first disk, 30 GB/core second disk | Example: 1 TB "extra hard drive" | Example: 10s of TBs of data set storage |
Other points of note include:
OpenStack Object Storage is not used like a traditional hard drive. Object storage is all about relaxing some of the constraints of a POSIX-style file system. The access to it is API-based (and the API uses http). This is a good idea as if you don't have to provide atomic operations (that is, you can rely on eventual consistency), you can much more easily scale a storage system and avoid a central point of failure.
The OpenStack Image Service is used to manage the virtual machine images in an OpenStack cluster, not store them. Instead, it provides an abstraction to different methods for storage - a bridge to the storage, not the storage itself.
OpenStack Object Storage can function on its own. The Object Storage (swift) product can be used independently of the Compute (nova) product.