#opendal #userspace #back-end #memory #fs #dal-f

app dalfs

A Userspace filesystem based on OpenDAL

3 unstable releases

0.1.0 Oct 11, 2023
0.0.2 Oct 10, 2023
0.0.1 Oct 7, 2023

#910 in Filesystem

MIT license

35KB
717 lines

DalFs: a Userspace filesystem based on OpenDAL

Still a WIP!!! Could be buggy and risky, please use a VM to test. Take your own risk.

Currently, it can provide a Userspace filesystem backing by OpenDAL, thus supports the following backend as data sources:

  • Atomicserver
  • Azblob
  • Azdls
  • Cacache
  • Cos
  • Dashmap
  • Etcd
  • Foundationdb
  • Fs
  • Ftp
  • Gcs
  • Ghac
  • Hdfs
  • Http
  • Ipfs
  • Ipmfs
  • Memcached
  • Memory
  • MiniMoka
  • Moka
  • Obs
  • Onedrive
  • Gdrive
  • Dropbox
  • Oss
  • Persy
  • Redis
  • Postgresql
  • Rocksdb
  • S3
  • Sftp
  • Sled
  • Supabase
  • VercelArtifacts
  • Wasabi
  • Webdav
  • Webhdfs
  • Redb
  • Tikv

The functionnality is very limited right now, because I just use several hours to come up with the idea and implement it.

Here are the main fs functionnalities implemented:

  • Read directory
  • Read file
  • Read attributes (not well implemented)
  • Create directory
  • Create file
  • Write file

or not yet implemented:

  • Permission (?)
  • Fsync (?)
  • ...

Build

You might need to install libfuse-dev in order to use Rust fuser crate.

Just run the following command to build it:

cargo build

Run

To run, you will need to provide a series of

cargo run <mount-point> <scheme> ...

where the mount-point is a path to mount the filesystem; scheme is an OpenDAL scheme, all in lowercase (e.g. "ftp", "s3", "fs", etc.).

The remaining parameters are <key>=<value> pairs needed by OpenDAL schemes.

Currently fs and s3 backends are tested. For example, the following command will mount a filesystem using the data in your /tmp directory to the mount-point.

cargo run <mount-point> fs root=/tmp
image

And the following mount a filesystem backed by s3:

cargo run <mount-point> s3 root=/tmp endpoint=<end-point-url> bucket=<bucket> access_key_id=<access-key-id> secret_access_key=<secret-access-key> region=auto

For more details and more backends, please check OpenDAL scheme doc.

Contribution

All kinds of contributions are welcomed. But I will firstly work on the functionnalities.

Dependencies

~18–32MB
~490K SLoC