Torus Distributed Storage
Go Other
Latest commit b783b16 Dec 13, 2016 @xiang90 xiang90 committed on GitHub Merge pull request #419 from nak3/flex-mkdir
flex: tiny: catch error when failed to create directory
Permalink
Failed to load latest commit information.
Documentation Merge pull request #379 from nak3/doc-inode Nov 29, 2016
block Merge pull request #380 from nak3/torulblk-attach-message Nov 29, 2016
blockset output error whenever it is not nil Nov 4, 2016
cliconfig Support torusctl config command to write config file Sep 7, 2016
cmd Merge pull request #419 from nak3/flex-mkdir Dec 13, 2016
contrib Merge branch 'k8s-readme' of https://github.com/nak3/torus into nak3-… Nov 29, 2016
dev-internal Add a preliminary release doc. Fixes #144 May 27, 2016
distributor Merge pull request #432 from nak3/tdp-error Dec 13, 2016
gc output error whenever it is not nil Nov 4, 2016
integration metadata: GobalMetadata doesn't return error Sep 23, 2016
internal Merge pull request #380 from nak3/torulblk-attach-message Nov 29, 2016
metadata Merge pull request #378 from nak3/output-error Nov 29, 2016
models Add version checking to PeerInfo, useful for deprecating features. Fi… Jun 14, 2016
ring mod: fixed gopanic when enough nodes doesn't exist Dec 10, 2016
storage Add all comments from Luis' review of the code Nov 19, 2016
.gitignore add default data directory Aug 30, 2016
.travis.yml *: Use glide in Makefile Jun 2, 2016
Dockerfile Bump raw to support BSD, Fix #231 Jun 6, 2016
LICENSE Initial commit Oct 23, 2015
MAINTAINERS add MAINTAINERS Jun 1, 2016
Makefile add subdir to releasetar Sep 15, 2016
Procfile Fix Procfile flags, and reinstate etcd default Sep 1, 2016
README.md Merge pull request #255 from egustafson/eg-feat-misspell Jun 13, 2016
blockset.go blockset.go: doc blockset interface Jun 5, 2016
config.go Add etcd TLS client certificate authentication Jul 24, 2016
entrypoint.sh adp->tdp, update readme, various getting started cleanups Jun 1, 2016
errors.go torusblk.nbd: return nbd functions before calling os.Exit(1) Sep 26, 2016
file.go file: tiny: output read offset with decimal number same as write Dec 7, 2016
file_blackbox_test.go metadata: GobalMetadata doesn't return error Sep 23, 2016
file_cache.go fix oversync bug, don't clear the cache, fix nits Jun 14, 2016
glide.lock Merge pull request #386 from nak3/fix-aoe-issue Nov 29, 2016
glide.yaml Add all comments from Luis' review of the code Nov 19, 2016
heartbeat.go Add version checking to PeerInfo, useful for deprecating features. Fi… Jun 14, 2016
inode.go Added go fmt as CI step & fixed formatting Jun 1, 2016
local_server.go Add all comments from Luis' review of the code Nov 19, 2016
metadata.go Merge pull request #398 from barakmich/luis Nov 29, 2016
ring.go ring: tiny: improve info message Dec 11, 2016
server.go Merge pull request #407 from nak3/remove-writeableLock-in-server Nov 29, 2016
storage.go Add all comments from Luis' review of the code Nov 19, 2016
version.go Add short package comments to every package. Fixes #194 Jun 14, 2016

README.md

Torus

Build Status Go Report Card GoDoc

Torus is an open source project for distributed storage coordinated through etcd.

Torus provides a resource pool and basic file primitives from a set of daemons running atop multiple nodes. These primitives are made consistent by being append-only and coordinated by etcd. From these primitives, a Torus server can support multiple types of volumes, the semantics of which can be broken into subprojects. It ships with a simple block-device volume plugin, but is extensible to more.

Quick-glance overview

Sharding is done via a consistent hash function, controlled in the simple case by a hash ring algorithm, but fully extensible to arbitrary maps, rack-awareness, and other nice features. The project name comes from this: a hash 'ring' plus a 'volume' is a torus.

Project Status

Torus is at an early stage and under active development. We do not recommend its use in production, but we encourage you to try out Torus and provide feedback via issues and pull requests. Consequently, speed, while nice to have, is a secondary concern to stability at this time.

Trying out Torus

To get started quicky using Torus for the first time, start with the guide to running your first Torus cluster, learn more about setting up Torus on Kubernetes using FlexVolumes in contrib, or create a Torus cluster on bare metal.

Contributing to Torus

Torus is an open source project and contributors are welcome! Join us on IRC at #coreos on freenode.net, file an issue here on Github, check out bigger plans on the kind/design tag, contribute on bugs that are low hanging fruit for issue ideas and check the project layout for a guide to the sections that might interest you.

Licensing

Unless otherwise noted, all code in the Torus repository is licensed under the Apache 2.0 license. Some portions of the codebase are derived from other projects under different licenses; the appropriate information can be found in the header of those source files, as applicable.