Git Product home page Git Product logo

vivenas's Introduction

ViveNAS

What's ViveNAS

ViveNAS is Network Attached Filesystem(NAS), which provide NFS service currently.

Aim of ViveNAS is to provide a NAS storage that has widely media adaption so we can store long term data at very cheap cost. And when the data is accessed occasionally it can be activated quickly and provide a very high performance.

Characters of ViveNAS:

  • Pursue a dynamic balance between performance and cost via combining different storage media
  • Solve the problems of long term data store, support media like tape, SMR HDD and EC algorithm
  • Get ready for CXL memory pooling and SCM technology, whenever they are ready ViveNAS can leverage them to provide outstanding performance
  • Solve the problem of small file storage
  • Provide a controlled distribution policy for enterprise storage. So it can solve problems like scaling, balancing, recovering, etc.
  • A green storage, that can make a full utilize to resource like RAM, CPU which are over-provisioned in modern datacenter.

ViveNAS dependents on two core technology to provide above ability: Core tech 1,the PureFlash Server SAN system

PureFlash provide all features that are related with distribution system, include HA, fault tolerance, snapshot, clone.

PureFlahs is a distributed ServerSAN storage system with it's design philosophy from fully FPGA implemented all-flash system. So PureFlash has a very simple IO stack.

Differ to other distributed storage system which based on hash algorithm, distribution of data in PureFlash is totally controllable. This provide the stability for enterprise storage, for the "human being" rather than a "machine" have the final decision. (Refer github.com/cocalele/PureFlash for more)

PureFlash support to manage different media in one cluster, include NVMe SSD, HDD, tape and support access as AOF file.

All the above features give a solid support to ViveNAS.

Core tech 2,SLM tree based VIVEFS

ViveFS is a userspace filesystem based on LSM tree. LSM tree have two major characters: store in multiple levels; sequential write only in each level.

ViveFS put level 0 into DRAM or CXL memory pool, while the other levels will be put into different medias provided by PureFlash. All level data are highly available.

The second benefit of LSM tree, i.e. sequential write, make it very suitable for SMR HDD and tape. So ViveNAS can put cold data into cheap media for long term store. This is one of major aim of ViveNAS. Also sequential write is very friendly to EC algorithm, with which can make cost lower.

architecture

+-------------------+
|Ganesha-NAS portal |
+-------------------+
         |
         |
+--------v----------+
|ViveNAS FSAL       |
+-------------------+
         |
         |
+--------v----------+
| LSM K-V (rocksdb) |
+-------------------+
         |
         |
+--------v----------+
| PureFlash (AOF)   |
+-------------------+
         |
         |
+--------v----------+
| Multiple Medias   |
+-------------------+

Build and run

setup build environment from scratch

  1. follow the guides in PureFlash/build_and_run.txt to setup a compile environment for PureFlash
  2. For ubuntu, run following command to install additional dependency:
  # apt install liburcu-dev  bison flex libgflags-dev  libblkid-dev

To simplify the compiling process, some thirdparty libraryies are prebuild into binary. For now only ubuntu20.04 is supported.

use the container for build

It may be a bit complicate to setup build environment from scratch since ViveNAS/PureFlash use many third party libraries. I strongly suggest you to use the container for build

# docker pull pureflash/vivenas-dev:1.9

All the dependencies and build tools have already deployed in this container. 2) clone code

  # git clone https://github.com/cocalele/ViveNAS.git
  1. build
  # mkdir build; cd build
  # cmake .. -GNinja -DCMAKE_BUILD_TYPE=Debug

Performance estimation

accord to rocksdb benchmark, https://github.com/facebook/rocksdb/wiki/Performance-Benchmarks

vivenas's People

Contributors

cocalele avatar glorycloud avatar ssbandjl avatar

Watchers

 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.