All Projects → openebs → jiva

openebs / jiva

Licence: Apache-2.0 License
CAS Data Engine - iSCSI Distributed Block Storage Controller built-in Go

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects
python
139335 projects - #7 most used programming language
Makefile
30231 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to jiva

jiva-operator
Kubernetes Operator for managing Jiva Volumes via custom resource.
Stars: ✭ 31 (-74.38%)
Mutual labels:  storage, openebs
Openebs
Leading Open Source Container Attached Storage, built using Cloud Native Architecture, simplifies running Stateful Applications on Kubernetes.
Stars: ✭ 7,277 (+5914.05%)
Mutual labels:  storage, openebs
beegfs-csi-driver
The BeeGFS Container Storage Interface (CSI) driver provides high performing and scalable storage for workloads running in Kubernetes.
Stars: ✭ 32 (-73.55%)
Mutual labels:  storage, csi-driver
cstor-operators
Collection of OpenEBS cStor Data Engine Operators
Stars: ✭ 77 (-36.36%)
Mutual labels:  storage, openebs
lvm-localpv
CSI Driver for dynamic provisioning of Persistent Local Volumes for Kubernetes using LVM.
Stars: ✭ 86 (-28.93%)
Mutual labels:  storage, csi-driver
selectel-storage-php-class
PHP class for Selectel storage
Stars: ✭ 42 (-65.29%)
Mutual labels:  storage
incubator-linkis
Linkis helps easily connect to various back-end computation/storage engines(Spark, Python, TiDB...), exposes various interfaces(REST, JDBC, Java ...), with multi-tenancy, high performance, and resource control.
Stars: ✭ 2,459 (+1932.23%)
Mutual labels:  storage
elara
Elara DB is an easy to use, lightweight key-value database that can also be used as a fast in-memory cache. Manipulate data structures in-memory, encrypt database files and export data. 🎯
Stars: ✭ 93 (-23.14%)
Mutual labels:  storage
Less3
Less3 is an S3-compatible object storage server that runs on your laptop, servers, just about anywhere!
Stars: ✭ 16 (-86.78%)
Mutual labels:  storage
arc gcs
Provides an Arc backend for Google Cloud Storage
Stars: ✭ 48 (-60.33%)
Mutual labels:  storage
lockbox-datastore
Experimental Data Storage module for Firefox Lockbox project, not being actively developed
Stars: ✭ 26 (-78.51%)
Mutual labels:  storage
kipp
A flexible file storage server
Stars: ✭ 33 (-72.73%)
Mutual labels:  storage
DTC
DTC is a high performance Distributed Table Cache system designed by JD.com that offering hotspot data cache for databases in order to reduce pressure of database and improve QPS.
Stars: ✭ 21 (-82.64%)
Mutual labels:  storage
openebsctl
`openebsctl` is a kubectl plugin to manage OpenEBS storage components.
Stars: ✭ 23 (-80.99%)
Mutual labels:  openebs
FireFiles
Powerful Android File Manager for everything that runs on Android OS (Android TV, Android Watch, Mobile, etc)
Stars: ✭ 37 (-69.42%)
Mutual labels:  storage
hermitage-skeleton
Hermitage Skeleton
Stars: ✭ 16 (-86.78%)
Mutual labels:  storage
pvc-autoresizer
Auto-resize PersistentVolumeClaim objects based on Prometheus metrics
Stars: ✭ 124 (+2.48%)
Mutual labels:  storage
nft.storage-tools
🛠 Utilities for working with nft.storage.
Stars: ✭ 15 (-87.6%)
Mutual labels:  storage
Kvpbase
Scalable, simple RESTful object storage platform, written in C#
Stars: ✭ 43 (-64.46%)
Mutual labels:  storage
oxen-storage-server
Storage server for Oxen Service Nodes
Stars: ✭ 19 (-84.3%)
Mutual labels:  storage

Jiva

Build Status Releases Docker Pulls Slack Community Meetings Twitter PRs Welcome Codacy Badge Go Report Card GoDoc CII Best Practices FOSSA Status

OpenEBS Logo

OpenEBS Jiva can be used to dynamically provision highly available Kubernetes Persistent Volumes using local (ephemeral) storage available on the Kubernetes nodes.


Overview

Jiva provides containerized block storage controller.

Jiva Operator helps with dynamically provisioning Jiva Volumes and managing their lifecycle.

Usage

Supported Block Storage Features

  • Thin Provisioning
  • Enforce volume quota
  • Synchronous replication
  • High Availability
  • Incremental/Full Snapshot
  • Full Backup and Restore (using Velero)
  • Supports OS/ARCH: linux/arm64, linux/amd64

How does High Availability work?

Jiva comprises of two components:

  • A Target ( or a Storage Controller) that exposes iSCSI, while synchronously replicating the data to one or more Replicas.
  • A set of Replicas that a Target uses to read/write data. Each of the replicas will be on a different node to ensure high availability against node or network failures. The Replicas save the data into sparse files on the host filesystem directories.

For ensuring that jiva volumes can sustain a node failure, the volumes must be configured with atleast 3 replicas. The target will serve the data as long as there are two healthy replicas. When a node with a replica fails and comes back online, the replica will start in a degraded mode and start rebuilding the missed data from the available healthy replicas.

If 2 of the 3 replicas go offline at the same time, then volume will be marked as read-only. This ensures that target can decided which of the replicas has the latest data.

How does Jiva Perform?

Jiva is optimized for consistency and availability and not performance. There is a significant degradation in performance compared to local storage due to the following design choices:

  • Jiva uses "strong consistency" approach where target will make the write operation as completed only after the data is confirmed to be written to all the healthy replicas.
  • Also Jiva does not implement any caching logic, to allow for the jiva target and replica containers to be ephemeral.
  • Jiva engine is completely written in user space to be able to run on any platform and make upgrades seamless.

If you need low latency storage, please checkout other OpenEBS Engines like Mayastor and Local PVs.

Who uses Jiva?

Some of the organizations that have publicly shared the usage of Jiva.

You can see the full list of organizations/users using OpenEBS here.

If you are using Jiva, and would like yourself to be listed in this page as a an adopter, please raise an issue with the following details:

  • Stateful Applications that you are running on OpenEBS
  • Are you evaluating or already using in development, CI/CD, production
  • Are you using it for home use or for your organization
  • A brief description of the use case or details on how OpenEBS is helping your projects.

If you would like your name (as home user) or organization name to be added to the ADOPTERS.md, please provide a preferred contact handle like github id, twitter id, linkedin id, website etc.

Contributing

OpenEBS welcomes your feedback and contributions in any form possible.

Code of conduct

Please read the community code of conduct here.

Inspiration and Credit

OpenEBS Jiva uses the following two projects:

  • Fork of the Longhorn engine, which helped with the significant portion of the code in this repo, helped us to validate that Storage controllers can be run as microservices and they can be coded in Go.
  • The iSCSI functionality is provided by gostor/gotgt.

License

FOSSA Status

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].