Skip to content

Latest commit

 

History

History
61 lines (36 loc) · 3.35 KB

README.md

File metadata and controls

61 lines (36 loc) · 3.35 KB

DirectPV

build license

DirectPV is a CSI driver for dynamically provisioning direct persistent volumes.

Architecture Diagram

Modern distributed datastores such as MinIO, Elastic, Cassandra, and MongoDB are designed to for locally attached drives (Local PV). These data services handle high availability and data durability by themselves. Running them on traditional SAN or NAS based CSI drivers (Network PV) adds yet another layer of replication/erasure coding and extra network hops in the datapath. This additional layer of disaggregation results in increased-complexity and poor performance.

Historically, these datastores relied on Kubernetes-provided HostPath and LocalPV for using locally attached drives. Local and Host Path Volume drivers are manual, static and ephemeral, introducing management complexity.

QuickStart

Here is the extremely quickstart:

kubectl krew install directpv
kubectl directpv install
kubectl directpv drives ls
# choose all the drives that directpv should manage and format them
kubectl directpv drives format --drives $DRIVE_SELECTOR_ELLIPSES --nodes $NODE_SELECTOR_ELLIPSES
# 'directpv-min-io' can now be specified as the storageclass in PodSpec.VolumeClaimTemplates

For more information, please visit our documentation.

How is it different from LocalVolume provisioner?

LocalVolume provisioner also allows direct access to the storage medium. However, it requires manual management of drives and volumes - i.e. it does not support dynamic provisioning of volumes, storage management or dynamic scheduling of pods on nodes with available volumes.

DirectPV on the other hand, supports dynamic provisioning of volumes, performs allocation of volumes based on storage capacity, and schedules pods to run on nodes which have most capacity available.

How is it different from HostPath volume?

HostPath volume also allows direct access to the storage medium. However, it only supports ephemeral volumes. i.e. pod scheduling is not tied to volume provisioning. Therefore, if a pod is rescheduled or restarted, it might end up on a node where the data is not available. However, since HostPath volumes are ephemeral, pod startup will go on without raising any errors.

HostPath volumes cannot be provisioned and managed via PVC resources. It is always provisioned either manually as a PV or directly specified in the PodSpec.

Limitations of DirectPV

The high consistency and performance benefits of DirectPV come with the limitation that once provisioned, volumes cannot be moved to other nodes i.e. volumes are sticky to nodes.

References

LICENSE

Use of directpv driver is governed by the GNU AGPLv3 license that can be found in the LICENSE file.

Security

Important: Report security issues to security@min.io. Please do not report security issues here.