#fs #fuse #nfs #networking

netfuse

FUSE 用于构建网络文件系统的抽象

2 个版本

使用旧的 Rust 2015

0.1.1 2016 年 8 月 6 日
0.1.0 2016 年 7 月 17 日

#nfs 中排名 第 10

MIT 许可证

39KB
706 行(不含注释)

netfuse

实验性:基于 FUSE 的网络文件系统抽象

这个库在纯 libfuse 的 rust 重写 之上提供了一层封装。它提供内部管理的inode缓存,允许将文件系统操作抽象为路径操作。它假设后端存储通过网络进行,因此实现依赖于缓存和延迟写入来提高性能。

文档

Build Status Crates.io

实现

这最初是从下面提到的 algorithmia-fuse 的实现中提取出来的。

如果你用它构建了什么,请提交一个 PR 或创建一个问题,以便将其添加到这里。:-)

当前注意事项

我不建议今天将其用于任何生产质量的文件系统。以下是一些已知的注意事项

  • 在关闭最后一个打开的文件句柄时写入会持久化。如果关闭失败,数据可能没有持久化。
  • 整个inode和文件缓存都驻留在RAM中,因此如果你下载了一个4GB的文件,它将占用4GB的RAM,直到关闭。
  • 目录列表永久缓存,因此如果你在文件系统外更改目录的内容,你必须卸载并重新挂载才能看到这些更改。
  • 挂载时的测试仅限于少数常见的I/O场景
  • 一般网络文件系统的注意事项也适用,例如某些文件操作可能看起来很慢
  • impl Trait 加入后,实现 readdir 可能会更好

如果您在使用此库时遇到任何问题或限制,请 提交一个问题 或创建一个 pull request。

构建、测试

要构建和测试

$ cargo build
$ cargo test

依赖关系

~1–1.3MB
~21K SLoC