EFS - Elastic File System
1 介绍
EFS(Elastic File System, 弹性文件系统)是一个分布式文件系统。EFS运行在普通的廉价 商用硬件设备上,但依然提供良好的容灾和性能。
EFS功能与Google GFS(or Colossus: The successor of GFS), Alibaba Pangu, Apache HDFS, ceph类似。
EFS使用C/C++语言实现。
1.1 架构
EFS 在预期达成如下目标:
- 可靠性:在持久性与主流产品对齐(12个9);
- 稳定性:在普通商用硬件上稳定运行,少量硬件损坏服务不中断(99.99%可服务性)
- 可维护性:运维简单方便,易于上手;
- 性能:平稳、低延时、无长尾问题;
- 规模:单集群规模可以达到数万台;
EFS 总体分为Master, ChunkServer, SDK, Supervisor四部分。
Master 负责文件系统元数据,使用分布式架构实现:
- efs_root: 机器管理、数据分区管理;
- efs_namei: 目录空间管理,支持分区;
- efs_inode: 文件元数据管理,支持分区;
Master 所有数据都以Mirror/EC方式保存在 ChunkServer 上。
ChunkServer 实现单机引擎,只支持追加写,支持单客户端字节流写入,或者多客户端 Record原子写入;
SDK 提供类似 Posix 文件操作接口,但只支持追加写入。
Supervisor 负责集群健康状态监控、告警上报、运维操作接入。
1.2 功能
EFS 提供如下功能:
- 支持多卷;
- 支持多副本/纠删(Mirror/EC),支持文件级别配置;
- 支持追加写,随机读;
- 支持端到端数据一致性;
2 部署视图
TODO