Coder Social home page Coder Social logo

aristanetworks / quantumfs Goto Github PK

View Code? Open in Web Editor NEW
3.0 8.0 2.0 36.17 MB

A distributed FUSE filesystem optimized for large-scale software development

License: Apache License 2.0

Go 95.34% Makefile 0.58% C++ 3.62% C 0.12% Shell 0.24% Cap'n Proto 0.10%

quantumfs's Introduction

QuantumFS is a distributed, branchable filesystem built on FUSE and heterogeneous
object stores.

See the Documentation directory for more information.


Dev Environment Setup
---------------------

1) Ensure your GOPATH environment variable is correctly pointed such that this
README's folder path is $GOPATH/src/github.com/aristanetworks/quantumfs/README

2) Fetch vendored dependencies.

   Populate the vendor subdirectory with the required dependency versions,
   independent of any present in $GOPATH/src.

	cd $GOPATH/src/github.com/aristanetworks/quantumfs
	make fetch

3) Compile and install the Google CityHash library.
   A version was downloaded by `make fetch` to the vendor/cityhash directory.

	cd vendor/cityhash
	./configure --enable-sse4.2
	make all check CXXFLAGS="-g -O3 -msse4.2"
	sudo make install
	cd ../..

4) Install protobufs:
	sudo yum install protobuf-devel

5) Install some other necessary libraries:
        sudo yum install glibc-static libstdc++-static glibc.i686

6) Follow the instructions in QFSClient/README to install the prerequisites for
building QFSClient.

7) If you want to generate an RPM, you must also install fpm
(https://fpm.readthedocs.io).


Vendoring Dependencies
----------------------

This build environment uses `dep` to manage dependency copies in the vendor
subdirectory.

The documentation for `dep` can be found at: https://github.com/golang/dep

This tool helps us ensure that we have a record of the precise versions of
every go dependency in use by the QuantumFS build environment - especially
when preparing RPMs for releasde.

Any package present in the vendor directory will be used instead of
an equivalent available elsewhere (eg under $GOPATH/src).

Use `make fetch` to refresh the content of the vendor directory based on
the versions recorded in Gopkg.lock. `dep` will be installed if necessary.

Use `make update` to check for updates to existing dependencies, or where
new dependencies are referenced in the code.  This will attempt to resolve
any conflicting version requirements, and record the updated versions in
use in Gopkg.lock.
If there are updates, ensure tests are passing, and then commit the
updated Gopkg.*.


Instructions
------------

* to compile:

	make all

* to generate an RPM:

	make fetch
	make rpm

Limits
------

* Maximum supported file size is 28.4 terabytes
* Maximum size of an atomic DIRECT_IO write is 128KB. Writes larger than 128KB
  are split into a set of 128KB writes by the kernel.

Signals
-------
Sending SIGUSR1 to quantumfsd will cause the read cache to be dropped and further
additions disallowed. This puts QuantumFS into a lower memory mode. This is useful,
for example, when attempting to gracefully upgrade QuantumFS to a newer version
without forcefully terminating existing users.

Sending SIGUSR2 to quantumfsd will result in it printing debug information to its
qlog. This information can be used for testing and debugging purposes.

quantumfs's People

Contributors

arudnicki-arista avatar cianlr avatar davidg667 avatar jfrabaute avatar kthommandra avatar pooya avatar pwn-arista avatar sid-agrawal avatar somersf avatar travisb-ca avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  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.