LeoFS

LeoFS是一种用于Web的非结构化对象/数据存储,并且具备高度可用、分布式和最终一致性的存储系统。(LeoFS is an unstructured object/data storage for the Web and a highly available, distributed, eventually consistent storage system.)

Github星跟蹤圖

LeoFS是一个高度可用、分布式、最终一致的对象/blob存储。 如果您正在搜索能够存储大量和各种文件(如照片,电影,日志数据等)的存储系统,则LeoFS适用于此。

LeoFS正在支持以下功能:
  • 多协议
      \t
    • S3-API支持
      \t
        \t\t
      • LeoFS是一款Amazon S3兼容存储系统。
      • \t\t
      • 切换到LeoFS,从更昂贵的公共云解决方案中降低成本。
      • \t
      \t
    • REST-API支持\t
        \t\t
      • 使用REST-API轻松访问LeoFS
      • \t
    • \t
    • NFS支持\t
        \t\t
      • NFS支持由LeoFS v1.1提供,当前状态为beta。
      • \t
  • 大对象支持
      \t
    • LeoFS涵盖处理大尺寸对象。
  • 多数据中心复制
      \t
    • LeoFS是一种高度可扩展,容错的分布式文件系统,无需SPOF。
    • \t
    • LeoFS的集群可以被视为巨大的容量存储。 它由一组松散连接的节点组成。
    • \t
    • 我们可以建立一个易于操作的全球化存储系统

LeoFS由3个应用程序组成:LeoFS存储、LeoFS网关和依赖于Erlang的LeoFS管理器。

LeoFS Gateway在使用REST-API或S3-API时处理任何客户端的http请求和http响应。 此外,它已经内置在对象缓存机制(内存和磁盘缓存)中。
LeoFS存储处理GET、PUT和DELETE对象以及元数据。 此外,它还具有复制器、恢复器和排队机制,以保持运行存储节点并实现最终的一致性。
LeoFS管理器始终监视LeoFS网关和LeoFS存储节点。 主要监控状态为节点状态和RING校验和,以实现高可用性并保持数据一致性。
LeoFS可以使用S3客户端和每种编程语言的S3客户端库访问LeoFS服务器。

概覽

名稱與所有者leo-project/leofs
主編程語言Erlang
編程語言Makefile (語言數: 8)
平台
許可證Apache License 2.0
發布數101
最新版本名稱1.4.4 (發布於 )
第一版名稱0.9.0 (發布於 2012-07-05 14:13:46)
創建於2012-06-06 15:29:16
推送於2020-06-02 10:33:51
最后一次提交2018-04-24 19:31:51
星數1.5k
關注者數86
派生數155
提交數1.7k
已啟用問題?
問題數986
打開的問題數254
拉請求數201
打開的拉請求數1
關閉的拉請求數23
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?

LeoFS - A Storage System for a Data Lake and the Web

Join the chat at https://gitter.im/leo-project/leofs Release Build Status

LeoFS Logo

Overview

LeoFS is an Enterprise Open Source Storage, and it is a highly available, distributed, eventually consistent object/blob store. If you are seeking a storage system that can 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:

  • Multi Protocol
    • S3-API Support
      • LeoFS is an Amazon S3 compatible storage system.
      • Switch to LeoFS to decrease your cost from more expensive public-cloud solutions.
    • REST-API Support
    • NFS Support
      • NFS support was provided from LeoFS v1.1, the current status of which is beta.
  • Large Object Support
    • LeoFS covers handling large size objects.
  • Multi Data Center Replication
    • LeoFS is a highly scalable, fault-tolerant distributed file system without SPOF.
    • LeoFS's cluster can be viewed as a huge capacity storage. It consists of a set of loosely connected nodes.
    • We can build a global scale storage system with easy operations

Architecture

leofs-architecture-1

LeoFS consists of three core components - LeoStorage, LeoGateway and LeoManager which depend on Erlang.

LeoGateway handles http-request and http-response from any clients when using REST-API OR S3-API. Also, it is already built in the object-cache mechanism (memory and disk cache).

LeoStorage handles GET, PUT and DELETE objects as well as metadata. Also, it has replicator, recoverer and queueing mechanism in order to keep running a storage node and realise eventual consistency.

LeoManager always monitors LeoGateway and LeoStorage nodes. The main monitoring status are Node status and RING’s checksum in order to realise to keep high availability and keep data consistency.

You can access a LeoFS system using Amazon S3 clients and the SDK.

Slide

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

GOALs

  • LeoFS has been aiming to provide high reliability, high scalability, and high cost performance ratio:
    • 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

  • LeoFS Documentation.

Build LeoFS with LeoFS Packages

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

  • LeoProject
    • CentOS 6.x, 7.x
    • Ubuntu 14.04, 16.04
  • Community
    • FreeBSD

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.

Build Dependencies

## [CentOS]
$ sudo yum install cmake check-devel gcc gcc-c++ make
## [Ubuntu]
$ sudo apt-get install gcc g++ cmake make check libtool
### For Docker
$ apt-get install lsb-release

Install Erlang

You can install Erlang with kerl.

$ curl -O https://raw.githubusercontent.com/kerl/kerl/master/kerl
$ chmod a+x kerl
$ mkdir -p ~/bin
$ mv kerl ~/bin/
$ echo "export PATH=$PATH:~/bin" >> ~/.bashrc
$ source ~/.bashrc
  • Install Erlang (Erlang/OTP 19.3)
$ kerl build 19.3 19.3
$ kerl list builds
19.3,19.3

$ kerl install 19.3 /path/to/19.3
$  kerl list installations
19.3 /path/to/19.3

$ source /path/to/19.3/activate
$ kerl active
The current active installation is:
/path/to/19.3

Install LeoFS

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 && make release_for_test

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 Confiuration]
-----------------------------------+----------
 Item, Value
-----------------------------------+----------
 Basic/Consistency level
-----------------------------------+----------
                    system version, 1.3.4
                        cluster Id, leofs_1
                             DC Id, dc_1
                    Total replicas, 1
          number of successes of R, 1
          number of successes of W, 1
          number of successes of D, 1
 number of rack-awareness replicas, 0
                         ring size, 2^128
-----------------------------------+----------
 Multi DC replication settings
-----------------------------------+----------
 [mdcr] max number of joinable DCs, 2
 [mdcr] total replicas per a DC, 1
 [mdcr] number of successes of R, 1
 [mdcr] number of successes of W, 1
 [mdcr] number of successes of D, 1
-----------------------------------+----------
 Manager RING hash
-----------------------------------+----------
                 current ring-hash, previous ring-hash, -----------------------------------+----------

 [State of Node(s)]
-------+--------------------------+--------------+----------------+----------------+----------------------------
 type, node, state, current ring, prev ring, updated at
-------+--------------------------+--------------+----------------+----------------+----------------------------
  S, storage_0@127.0.0.1, attached, 2017-06-02 14:59:20 +0900
-------+--------------------------+--------------+----------------+----------------+----------------------------

$ ./leofs-adm start
OK

$ ./leofs-adm status
 [System Confiuration]
-----------------------------------+----------
 Item, Value
-----------------------------------+----------
 Basic/Consistency level
-----------------------------------+----------
                    system version, 1.3.4
                        cluster Id, leofs_1
                             DC Id, dc_1
                    Total replicas, 1
          number of successes of R, 1
          number of successes of W, 1
          number of successes of D, 1
 number of rack-awareness replicas, 0
                         ring size, 2^128
-----------------------------------+----------
 Multi DC replication settings
-----------------------------------+----------
 [mdcr] max number of joinable DCs, 2
 [mdcr] total replicas per a DC, 1
 [mdcr] number of successes of R, 1
 [mdcr] number of successes of W, 1
 [mdcr] number of successes of D, 1
-----------------------------------+----------
 Manager RING hash
-----------------------------------+----------
                 current ring-hash, 433fe365
                previous ring-hash, 433fe365
-----------------------------------+----------

 [State of Node(s)]
-------+--------------------------+--------------+----------------+----------------+----------------------------
 type, node, state, current ring, prev ring, updated at
-------+--------------------------+--------------+----------------+----------------+----------------------------
  S, storage_0@127.0.0.1, running, 433fe365, 433fe365, 2017-06-02 15:00:10 +0900
  G, gateway_0@127.0.0.1, running, 433fe365, 433fe365, 2017-06-02 15:00:12 +0900
-------+--------------------------+--------------+----------------+----------------+----------------------------

Build a LeoFS Cluster

You can easily build a LeoFS cluster. See here.

Configure LeoFS

About the configuration of LeoFS, See here.

Benchmarking

You can benchmark LeoFS with Basho Bench, and here is a documentation to benchmark LeoFS.

Integration Test

You can test LeoFS with leofs_test whether LeoFS has issues or not before getting installed LeoFS in your dev/staging/production environment(s).

Milestones

Version 1

  • DONE - v1.0
    • Multi Data Center Replication
    • Increase compatibility S3-APIs#5
      • Other bucket operations
  • DONE - v1.1
    • NFS v3 Support (alpha)
    • Improve Web GUI Console (Option)
  • DONE - v1.2
    • NFS v3 Support (beta)
    • Watchdog
    • Automated data-compaction
  • DONE - v1.3
    • NFS v3 Support (stable)
    • Improve compatibility S3-APIs#6
  • DONE - v1.4
    • Improvement of the core features
    • Integration with distributed computing frameworks#1
      • Hadoop integration
      • Spark integration

Version 2

  • WIP - v2.0
    • Erasure Code
    • Improve Data Security for GDPR and Enterprise Storages
    • Improve compatibility S3-APIs#7
    • NFS v3 Support (stable)
      • Improve performance of the list objects, the ls command
    • Improvement of the Multi Data Center Replication
    • Searching objects by a custom-metadata
  • v2.1
    • Hinted Hand-off
    • Improve compatibility S3-APIs#8
      • Objects Expiration into a Bucket
      • Object Versioning
    • Kubernetes Persistent Volumes Support
    • Integration with distributed computing frameworks#2
      • Hadoop integration
      • Spark integration
    • Improve Web GUI console, LeoFS Center (option)
  • v2.2
    • Data Deduplication
    • Improve compatibility S3-APIs#9

Versioning Policy

LeoFS adheres to the versioning policy from v1.3.3.

Licensing

LeoFS is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Sponsors

去到頂部