A toy version of AFS-like user-space filesystem implemented by FUSE and gRPC (Google RPC)
- Build grpc (https://github.com/grpc/grpc)
- Build protobuf (https://github.com/google/protobuf/releases)
- Build Fuse (http://fuse.sourceforge.net)
- Install
pkg-config
viasudo apt-get install pkg-config
(needed when compiling fuse programs)
cd toy_afs/tafs
make
- start server on the machine you like
./tafs_server
, your filesystem real path is/tmp/tafs
- edit the file
toy_afs/tafs/server
to specify the host:port of the server you ran - start client-side program, which is integrated into Fuse, and set mount point you like. e.g.,
/tmp/afs
- verbose mode(for debug/demo):
./fusetafs /tmp/afs/ -d
- silent mode:
./fusetafs /tmp/afs/ -d
- verbose mode(for debug/demo):
-
fuse_operations Struct Reference
-
Protocol Buffer Language Guide (proto3)
-
How to initialize a struct using the c style while using the g++ compiler?
This is to solve the
static struct fuse_operations
problem, which cause a error message of 'non-trivial designated initializers not supported' when compiled with g++. -
Tutorial: HowTo integrate a C++ library/class into a C program
How to use extern "C" {} to integrate c++ codes into c
-
An IBM example of using FUSE+RPC to realize a AFS
- When calling gRPC func too fast, transferred data would sometimes be corrupt