https://github.com/iamazy/rocksfs
A local filesystem based on fuse and rocksdb.
https://github.com/iamazy/rocksfs
filesystem fuse rocksdb rust storage
Last synced: 11 days ago
JSON representation
A local filesystem based on fuse and rocksdb.
- Host: GitHub
- URL: https://github.com/iamazy/rocksfs
- Owner: iamazy
- License: apache-2.0
- Created: 2022-08-01T14:05:50.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-10-22T11:29:15.000Z (over 3 years ago)
- Last Synced: 2024-10-31T10:07:28.814Z (over 1 year ago)
- Topics: filesystem, fuse, rocksdb, rust, storage
- Language: Rust
- Homepage:
- Size: 90.8 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# rocksfs
A local filesystem based on fuse and rocksdb.
⚠️ This project is almost entirely copied from [tifs](https://github.com/Hexilee/tifs) and mainly for learning purposes
## Motivation
- learn rust and storage (e.g. fuse, object storage and so on)
- find a way to learn rocksdb and how to optimize it
## Environment
### Build
- Linux
`libfuse` and `build-essential` are required, in ubuntu/debian:
```
sudo apt install -y libfuse-dev libfuse3-dev build-essential
```
- macOS
```
brew install --cask osxfuse
```
### Runtime
- Linux
`fuse3` and `openssl` are required, in ubuntu/debian:
```
sudo apt-get install -y libfuse3-dev fuse3 libssl-dev
```
- macOS
```
brew install --cask osxfuse
```
In Catalina or former version, you need to load osxfuse into the kernel:
```
/Library/Filesystems/osxfuse.fs/Contents/Resources/load_osxfuse
```
or
> * Verify that Terminal has Full Disk Access: System Preference > Security & Privacy > Privacy > Full Disk Access
> * Run `sudo kextunload -b io.macfuse.filesystems.macfuse`
## Usage
```bash
git clone https://github.com/iamazy/rocksfs.git
cd rocksfs
mkdir -p ./rocksfs/fs # as mount point
mkdir -p ./rocksfs/db # save rocksdb's log
cargo run ./rocksfs/fs ./rocksfs/db
```
If you close the program unexpected, maybe got an error that says "Device not configured", you can execute the command `umount -f ` to solve it.
## Acknowledgments
- [tifs](https://github.com/Hexilee/tifs) - A distributed POSIX filesystem based on TiKV, with partition tolerance and strict consistency.