Skip to content

scylladb/charybdefs

Repository files navigation

CharybdeFS

A fuse based fault injection filesystem with a Thrift RPC interface for instrumentation.

Building

CentOS 7.4

sudo yum install gcc-c++ cmake fuse fuse-devel thrift python-thrift thrift-devel
thrift -r --gen cpp --gen py server.thrift
cmake CMakeLists.txt
make

Ubuntu 16.04

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:scylladb/ppa
sudo apt-get update
sudo apt-get install g++ cmake fuse libfuse-dev python-thrift thrift-compiler scylla-libthrift010-dev libboost-dev
thrift -r --gen cpp --gen py server.thrift
cmake -DCMAKE_PREFIX_PATH=/opt/scylladb CMakeLists.txt
make

Using

Load fuse module, if it is not loaded

modprobe fuse

Create mount directory for Charybde. Tested application should use this directory.

Note: Faults can be applied for files that are manipulated through this directory only!

mkdir /mnt/charybdbde

dest_dir directory on the file system where actual files will be stored Running CharybdeFS

./charybdefs /mnt/charybdbde -omodules=subdir,subdir=/dest_dir

Running CharybdeFS and allowing other users to use the mount

./charybdefs /mnt/charybdbde -omodules=subdir,subdir=/dest_dir -oallow_other

Example tests

tests/scylla_test_all_calls.py is an example test running against the ScyllaDB database. It will insert data in the database, trigger some errors for a while, clear it and let the database recover. After this it will boot up scylla again and check that all commited queries are safe on disk.