OpenStack Block Object and File Share Openstack storage
Thera are two types of storage option mostly available to provide storage solution to compute nodes and further to instances.
- Ephemeral Storage
- Persistent Storage
This is non-persistence storage, in which as soon as VM is terminated, it loses the associated disk. In working as soon as any VM is booted, glance image downloaded on compute node and this image is used as first disk for nova instance which further provides ephemeral storage. As the name suggests, anything stored will be lost as soon as VM is terminated.
This type of storage means, even though the VM is powered off the storage and its data will be available. Persistent storage is divided in to three options:
- Object Storage
- File Storage
- Block Storage
What is object storage:
In object storage, data is stored in from of objects via RESTful HTTP API. By this type of storage, even though nodes fails, data are not lost and these type of storage can be scaled infinitely.
- In the object Storage, Data are stored as binary large objects (blobs) with multiple replicas on Object Storage servers.
- Object Storage are accessed using an API called REST or SOAP. And the data cannot be accessed by file protocol such as BFS, SMB or CIFS.
- These type of storage are not suitable for high performance requirement or the system that frequently changes data in database.
Swift: Object Storage
Swift is the Object storage service provided by Open Stack and was developed by joint efforts of NASA and Rack Space.
There are following benefits of using Swift as object storage solution:
- Highly Scalable
- On-Demand storage solution
- Elastic in nature as storage can be increased or decreased
Swift Architecture is distributed in nature, and it also prevent the single point of failure and can be scaled horizontally. There are following Swift components as discussed below:
- Swift Proxy Server: This server, accepts the incoming request either via HTTP or OpenStack object API. It accepts the request for file upload, metadata updation, and container creation.
- Proxy Server: This server is mostly deployed in memcached to improve performance and mostly used for caching
- Account Server: This server manages the account that defines the object and its associated storage service. It also maintains the list of containers associated to account.
- Container Server: Container is basically user defined storage area , with in swift account. It maintains the list of objects stored in particular container. It is just like folders in windows systems.
- Object Server: It manages the object in containers. This server defines where and how actual data and its metadata are stored and every object belongs to a container.