GithubHelp home page GithubHelp logo

bellrocktech / directpv Goto Github PK

View Code? Open in Web Editor NEW

This project forked from minio/directpv

0.0 0.0 0.0 25.09 MB

Container Storage Interface (CSI) driver for Direct Attached Storage (DAS)

Home Page: https://directpv.io

License: GNU Affero General Public License v3.0

Shell 3.46% Go 96.00% HTML 0.50% Dockerfile 0.04%

directpv's Introduction

DirectPV

DirectPV is a CSI driver for Direct Attached Storage. In a simpler sense, it is a distributed persistent volume manager, and not a storage system like SAN or NAS. It is useful to discover, format, mount, schedule and monitor drives across servers. Since Kubernetes hostPath and local PVs are statically provisioned and limited in functionality, DirectPV was created to address this limitation.

Distributed data stores such as object storage, databases and message queues are designed for direct attached storage, and they 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 data path. This additional layer of disaggregation results in increased-complexity and poor performance.

Architecture Diagram

Architecture

DirectPV is designed to be lightweight and scalable to 10s of 1000s of drives. It is made up of three components - Controller, Node Driver, UI

DirectPV Architecture

Controller

When a volume claim is made, the controller provisions volumes uniformly from a pool free drives. DirectPV is aware of pod's affinity constraints, and allocates volumes from drives local to pods. Note that only one active instance of controller runs per cluster.

Node Driver

Node Driver implements the volume management functions such as discovery, format, mount, and monitoring of drives on the nodes. One instance of node driver runs on each of the storage servers.

UI

Storage Administrators can use the kubectl CLI plugin to select, manage and monitor drives. Web based UI is currently under development.

Installation

# Install kubectl directpv plugin
kubectl krew install directpv

# Use the plugin to install directpv in your kubernetes cluster
kubectl directpv install

# Ensure directpv has successfully started
kubectl directpv info

# List available drives in your cluster
kubectl directpv drives ls

# Select drives that directpv should manage and format
kubectl directpv drives format --drives /dev/sd{a...f} --nodes directpv-{1...4}

# 'directpv' can now be specified as the storageclass in PodSpec.VolumeClaimTemplates

For air-gapped setups and advanced installations, please refer to the Installation Guide.

Upgrade

DirectPV version upgrades are seameless and transparent. Simply uninstall an existing version of directpv and install with a newer version to upgrade.

# Uninstall directpv
kubectl directpv uninstall 

# Download latest krew plugin
kubectl krew upgrade directpv

# Install using new plugin
kubectl directpv install

Security

Please review the security checklist before deploying to production.

Important: Report security issues to [email protected]. Please do not report security issues here.

Additional Resources

Join Community

DirectPV is a MinIO project. You can contact the authors over the slack channel:

License

DirectPV is released under GNU AGPLv3 license. Please refer to the LICENSE document for a complete copy of the license.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.