Nimbus - A virtual, networked filesystem with strong upfront safety guarantees

Related tags

Command-line nimbus
Overview

The Nimbus Filesystem

Nimbus is a virtual, networked filesystem that provides upfront safety guarantees to a user, intended for personal use. In particular, it provides a filesystem that will FAIL LOUDLY and prompt the user if the consistency of reads and writes cannot be guaranteed. The user is thereby empowered to prevent conflicts before they occur.

Nimbus is implemented with FUSE and is currently a work-in-progress.

Modes of operation

Nimbus has two modes:

  • development mode
  • backup mode

Development mode

In development mode, when a project is being read/written to, nimbus will attempt to acquire a lock on the project. Development mode provides strong safety guarantees to the user. Intuitively, development mode enforces the notion that a user can only develop on one project/computer at a given moment. 1 If a lock cannot be acquired it will FAIL LOUDLY and prompt the user for action (this should happen rarely). If a lock can be acquired, the user will not notice anything and everything will appear as normal. As nimbus will FAIL LOUDLY and prompt iff a lock cannot be acquired, the user is guaranteed that all successful read and writes are occuring on the most up-to-date version of the project and is consistent.

By default, projects will only be cached/stored on disk if:

  • you are currently accessing the project
  • the project has been recently accessed (and there is sufficient space to store the project)
  • the project is pinned

Backup mode

In backup mode, eventual consistency is guaranteed. All operations are read-only. By default, if there is space, all projects will be cached/stored on disk.

Architecture

TODO: fill in here.

Footnotes

  1. Until telepathy and human cloning is invented, this seems like a reasonable limitation.

You might also like...
Async filesystem facade for Rust!

floppy-disk floppy disk is a WIP, async-only filesystem facade for Rust. What? Have you ever worked with std::fs? tokio::fs? Then you've probably real

A small in-memory filesystem using FUSE.

slabfs A small in-memory filesystem using FUSE. Running Simply run: RUST_LOG="slabfs=trace" cargo r -r -- mountpoint To suppress most log messages:

A filesystem driver that allows you to view your Blackboard course contents as if they were normal files and folders on your system!
A filesystem driver that allows you to view your Blackboard course contents as if they were normal files and folders on your system!

BlackboardFS Blackboard: noun A website so bad that it might as well be a network drive. BlackboardFS is a filesystem driver that allows you to view y

API bindings, CLI client and FUSE filesystem for Wiki.js written in Rust.

wikijs-rs API bindings, CLI client and FUSE filesystem for Wiki.js written in Rust. What's inside? Library: Rust bindings to Wiki.js's entire GraphQL

FUSE filesystem that provides FizzBuzz.txt(8 Exabyte)

FizzBuzzFS root@8a2db3fc6292:/# cd /mnt/FizzBuzz/ root@8a2db3fc6292:/mnt/FizzBuzz# ls -l total 9007199254740992 -rw-r--r-- 1 501 dialout 9223372036854

 Cover your tracks during Linux Exploitation by leaving zero traces on system logs and filesystem timestamps.
Cover your tracks during Linux Exploitation by leaving zero traces on system logs and filesystem timestamps.

moonwalk-back Cover your tracks during Linux Exploitation / Penetration Testing by leaving zero traces on system logs and filesystem timestamps. 📖 Ta

DeFiChain octopus is a codename research & development for DFIP 2111-B: VOC: Ethereum Virtual Machine (EVM) Support.

DeFiCh/octopus DeFiChain octopus is a codename research & development for DFIP 2111-B: VOC: Ethereum Virtual Machine (EVM) Support . Proposed as a DFI

Nederlandse programmeertaal. Geinterpreteerd en met dynamische types. Met bytecode compiler en virtual machine, in Rust.

Nederlang Nederlang is een geinterpreteerde programmeertaal, in het Nederlands! Met als bestandsnaam extensie.... .nl! Het maakt gebruik van dynamisch

Horus is an open source tool for running forensic and administrative tasks at the kernel level using eBPF, a low-overhead in-kernel virtual machine, and the Rust programming language.
Horus is an open source tool for running forensic and administrative tasks at the kernel level using eBPF, a low-overhead in-kernel virtual machine, and the Rust programming language.

Horus Horus is an open-source tool for running forensic and administrative tasks at the kernel level using eBPF, a low-overhead in-kernel virtual mach

Comments
  • Investigate unnecessary writes

    Investigate unnecessary writes

    When viewing the logs of a git clone operation, there appears to be unnecessary writes occurring:

    [2023-01-07T17:48:25Z DEBUG fuser::request] FUSE(5330) ino 0x0000000000000162 WRITE fh FileHandle(55), offse
    t 200703, size 1, write flags 0x0
    [2023-01-07T17:48:25Z DEBUG fuser::request] FUSE(5332) ino 0x0000000000000162 WRITE fh FileHandle(55), offse
    t 200704, size 4095, write flags 0x0
    [repeat]
    

    Why are writes of size 1 occurring? Is this standard practice? Or, this could be an upstream issue.

    opened by InnovativeInventor 1
Owner
Max Fan
CS & Philosophy student @Illinois. @open-source-at-illinois Vice-President. Ham Radio Callsign: KC1LTV
Max Fan
A simple cli tool for generating quotes in your terminal from Kanye west. Start the day out strong.

Kanyey A simple cli tool for generating quotes in your terminal from Kanye West. Install Just do cargo install kanyey and be blessed. Bonus: throw it

null 3 Sep 29, 2023
rip is a command-line deletion tool focused on safety, ergonomics, and performance

rip (Rm ImProved) rip is a command-line deletion tool focused on safety, ergonomics, and performance. It favors a simple interface, and does not imple

Kevin Liu 776 Jan 1, 2023
Explore from the safety of your shell

turtlescan Explore from the safety of your shell Installation: cargo install turtlescan tui Starts a little tui which connects to your JSON-RPC server

Brian Cloutier 4 Sep 13, 2022
Unopinionated low level API bindings focused on soundness, safety, and stronger types over raw FFI.

?? firehazard ?? Create a fire hazard by locking down your (Microsoft) Windows so nobody can escape (your security sandbox.) Unopinionated low level A

null 5 Nov 17, 2022
Assignments of Stanford CS110L-2020spr: Safety in Systems Programming

CS110L Spring 2020: Safety in Systems Programming 课程简介 CS110L将带领我们学习 Rust ,这是一门注重 安全、性能、工程 的语言。 Why Rust? 我的浅显理解是:Rust 被设计出来旨在解决目前系统级编程的困难,其特征 “安全、性能、

Shaofeng 6 Dec 28, 2022
fd is a program to find entries in your filesystem. It is a simple, fast and user-friendly alternative to find

fd is a program to find entries in your filesystem. It is a simple, fast and user-friendly alternative to find. While it does not aim to support all of find's powerful functionality, it provides sensible (opinionated) defaults for a majority of use cases.

David Peter 25.9k Jan 9, 2023
This utility traverses through your filesystem looking for open-source dependencies that are seeking donations by parsing README.md and FUNDING.yml files

This utility traverses through your filesystem looking for open-source dependencies that are seeking donations by parsing README.md and FUNDING.yml files

Mufeed VH 38 Dec 30, 2022
A slightly smart clipboard tool - leverage the filesystem to persist across machines after shutdown.

clipd A slightly smart clipboard using the filesystem under ~/.clipd to persist after shutdown. cowsay "clipd is great" | clipd copy clipd paste ____

null 5 Aug 9, 2022
Quickly find all blackhole directories with a huge amount of filesystem entries in a flat structure

findlargedir About Findlargedir is a tool specifically written to help quickly identify "black hole" directories on an any filesystem having more than

Dinko Korunic 24 Jan 1, 2023
Provides filesystem access for the Rhai scripting language.

About rhai-fs This crate provides filesystem access for the Rhai scripting language. Usage Cargo.toml [dependencies] rhai-fs = "0.1.2" Rhai script //

Rhai - Embedded scripting language and engine for Rust 6 Dec 5, 2022