Skip to content

Latest commit

 

History

History
72 lines (59 loc) · 2.51 KB

README.md

File metadata and controls

72 lines (59 loc) · 2.51 KB

basefs

Basically Available, Soft state, Eventually Consistent File System

BaseFS is a peer-to-peer distributed filesystem for cloud configuration, designed to operate under the network conditions and administrative requirements commonly found on Wireless Community Networks. Nodes do not need to trust each other, the core data-structure is an append-only specialized Merkle tree with monotonic and cryptographic properties that allows for efficient and secure verification of data sent by untrusted nodes. Decentralized write permission is achieve using a hierarchy-based public key infrastructure built into the Merkle tree, allowing for automatic resolution of write conflicts based on proof-of-authority. Finally, a gossip layer provides scalable change dissemination and group membership, with time and load constant relative to group size. With no single point-of-failure, BaseFS can provide levels of availability and scalability never seen before on a cloud configuration tool

Quick start

  1. Installation
$ sudo pip3 install basefs
  1. Bootstrap and mount
# Create new key
$ basefs genkey

# Createw new filesystem
$ basefs bootstrap myfs -i <ip>

# Mount
$ mkdir ~/myfs
$ basefs mount myfs ~/myfs
  1. Distribute
# Get the log from another machine
$ basefs get myfs <ip>
$ mkdir ~/myfs
$ basefs mount myfs ~/myfs
  1. See all possibilities
$ basefs help
Usage: basefs COMMAND [arg...]
       basefs [ --help | -v | --version ]

Basically Available, Soft state, Eventually consistent File System.

Commands:
    mount       Mount an existing filesystem
    run         Run an existing filesystem without mounting it (testing)
    bootstrap   Create a new self-contained filesystem
    genkey      Generate a new EC private key
    keys        List keys and their directories
    grant       Grant key write permission
    revoke      Revoke key write permission
    list        List all available logs
    show        Show a log file using a tree representation
    revert      Revert object to previous state, 'log' command lists all revisions
    blocks      Block state
    members     List cluster members
    serf        Serf RPC Command proxy
    get         Get log from peer address
    installserf Download and install Serf
    resources   Display BaseFS resource consumption in real-time
    help

Run 'basefs COMMAND --help' for more information on a command