Skip to content

Latest commit

 

History

History
152 lines (104 loc) · 7.73 KB

longhorn.adoc

File metadata and controls

152 lines (104 loc) · 7.73 KB

Longhorn CNCF Sandbox Project Proposal

Name of Project: Longhorn

Project Description:

Longhorn is an open source distributed block storage software for Kubernetes. It is a lightweight and portable implementation of persistent storage that works for any Kubernetes cluster. The project implements distributed block device volumes that can be mounted as read-write by a single node (ReadWriteOnce).

Longhorn is designed to leverage the existing Linux technologies as much as possible, rather than building a complex storage technology stack from scratch. The software takes advange of modern high-speed and high capacity SSD and NVMe storage, and proven Linux storage features like sparse files and cgroups.

The most distinct feature of Longhorn is to implement each volume as an independent microservice. By leveraging Kubernetes to orchestrate the volumes, it implements a highly feature-rich enterprise-grade distributed block storage system with about 30K line of Golang code.

Here are the major features of Longhorn:

  • Enterprise-grade distributed storage software

  • Incremental snapshot of the block storage

  • Backup to an off-cluster backup store (NFS or S3-compatible object storage), built on efficient change block detection mechanism

  • Recurring snapshot and backup

  • Cross-cluster disaster recovery volume with defined Recovery Time Objective (RTO) and Recovery Point Objective (RPO)

  • Automated non-disruptive upgrade. You can upgrade the entire Longhorn software stack without disrupting running volumes.

  • Intuitive GUI

Architecture

Longhorn consists of the following major components:

Engine and Replicas

The Longhorn engine is the microservice used to implement each volume. The engine implements the data plane of reading and writing the block devices. Each Longhorn volume is implemented using one engine and multiple replicas. The engine always runs on the same node as the pod consuming the volume, whereas Longhorn replicas reside on different nodes to ensure redundency.

Longhorn delivers added resiliency because the data plane for each volume is separate. A software bug that causes one volume to malfunction does not impact other volumes in the system.

Manager

Longhorn manager is built on top of Kubernetes. It implements CSI driver for Longhorn and leverages Kubernetes to ensure the proper functioning of all engines and replicas. The manager relies on the Kubernetes controller pattern to manage the volume status. It also utilizes Kubernetes to implement pod orchestration, cron job, node failure detection, pod failure detection, log collection, etc.

Other Components

Besides engine and manager, Longhorn also has an intuitive GUI and a test suite which covers every major feature of Longhorn. Integration test cases are required for new features and major bug fixes.

Statement on alignment with CNCF mission:

Longhorn project aligns with CNCF’s mission to make cloud-native computing ubiquitous. Today, persistent storage support varies from Kubernetes cluster to Kubernetes cluster. As a result, users cannot deploy stateful workloads that require persistent volumes and expect their stateful workloads to work on any Kubernetes cluster. By creating a portable and lightweight implementation of persistent storage volumes, Longhorn can make persistent storage support available on every Kubernetes cluster and thus can help drive the adoption of Kubernetes technology.

Sponsors from TOC: Alexis Richardson and Liz Rice

Preferred maturity level: Sandbox

License: Apache License v2.0

Source control: GitHub

Longhorn repositories include:

External Dependencies:

The current default Longhorn frontend TGT has a binary dependency on a modified version of the upstream TGT project. The modified version is hosted at https://github.com/rancher/tgt branch longhorn, with GPLv2 license.

Initial Committers

  • Sheng Yang @yasker (Rancher Labs), since 10/2015

  • Darren Shepherd @ibuildthecloud (Rancher Labs), since 03/2016

Current Maintainer

  • Sheng Yang @yasker (Rancher Labs)

Infrastructure requests (CI / CNCF Cluster):

Development needs:

None at the moment.

Production needs:

None at the moment.

Communication Channels:

Release methodology and mechanics: The version of Longhorn is based on Sematic Versioning 2.0.0. The version number follows the pattern of MAJOR.MINOR.PATCH. We are planning to do about 3 minor versions and 1 major per year. We will do patch releases according to the necessity.

Social media accounts:

  • WIP

Existing sponsorship: Rancher Labs

Community size:

GitHub 600+ stars

Slack channel #longhorn-storage 200+ users