The following figure shows the high level architecture of the storage support in DC/OS.
One of the most important components in this architecture is the DC/OS Storage Service (DSS), a service that manages volumes, volume profiles, volume providers, and storage devices in the cluster. DSS serves as the brain of the storage support by collecting storage related information from various components in the cluster, keeping track of their states, and acting on user requests.
Volumes are modeled as Mesos resources (“disk” resources) so that all the resource management features (e.g., quota, fair sharing, weights) from Mesos apply to volumes. DSS itself is a Mesos framework that registers with the Mesos master, and manages “disk” resources offered from Mesos.
Devices from each agent are reported to DSS as Mesos RAW disk resources. Those devices can be used to create LVM volume providers. Currently, there is a 1:1 mapping between volume providers and Mesos Storage Local Resource Providers (SLRP). Creating a volume provider effectively means creating a SLRP. To create a volume provider, DSS will ask the Mesos agent operator API to create a SLRP.
Each SLRP is associated with a CSI plugin that is responsible for talking to the actual storage backend. Each CSI plugin is a set of long running gRPC services, whose lifecycles are managed by the corresponding SLRP. More details can be found here.
DSS is also responsible for creating volumes by converting Mesos RAW disk resources to either MOUNT or BLOCK disk resources and deleting volumes by doing the reverse. Created MOUNT or BLOCK disk resources will be offered to other frameworks in the cluster. These frameworks can then use the disk resources in the same way as they would use other MOUNT or BLOCK disk resources.
Cluster administrators can use DC/OS CLI to interact with DC/OS Storage Service (DSS) using the newly introduced ‘storage’ CLI sub-command. See more details in the CLI References section.