没有合适的资源?快使用搜索试试~ 我知道了~
首页GlusterFS分析报告
资源详情
资源评论
资源推荐

GlusterFS
GlusterFS
GlusterFS
GlusterFS
分析报告
康国庆
---
---
---
---
V
V
V
V
ersion
ersion
ersion
ersion
1.3.0
1.3.0
1.3.0
1.3.0
引言
GlusterFS 是一个高层次的分布式文件系统解决方案。通过增加一个逻辑层,对上 层
使用者掩盖了下面的实现,使用者不用了解也不需知道,文件的存储形式、分布。
内部实现是整合了许多存储块 ( server ) 通过 Infiniband RDMA 或者 Tcp/Ip 方式互联的 一
个并行的网络文件系统,这样的许多存储块可以通过许多廉价的 x86 主机,通过网络 搭
建起来。
其相对于传统 NAS 、 SAN 、 Raid 的优点就是:
1. 容量可以按比例的扩展,且性能却不会因此而降低。
2. 廉价且使用简单,完全抽象在已有的文件系统之上。
3. 扩展和容错设计的比较合理, 复杂度较低。 扩展使用 translator 方式,扩展调度 使
用 scheduling 接口,容错交给了本地的文件系统来处理。
4. 适应性强,部署方便,对环境依赖低,使用,调试和维护便利。
支持主流的 linux 系统发行版,包括 fc , ubuntu , debian , suse 等,并已有若干成功应
用。

1.
1.
1.
1.
整体逻辑结构分析
G lusterFS, 整体来看分客户和服务端两部分,当然这是相对的。
客户端是对于提供数据中心整体来说的,它对外提供文件服务,目录服务,两个文件 系
统最重要的两个服务。 (注 1 :文件复制和共享的问题不知 GlusterFS
是怎么考虑的) 。
客户机拥有一个卷管理器, 和子卷的调度程序,在客户机中有的子卷映像和服务器主 机
是相对的, 1 对 1 。相当于一个卷集包含了若干逻辑卷,逻辑卷的物理位置是在服务器
主机上的,该实现与 NFS 是有很大区别的。
服务器主机, 上面拥有与客户机相应的通信接口, 接口之间使用 GlusterFs protocol 来 通
信, 服务器主机还应有自己的文件系统来提供文件服务和目录服务, GlusterFS 是构建 在
其上的。
当然客户和服务主机都有相应的配置文件,物理连接是通过 InfiniBand 、 Myrinet 或者
Gbit 以太网连接。下图为个人理解图:

U
U
U
U
ser
ser
ser
ser
外部网络
U serspace
K ernel
VFS
FUSE
EXT3
ReiserFS
glibc
physical byte stream
L ibfuse
InfiniBand
InfiniBand
InfiniBand
InfiniBand
/ Myrinet
Myrinet
Myrinet
Myrinet
VIA
VIA
VIA
VIA
Tcp/IP
glibc
文件内容请求
子卷机,
多
台主机提
供真正的
物理空间。
F ilesystemManager
D irectoryManager
V olummanager
C
C
C
C
lient
lient
lient
lient
Interface
Interface
Interface
Interface
外网对内网访
问点,提供目
录服务和文件
服务, 1 或更
多主机。
子卷映像
serverInterface

2.
2.
2.
2.
组件构成分析
G lusterFS ,含有以下组件:
1. 客户与服务器组件。这部分是复杂双方传输一个总的接口,服务器组件负责把自己 的
子卷发布出来,客户组件负责挂载 GlusterFS 到内核的 VFS 上。
2. 翻译器模式, 一种来自 GNU/Hurd
GNU/Hurd
GNU/Hurd
GNU/Hurd
的设计机制, (
hurd 是借鉴 IBM vms
系统设计的,
内核只有最简单的功能, 其上层设计了模拟器可以模拟很多操作系统)该设计可以扩 展
GlusterFS 的功能,包括调试器,性能
调优的工具,加密验证等都是使用的
该模式。
xlators 文件夹下的都是翻 译
器的实现。
3.
传输模块,
protocol translators 文件 夹
是其实现。
4.
调度模块,
Scheduler 文件夹下面有 4
种调度器实现,其作用是对子卷做负
载均衡。
4 种调度器实现了 unify
翻译器。
分别为
A ) Adaptive Least Usage (ALU) 利
用它的一种评价方式,把一些要素如
磁盘利用率、文件访问频率(读、写
分开) 、响应速度等 综合起来考虑,
做出的一种自适应的调度方式。其实
现是 4 种调度中最复杂的。

B ) Non-Uniform Filesystem Scheduler 这个有点象 NUMA ,一种结合 SMP 和 Mpp
以及 cluster 优点的内存管理方式,它的一个特点就是在创建文件时优先在本地创建文
件。
C ) Random schedule r 随机调度器,使用随机数发生器,选择子卷。
D ) Round-Robin (RR) scheduler 螺旋线调度算法,它 会将数据包均匀的分发给各台
服务器,
它 把所有的服务器放在相等的地位上, 而不会实际的去考虑各台服务器的差 异
,
如负载,响应等等,如有 4 台服务器,调度序列可能就是 ABCDABCDABCDABCD
。 。 。
4 种基本模块构成了 GlusterFS ,另外还提供了一些扩展。
上图是源码解开后的结构。
3.
3.
3.
3.
源代码组成分析
定量分析: 37 个头文件, 55 个 c 源码文件,共有代码 59460
行(包括源码中的空行) 。
文件最多的是 libglusterfs 文件夹,包含了 36 个文件。
3.1 启动过程
glusterfs_ctx_t (重要) GlusterFS 的环境类,里面包含日志文件,日志级别,定
时器, poll 类型等等,使用 dict 实现。
服务端和客户端可以使用守护进程方式( deamon 精灵),也可以作为应用程序来启
动,
下面剖析了两个部分的 main 函数。
server
server
server
server
部分( glusterfsd.c
glusterfsd.c
glusterfsd.c
glusterfsd.c
) 初始化环境 ctx ,初始化调用池?初始化链表,解析命令行 参
剩余32页未读,继续阅读

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论1