3个版本 (破坏性)
0.2.0 | 2020年6月20日 |
---|---|
0.1.0 | 2019年5月23日 |
0.0.0 | 2019年1月14日 |
#840 in 文件系统
290KB
7K SLoC
FleetFS
FleetFS分布式文件系统
开发
apt install libfuse-dev
(由fuse
依赖项需要)- 安装flatc (https://github.com/google/flatbuffers)
- rustup component add rustfmt
- rustup component add clippy
状态
非常非常初级。请期待FleetFS吞噬你的数据 :)
设计决策
- 客户端只需要与单个节点通信
- 背景:打开TCP连接有显著的开销,所以我们希望客户端保持其连接打开。因此,客户端不应该按需连接到集群中的每个存储节点。
- 缺点:在FleetFS集群内部加倍了网络流量,因为节点必须代理读取/写入其他节点的流量
- 优点:更好的可扩展性,因为客户端连接由单个节点处理。同时简化了客户端代码
- 客户端有权限进行权限检查
- 背景:FleetFS无法访问中央用户存储,因此必须信任客户端发送的用户ID
- 缺点:安全性依赖于客户端
- 优点:客户端不必发送用户所属的所有组的确切列表来执行权限检查
- 分片设计
- "Raft组"(或rgroup):参与Raft共识组的存储节点子集。集群由多个Raft组组成,单个节点可能属于多个组。
- inode存储在单个Raft组上,inode通过id在组之间分片。
- (待办) "冗余块"(或rblock)是存储在单个Raft组中的数据块。一个文件的主体由多个rblock组成,存储在一个或多个Raft组上。
许可证
许可下
- Apache许可证,版本2.0 (LICENSE 或 http://www.apache.org/licenses/LICENSE-2.0)
贡献
除非你明确说明,否则你提交给作品以包含的任何有意贡献都应按上述方式许可,没有任何额外的条款或条件。
依赖项
~14–23MB
~323K SLoC