一个基于 libfuse3 low-level C API 的 Rust 实验型文件系统。
它最初是 FUSE 练习项目,目前主要作为 mace 元数据引擎的测试载体。
详细设计见:docs/design.md
- FUSE 多线程会话循环(
fuse_session_loop_mt) - 元数据存储:
mace-kv - 数据存储:每 inode 一个数据文件,按两级目录分片
- writeback 数据路径 + 后台写回线程
- 支持 open 文件延迟删除(更接近 Linux 语义)
- Linux
fuse3运行库与开发头文件(例如fuse3,fuse3-devel/libfuse3-dev)- 可访问的挂载点目录
lookupgetattr/setattrcreate/mknod/open/releaseread/write/flushmkdir/opendir/readdir/releasedirunlink/rmdir/renamelink/symlink/readlinkfsync/fsyncdir
注意:这是实验型文件系统,不追求完整 POSIX 兼容。
mkfs 会清空并重建 meta_path 与 store_path。
cargo run --bin mkfs --release -- /nvme/meta /nvme/storemkdir -p ~/jfs
cargo run --bin junkfs --release -- /nvme/meta ~/jfs默认日志输出到 /tmp/junkfs.log。
在另一个终端对 ~/jfs 正常执行文件操作即可,例如:
tar xf /home/neo/Downloads/linux-6.12.69.tar.xz -C ~/jfs
cd ~/jfs/linux-6.12.69
make alldefconfig
make -j4umount ~/jfsJUNK_LEVEL:日志级别,默认ERRORJUNK_DISABLE_WBC=1:关闭 FUSE writeback cache(默认开启)JUNK_ENABLE_INO_REUSE=0|1:控制 inode 复用(默认1)JUNK_STRICT_INVARIANT=1:开启严格一致性断言(默认关闭)JUNK_VERIFY_FLUSH=1:开启写后校验(调试用,默认关闭)
可通过 feature 打开写入统计日志:
cargo run --bin junkfs --release --features stats -- /nvme/meta ~/jfs- 默认 writeback 策略偏性能,崩溃一致性依赖
fsync/fsyncdir - 元数据后端固定为
mace-kv - 面向测试与实验,不建议作为生产文件系统直接使用