A distributed POSIX filesystem based on TiKV, with partition tolerance and strict consistency.
mkdir tmp
cd tmp
wget https://github.com/Hexilee/tifs/releases/download/v0.1.0/tifs-linux-amd64.tar.gz
tar -xvf tifs-linux-amd64.tar.gz
sudo ./install.shgit clone https://github.com/Hexilee/tifs.git
cd tifs
cargo build --features "binc" --no-default-features --release
sudo install target/release/mount /sbin/mount.tifsYou need a tikv cluster to run tifs. tiup is convenient to deploy one, just install it and run tiup playground.
mkdir ~/mnt
mount -t tifs tifs:127.0.0.1:2379 ~/mntcargo build
mkdir ~/mnt
RUST_LOG=debug target/debug/tifs --mount-point ~/mntThen you can open another shell and play with tifs in ~/mnt.
Maybe you should enable user_allow_other in /etc/fuse.conf.
for developing under FreeBSD, make sure the following dependencies are met.
pkg install llvm protobuf pkgconf fusefs-libs3 cmakefor now, user_allow_other and auto unmount does not work for FreeBSD, using as root and manually umount is needed.
Please refer to the design.md
There are little docs about FUSE, refer to the example for the meaning of FUSE API.
Please refer to the tikv-deploy.md.
-
FUSE API
- init
- lookup
- getattr
- setattr
- readlink
- readdir
- open
- release
- read
- write
- mkdir
- rmdir
- mknod
- lseek
- unlink
- symlink
- rename
- link
- statfs
- create
- fallocate
- getlk
- setlk
-
Testing and Benchmarking
- pjdfstest
- fio
-
Real-world usage
- vim
- emacs
- git
- gcc
- rustc
- cargo build
- npm install
- sqlite
- tikv on tifs
- client runs on FreeBSD: simple case works