三、对分布式文件系统的要求
对一个分布式文件系统而言,有一些特性是必须要满足的,否则就无法有竞争力。主要如下:
除此之外,还有些特性是分布式加分项,具体如下:
-
支持的空间越大越好;
-
支持的并发访问请求越多越好;
-
性能越快越好;
-
硬件资源的利用率越高越合理,就越好。
四、架构模型
从业务模型和逻辑架构上,分布式文件系统需要这几类组件:
-
管理组件:负责 meta 信息,即文件数据的元信息,包括文件存放在哪台服务器上、文件大小、权限等,除此之外,还要负责对存储组件的管理,包括存储组件所在的服务器是否正常存活、是否需要数据迁移等;
-
接口组件:提供接口服务给应用使用,形态包括 SDK(Java/C/C++ 等)、CLI 命令行终端、以及支持 FUSE 挂载机制。
而在部署架构上,有着“中心化”和“无中心化”两种路线分歧,即是否把“管理组件”作为分布式文件系统的中心管理节点。两种路线都有很优秀的产品,下面分别介绍它们的区别。
1、有中心节点
以 GFS 为代表,中心节点负责文件定位、维护文件 meta 信息、故障检测、数据迁移等管理控制的职能,下图是 GFS 的架构图:
GFS架构
该图中GFS master 即为 GFS 的中心节点,GF chunkserver 为 GFS 的存储节点。其操作路径如下:
-
Client 向中心节点请求“查询某个文件的某部分数据”;
-
中心节点返回文件所在的位置 (哪台 chunkserver 上的哪个文件) 以及字节区间信息;
-
Client 根据