My Oranda Project

Kiseki

Go check the doc.

Kiseki is my learning rust project, a simple 'distributed' fuse file system that is port of JuiceFS.

It's just a rust learning project

If you don't know juicefs very much, the following is the introduction of juicefs:

JuiceFS is an open-source, high-performance distributed file system designed for the cloud. By providing full POSIX
compatibility, it allows almost all kinds of object storage to be used as massive
local disks and to be mounted and accessed on different hosts across platforms and regions.

JuiceFS separates "data" and "metadata" storage. Files are split into chunks and stored in object storage like Amazon
S3. The corresponding metadata can be stored in various databases such as Redis, MySQL, TiKV, and SQLite, based on the
scenarios and requirements.

FUSE must be installed to build or run programs that use fuse-rs (i.e. kernel driver and libraries. Some platforms may also require userland utils like fusermount). A default installation of FUSE is usually sufficient.

To build fuse-rs or any program that depends on it, pkg-config needs to be installed as well.

Difference with juicefs

1. Write Buffer

JuiceFS uses a pre-allocated memory and growable bytes pool as write buffer, but this pool is also used for make reading buffer.

Kiseki's write buffer pool is fixed-size, and it is consist of a in-memory bytes pool and a mmap file.

2. Cache

JuiceFs use disk-eviction mechinism to manage the writeback cache, in Kisekifs, it employs moka to implement the write back cache, much cleaner and efficient.

3. How to read slices

JuiceFs reorganize the slices into a linkedlist, kisekifs use rangemap to handle the trick part.

Posix Compliance

Totally not compliant with posix, go to the issue page check the details.

Disclaimer

Kiseki is an independent learning project and is not endorsed by or affiliated with the Juice company.

License

Apache-2.0