4 releases

0.0.4 Oct 11, 2019
0.0.3 Oct 10, 2019
0.0.2 Oct 10, 2019
0.0.1 Oct 10, 2019

#1109 in Filesystem

MIT/Apache

24KB
610 lines

btfs

A basic simple in-memory file-system using b-trees.

FUSE Example

Set up FUSE:

$ apt-get install fuse libfuse-dev

# Make sure fuse.conf has allow_root and user_allow_other set:
$ cat /etc/fuse.conf
allow_root
user_allow_other

Test the system:

$ RUST_LOG=trace cargo run --bin fuse /tmp/test

Unmount:

$ umount /tmp/test

Testing with filebench

Installing filebench:

$ git clone https://github.com/filebench/filebench.git
$ libtoolize
$ aclocal
$ autoheader
$ automake --add-missing
$ autoconf
$ ./configure
$ make

Running a benchmark:

$ mkdir -p /tmp/fbtest
$ cargo run --release --bin fuse -- /tmp/fbtest/ &

$ echo 0 > /proc/sys/kernel/randomize_va_space
$ ./filebench -f randomrw.f

$ umount /tmp/fbtest

lib.rs:

A simple implementation of an in-memory files-sytem written in Rust using the BTreeMap data-structure.

This code is inspired from https://github.com/bparli/bpfs and was modified to work with node-replication for benchmarking.

Dependencies

~3–11MB
~114K SLoC