Many cloud computing use cases require persistent remote storage. Storage solutions are often divided into three categories: object storage, block storage, and file storage.
Note that some storage solutions support multiple categories. For example, NexentaStor supports both block storage and file storage (with announcements for future support for object storage), GlusterFS supports file storage and object storage, and Ceph Storage supports object storage, block storage, and file storage.
In OpenStack: Object Storage service (Swift)
Related concepts: Amazon S3, Rackspace Cloud Files, Ceph Storage
With object storage, files are exposed through an HTTP interface, typically with a REST API. All client data access is done at the user level: the operating system is unaware of the presence of the remote storage system. In OpenStack, the Object Storage service provides this type of functionality. Users access and modify files by making HTTP requests. Because the data access interface provided by an object storage system is at a low level of abstraction, people often build on top of object storage to build file-based applications that provide a higher level of abstraction. For example, the OpenStack Image service can be configured to use the Object Storage service as a backend. Another use for object storage solutions is as a content delivery network (CDN) for hosting static web content (e.g., images, and media files), since object storage already provides an HTTP interface.
In OpenStack: Volumes (nova-volume service) in OpenStack
Compute or cinder as a separate Volume service
Related concepts: Amazon Elastic Block Store (EBS), Ceph RADOS Block Device (RBD), iSCSI
With block storage, files are exposed through a
low-level computer bus interface such as SCSI or ATA, that is accessible over the
network. Block storage is synonymous with SAN (storage area network). Clients access
data through the operating system at the device level: users access the data by
mounting the remote device in a similar manner to how they would mount a local,
physical disk (e.g., using the "mount" command in Linux). In OpenStack, the
nova-volume service that forms part of
the Compute service provides this type of functionality, and uses iSCSI to expose
remote data as a SCSI disk that is attached to the network.
Because the data is exposed as a physical device, the end-user is responsible for creating partitions and formatting the exposed disk device. In addition, in OpenStack Compute a device can only be attached to one server at a time, so block storage cannot be used to share data across virtual machine instances concurrently.
In OpenStack: none
Related concepts: NFS, Samba/CIFS, GlusterFS, Dropbox, Google Drive
With file storage, files are exposed through a distributed file system protocol. Filesystem storage is synonymous with NAS (network attached storage). Clients access data through the operating system at the file system level: users access the data by mounting a remote file system. Examples of file storage include NFS and GlusterFS. The operating system needs to have the appropriate client software installed to be able to access the remote file system.
Currently, OpenStack Compute does not have any native support for this type of file storage inside of an instance. However, there is a Gluster storage connector for OpenStack that enables the use of the GlusterFS file system as a back-end for the Image service.

