Go to file
Joshua Moody 43318cd24f enhancements: Add LEP for backupstore file locks
The idea is to implement a locking mechanism that utilizes the backupstore,
to prevent the following dangerous cases of concurrent operations.
1. prevent backup deletion during backup restoration
2. prevent backup deletion while a backup is in progress
3. prevent backup creation during backup deletion
4. prevent backup restoration during backup deletion

The locking solution shouldn't unnecessary block operations, so the
following cases should be allowed.
1. allow backup creation during restoration
2. allow backup restoration during creation

The locking solution should have a maximum wait time for lock acquisition,
which will fail the backup operation so that the user does not have to wait
forever.

The locking solution should be self expiring, so that when a process dies
unexpectedly, future processes are able to acquire the lock.

The locking solution should guarantee that only a single type of lock is
active at a time.

The locking solution should allow a lock to be passed down into async
running go routines.

Longhorn #612

Signed-off-by: Joshua Moody <joshua.moody@rancher.com>
2020-07-07 10:09:24 -07:00
.github Update issue templates 2020-02-27 13:55:30 -08:00
chart dev/scripts, deploy, chart/templates: change imagePullPolicy to IfNotPresent for manager, ui, driver deployer. Also add a bash script to update the image pull policy to be Always 2020-07-02 10:35:18 -07:00
deploy Update version to v1.0.0 2020-05-30 10:03:43 -07:00
dev/scripts dev/scripts, deploy, chart/templates: change imagePullPolicy to IfNotPresent for manager, ui, driver deployer. Also add a bash script to update the image pull policy to be Always 2020-07-02 10:35:18 -07:00
enhancements enhancements: Add LEP for backupstore file locks 2020-07-07 10:09:24 -07:00
examples Add rwx-test deployment (append only log) 2020-07-01 12:16:34 -07:00
scripts Sync with manager 2020-04-24 15:07:05 -07:00
uninstall Update version to v1.0.0 2020-05-30 10:03:43 -07:00
CODE_OF_CONDUCT.md Update to CNCF code of conduct 2019-12-04 11:10:13 -08:00
CONTRIBUTING.md Update CONTRIBUTING.md 2019-08-20 10:13:21 -10:00
LICENSE Initial commit 2017-04-14 12:57:02 -07:00
longhorn-ui.png Add the new Longhorn UI PNG 2019-11-08 11:20:19 -08:00
MAINTAINERS Add community section in the README.md 2019-08-20 09:36:36 -10:00
README.md Update README.md to specify NFS version is v4 2020-06-25 17:09:11 -07:00

Longhorn Astronomer

Build Status

  • Engine: Build Status Go Report Card
  • Instance Manager: Build StatusGo Report Card
  • Manager: Build StatusGo Report Card
  • UI: Build Status
  • Test: Build Status

Overview

Longhorn is a distributed block storage system for Kubernetes.

Longhorn is lightweight, reliable, and powerful. You can install Longhorn on an existing Kubernetes cluster with one kubectl apply command or using Helm charts. Once Longhorn is installed, it adds persistent volume support to the Kubernetes cluster.

Longhorn implements distributed block storage using containers and microservices. Longhorn creates a dedicated storage controller for each block device volume and synchronously replicates the volume across multiple replicas stored on multiple nodes. The storage controller and replicas are themselves orchestrated using Kubernetes. Here are some notable features of Longhorn:

  1. Enterprise-grade distributed storage with no single point of failure
  2. Incremental snapshot of block storage
  3. Backup to secondary storage (NFSv4 or S3-compatible object storage) built on efficient change block detection
  4. Recurring snapshot and backup
  5. Automated non-disruptive upgrade. You can upgrade the entire Longhorn software stack without disrupting running volumes!
  6. Intuitive GUI dashboard

You can read more technical details of Longhorn here.

Current status

The latest release of Longhorn is v1.0.0.

Source code

Longhorn is 100% open source software. Project source code is spread across a number of repos:

  1. Longhorn engine -- Core controller/replica logic https://github.com/longhorn/longhorn-engine
  2. Longhorn manager -- Longhorn orchestration https://github.com/longhorn/longhorn-manager
  3. Longhorn UI -- Dashboard https://github.com/longhorn/longhorn-ui

Longhorn UI

Requirements

For the installation requirements, refer to the Longhorn documentation.

Install

Longhorn can be installed on a Kubernetes cluster in several ways:

Documentation

The official Longhorn documentation is here.

Community

Longhorn is an open source software, so contribution are greatly welcome. Please read Code of Conduct and Contributing Guideline before contributing.

Contributing code is not the only way of contributing. We value feedbacks very much and many of the Longhorn features are originated from users' feedback. If you have any feedbacks, feel free to file an issue and talk to the developers at the CNCF #longhorn slack channel.

License

Copyright (c) 2014-2020 The Longhorn Authors

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Longhorn is a CNCF Sandbox Project

Longhorn is a CNCF Sandbox Project