An Object Storage service can store a large amount of unstructured data of any content type. Object Stores are widely used for Big Data analytics, Backup/Archival, Web Hosting and media storage and delivery. Amazon S3, Google Cloud Storage, Azure Blob Storage and DigitalOcean Spaces are some of the popular Object Storage service providers.
Building on the OpenSource object store providers, CloudStack can support Object Storage as a first-class entity. A general purpose object storage framework should be added, with support for various Object Storage providers as plugins. CloudStack will manage the lifecycle of the object storage pools and buckets. Objects will not be managed by CloudStack. The underlying object-storage provider is responsible for flexible storage management and data growth, multi-site replication, security, and backup.
The purpose if this document is to provide functional specification for Object Storage feature in CloudStack.
Version | Author/Reviewer | Date |
---|---|---|
1.0 | Kishan Kavala |
|
Object Store: Object storage (also known as object-based storage) is a data storage that manages data as objects
Bucket: Buckets are logical containers for storing objects
Object: The basic storage units of Object Store are objects. Any type of data, regardless of content type, is stored as an object.
Object Storage Pool: CloudStack admin can setup supported Object Storage systems and add them to CloudStack as an Object Storage Pool. Users can create buckets within the object storage pool
Object storage as a first-class end user feature in CloudStack
Pluggable Object storage provider framework. MinIO will added as a supported provider in the initial implementation
ObjectStoreDriver interface will be defined. All supported object store providers will need to implement this interface.
New APIs
Object Storage Pool APIs
addObjectStoragePool
updateObjectStoragePool
removeObjectStoragePool
listObjectStoragePools
Bucket APIs
createBucket
deleteBucket
listBuckets
Schema Changes
New Tables:
<ToDo>
Buckets usage will be added as a new Usage resource type
Appendix A:
PR https://github.com/apache/cloudstack/pull/7752
Appendix B: