Torus is an open source project for distributed storage coordinated throughetcd.
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 byetcd. 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.
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.
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 , or learn more about setting up Torus on Kubernetes using FlexVolumesin contrib.
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 thekind/design tag, contribute on bugs that arelow hanging fruit for issue ideas and check theproject layout for a guide to the sections that might interest you.
Unless otherwise noted, all code in the Torus repository is licensed under theApache 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.