We use the following terminology throughout the documentation.
A Linux block device file presenting storage capacity on an agent.
The Container Storage Interface is an open standard developed by the community to standardize the API between container orchestrators (Mesos, Kubernetes, Cloud Foundry, Docker, etc.) and storage vendors (EBS, Dell ScaleIO, Ceph, Portworx, etc.).
Currently, DC/OS supports v0.1 of the CSI specification.
A CSI plugin provides an endpoint that presents the gRPC services defined by the CSI specification. See more details about CSI terminology here.
Storage Local Resource Provider (SLRP)
A Mesos component that drives a single CSI plugin to manage storage resources that are local to an agent. It presents these storage resources (both raw capacity and in the form of volumes) to Mesos and translates operations on those resources to CSI RPCs which it executes against the CSI plugin. Examples of CSI plugins are those for LVM2, Raw GPT, other direct-attached storage. Learn more details about SLRP in Mesos documentation.
Storage External Resource Provider (SERP)
A Mesos component that drives a single CSI plugin to manage storage resources available to the cluster (and not localized to a single agent). It presents these storage resources (both raw capacity and in the form of volumes) to Mesos and translates operations on those resources to CSI RPCs which it executes against the CSI plugin. Examples of such CSI plugins are those for Amazon EBS, NFS, other storage that can be automatically reattached to different agents.
A storage object from which a volume can be provisioned. Practically, a volume provider is associated with a single instance of a CSI plugin. Each volume provider integrates with Mesos through a single instance of a Storage Local Resource Provider (SLRP) or Storage External Resource Provider (SERP). There can be many instances of a given kind of volume provider. For example, “lvm volume group” is a kind of volume provider but there can be multiple LVM2 volume groups where each volume group is configured as a separate volume provider.
Example for volume providers, multiple of which can appear on the same cluster or agent:
- LVM2 Volume Group (via the LVM2 CSI plugin).
- NFS mount (via some NFS CSI plugin).
- ScaleIO <Protection Domain, Storage Pool> (via some ScaleIO CSI plugin).
- Amazon EBS: ebs-1, ebs-2, etc. (via some EBS CSI plugin).
The software installable component associated with a volume provider. It is typically installed on the agent nodes, e.g., the LVM plugin. Plugins have easily recognizable names such as “lvm” or “ebs”.
A set of parameters that can be used to configure a volume. Volume profiles are used to classify volumes according to user’s use cases. For example, a user could group all his SSDs into a “fast” profile while grouping HDDs into a “slow” volume profile. Volume profiles are immutable and therefore cannot contain references to specific devices, nodes or other ephemeral identifiers. The CLI sub-command is called “profile” instead of “volume profile” for the sake of brevity.
A chunk of storage capacity allocated from a volume provider. This term is inherited from the CSI Specification. A volume maps to the concept of a Mesos Volume, although not all Mesos Volumes correspond to CSI volumes (e.g., Mesos Container Volume, Mesos Persistent Volume).