Git Product home page Git Product logo

leofs's Introduction

LeoFS - The Lion of Storage Systems

LeoFS Logo

LeoFS is a highly available, distributed, eventually consistent object/blob store. If you are searching a storage system that is able to store huge amount and various kind of files such as photo, movie, log data and so on, LeoFS is suitable for that.

LeoFS is supporting the following features:

  • S3-API Support
    • LeoFS is an Amazon S3 compatible storage system.
    • Switch to LeoFS to decrease your cost from more expensive public-cloud solutions.
  • Large Object Support
    • LeoFS can handle files with more than GB
  • Multi Data Center Replication
    • LeoFS is a highly scalable, fault-tolerant distributed file system without SPOF.
    • LeoFS's cluster can be viewed as ONE-HUGE storage. It consists of a set of loosely connected nodes.
    • We can build a global scale storage system with easy operations

We can access LeoFS server using S3 clients and S3 client libries of each programming language.

Slide

The presentation - Scaling and High Performance Storage System: LeoFS was given at Erlang User Conference 2014 in Stockholm on June 2014

GOALs

  • LeoFS aims to provide all of 3-HIGHs as follow:
    • HIGH Reliability
      • Nine nines - Operating ratios is 99.9999999%
    • High Scalability
      • Build huge-cluster at low cost
    • HIGH Cost Performance
      • Fast - Over 10Gbps
      • A lower cost than other storage
      • Provide easy management and easy operation

Further Reference

Build LeoFS with LeoFS Packages

LeoFS packages have been already provided on the Web. You're able to easily install LeoFS on your environments.

Here is the installation manual.

Build LeoFS From Source (For Developers)

Here, we explain how to build LeoFS from source code.

First, you have to install the following packages to build Erlang and LeoFS.

## [CentOS]
$ sudo yum install libuuid-devel cmake check check-devel
## [Ubuntu]
$ sudo apt-get install build-essential libtool libncurses5-dev libssl-dev cmake check

Then, install Erlang.

##
## 1. Install libatomic
##
$ wget http://www.hpl.hp.com/research/linux/atomic_ops/download/libatomic_ops-7.2d.tar.gz
$ tar xzvf libatomic_ops-7.2d.tar.gz
$ cd libatomic_ops-7.2d
$ ./configure --prefix=/usr/local
$ make
$ sudo make install

##
## 2. Install Erlang (R16B03-1)
##
$ wget http://www.erlang.org/download/otp_src_R16B03-1.tar.gz
$ tar xzf otp_src_R16B03-1.tar.gz
$ cd otp_src_R16B03-1
$ ./configure --prefix=/usr/local/erlang/R16B03-1 \
              --enable-smp-support \
              --enable-m64-build \
              --enable-halfword-emulator \
              --enable-kernel-poll \
              --without-javac \
              --disable-native-libs \
              --disable-hipe \
              --disable-sctp \
              --enable-threads \
              --with-libatomic_ops=/usr/local
$ make
$ sudo make install

##
## 3. Set PATH
##
$ vi ~/.profile
    ## append the follows:
    export ERL_HOME=/usr/local/erlang/R16B03-1
    export PATH=$PATH:$ERL_HOME/bin

$ source ~/.profile

Then, clone source of LeoFS and libraries from GitHub.

$ git clone https://github.com/leo-project/leofs.git
$ cd leofs
$ git checkout -b develop remotes/origin/develop
$ ./rebar get-deps
$ ./git_checkout.sh develop

Then, build LeoFS with the following commands.

$ make clean
$ make
$ make release

Now, you can find the LeoFS package as follow.

$ ls package/
leo_gateway/  leo_manager_0/  leo_manager_1/  leo_storage/  README.md

Then, we can start and access LeoFS with the following commands. Also, you're able to easily operate LeoFS with leofs-adm script.

$ package/leo_manager_0/bin/leo_manager start
$ package/leo_manager_1/bin/leo_manager start
$ package/leo_storage/bin/leo_storage start
$ package/leo_gateway/bin/leo_gateway start
$ ./leofs-adm status
[System config]
                System version : 1.0.0
                    Cluster Id : leofs_1
                         DC Id : dc_1
                Total replicas : 1
           # of successes of R : 1
           # of successes of W : 1
           # of successes of D : 1
 # of DC-awareness replicas    : 0
                     ring size : 2^128
             Current ring hash : 941f20fc
                Prev ring hash : 000000-1
[Multi DC replication settings]
         max # of joinable DCs : 2
            # of replicas a DC : 1

[Node(s) state]
-------+--------------------------+--------------+----------------+----------------+----------------------------
 type  |           node           |    state     |  current ring  |   prev ring    |          updated at
-------+--------------------------+--------------+----------------+----------------+----------------------------
  S    | [email protected]      | attached     |                |                | 2014-04-16 10:09:59 +0900

$ ./leofs-adm start
OK

$ ./leofs-adm status
[System config]
                System version : 1.0.0
                    Cluster Id : leofs_1
                         DC Id : dc_1
                Total replicas : 1
           # of successes of R : 1
           # of successes of W : 1
           # of successes of D : 1
 # of DC-awareness replicas    : 0
                     ring size : 2^128
             Current ring hash : 941f20fc
                Prev ring hash : 941f20fc
[Multi DC replication settings]
         max # of joinable DCs : 2
            # of replicas a DC : 1

[Node(s) state]
-------+--------------------------+--------------+----------------+----------------+----------------------------
 type  |           node           |    state     |  current ring  |   prev ring    |          updated at
-------+--------------------------+--------------+----------------+----------------+----------------------------
  S    | [email protected]      | running      | 941f20fc       | 941f20fc       | 2014-04-16 10:09:59 +0900
  G    | [email protected]      | running      | 941f20fc       | 941f20fc       | 2014-04-16 10:09:59 +0900

Build a LeoFS Cluster

You can easily build a LeoFS cluster.

Please refer here.

Configure LeoFS

About the configuration of LeoFS, please refer here.

Benchmarking

You can benchmark LeoFS with Basho Bench.

Here is a documentation to benchmark LeoFS.

Milestones

  • DONE - 1.0 (Nov 2013 - May 2014)
    • Multi Data Center Replication
    • Increase compatibility S3-APIs#5
      • Other bucket operations
  • On Going - 1.1
    • NFS Support (Alpha)
    • QoS System Phase-1 (LeoInsight - Option)
      • Support statistics/analyzer
    • Improve Web GUI Console (Option)
      • LeoInsight(QoS) Integration
  • 1.2
    • NFS Support (Beta)
    • Support auto-compaction
    • QoS System Phase-2 (LeoInsight - Option)
      • Support notifier
    • Improve compatibility S3-APIs#6
      • Objects Expiration into the bucket
      • Versioning
    • Improve Web GUI Console (Option)
      • LeoInsight(QoS) Integration
      • Support Log analysis/search
    • OpenStack Integration
      • Support for OpenStack Swift-API

Sponsors

LeoProject/LeoFS is sponsored by Rakuten, Inc. and Rakuten Institute of Technology.

leofs's People

Contributors

yosukehara avatar licenser avatar mocchira avatar egisatoshi avatar epoll avatar mmasaki avatar trociny avatar essen avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.