A quick summary of related terms
CAS or Container Attached Storage:
OpenEBS provides Container Attached Storage, where the storage software runs within containers and these containers are always connected to the application pods that are using the storage. Because they run in containers, CAS volumes are platform-independent and hence run on any Kubernetes platform. CAS is a category of storage created by MayaData, and OpenEBS is one of the leading storage technologies in this category.
CAS architecture requires the storage software to run in a container. This allows different storage software containers to be chosen for different Persistent Volumes or PVs. In OpenEBS each PV will have a dedicated storage controller and associated replica software running in containers. This dedicated storage software for each PV is called a CAS engine.
Types of CAS Engines:
Following are the CAS engines supported:
- Jiva - Supports synchronous replication. Medium performance
- cStor - Copy-On-Write storage. Supports synchronous replication, snapshots, clones. Medium performance
- OpenEBS LocalPV - No replication. High performance. Includes underlying disk management.
- MayaStor - Replication is in short term roadmap. Very high performance. Supports NVMe front end and back end.
How to choose a particular CAS engine?
StorageClass defines the provisioner details. Separate provisioners are specified for each CAS engine. For more details see OpenEBS documentation.
When to choose which CAS engine?
A short summary is provided below. For more details, see OpenEBS documentation.
- LocalPV is preferred if your application is in production and does not need storage level replication.
- cStor is preferred if your application is in production and requires storage level replication.
- Jiva is preferred if your application is small, requires storage level replication but does not need snapshots or clones.
- MayaStor is the very high-performance CAS engine. It is currently in Alpha state. Use it in your test environments.
Can I move my PV from one engine to another?
Currently, it is not possible to automatically use the data owned by a particular data engine by another engine.