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

3 配置视图

4 核心模块实现