gluster的volume是由一系列的translator组成的,translator就像输入输出流的堆栈式结构一样,由一个translator调用另一个translator,每个translator在运行时作为shared-object,根据不同的文件操作调用不同的函数.
每个translator一般需要定义xlator_fops、xlator_cbks、init、fini、volume_options这几个结构体.结构体里是不同的函数指针
比较重要的是xlator_fops这个结构体,在这里,一般要定义规定好的文件操作,文件操作在xlator.h中都有严格的明确定义
比如
fop_readv_t readv;
fop_writev_t writev;
应该就是对文件内容写入和读出的操作
translator都是采用异步调用和callback的方式,上一个translator异步调用下一个translator的相应的函数,下一个translator完成后调用上一个translator的callback函数.调用和callback主要利用了两个宏,STACK_WIND和STACK_UNWIND
gluster的translator中,一般都能很容易找到文件操作和相应的回调函数,因为命名都很有规律
拿一个简单的rot 13的translator举例说明下
rot-13.c文件中定义了两个文件操作
struct xlator_fops fops = {
.readv = rot13_readv,
.writev = rot13_writev
};
即文件读取和文件写入操作
在上面可以找到
int32_t
rot13_writev_cbk (call_frame_t *frame,
void *cookie,
xlator_t *this,
int32_t op_ret,
int32_t op_errno,
struct iatt *prebuf,
struct iatt *postbuf, dict_t *xdata)
{
STACK_UNWIND_STRICT (writev, frame, op_ret, op_errno, prebuf, postbuf,
xdata);
return 0;
}
int32_t
rot13_writev (call_frame_t *frame,
xlator_t *this,
fd_t *fd,
struct iovec *vector,
int32_t count,
off_t offset, uint32_t flags,
struct iobref *iobref, dict_t *xdata)
{
rot_13_private_t *priv = (rot_13_private_t *)this->private;
if (priv->encrypt_write)
rot13_iovec (vector, count);
STACK_WIND (frame,
rot13_writev_cbk,
FIRST_CHILD (this),
FIRST_CHILD (this)->fops->writev,
fd, vector, count, offset, flags,
iobref, xdata);
return 0;
}
rot13_writev是文件内容写入的函数指针,rot13_writev_cbk则是对应的callback
看到在rot13_writev函数中,调用宏STACK_WIND的时候,需要制定callback,当下一个translator同样的文件操作完成以后,callback就能被调用.在rot13_writev_cbk中,调用了STACK_UNWIND_STRICT这个宏来调用上层translator的callback.
在gluster源码中的xlators\cluster中的三个translator应该是我们研究的重点,尤其对于分布式文件系统来说,最重要的就是afr,即automatic file replication,自动文件复制.
通过阅读afr的源码可以看出,gluster的副本机制没有采用主从模型,而是所有节点都是主节点.在一次文件写入时,要调用afr的所有subvolume,而且要等待所有subvolume的回调.
推荐几篇好文章
http://hekafs.org/index.php/2011/11/translator-101-class-1-setting-the-stage/
http://hekafs.org/index.php/2011/11/translator-101-lesson-2-init-fini-and-private-context/
http://hekafs.org/index.php/2011/11/translator-101-lesson-3-this-time-for-real/
http://hekafs.org/index.php/2011/11/translator-101-lesson-4-debugging-a-translator/
让你更加深入了解gluster代码结构,还能自己构造translator,用GDB运行时debug gluster
分享到:
相关推荐
在“Gluster 3.6.2 源码包”中,我们可以深入理解这款系统的内部机制和工作原理。源码包提供了一个宝贵的资源,允许开发者和系统管理员对软件进行自定义配置、调试和优化。 GlusterFS的核心设计理念是通过无中心...
### GlusterFS源码分析 #### 一、GlusterFS概览 GlusterFS是一种分布式文件系统,设计用于实现高性能和高扩展性。它能够支持大规模的数据存储需求,适用于多种应用场景,如云存储、大数据处理等。在进行深入的源码...
### Gluster集群搭建与安装Gluster环境 #### 一、GlusterFS简介 GlusterFS是一种开源的分布式文件系统,支持大规模数据存储需求。它能够将多台服务器上的磁盘空间聚合起来,形成一个统一的文件系统,提供高性能的...
openshift-gluster 部署 GlusterFS 容器 确定 OpenShift SDN 中将运行 GlusterFS 的机器。 在那台机器上运行这个命令 docker run --privileged -d jsafrane/kubernetes-gluster 获取运行容器的 IP 地址 docker ps...
在提供的文件列表中,我们看到"gluster6"和"gluster7"可能是不同版本的GlusterFS RPM包,而"centos7 gluster安装部署.pdf"则很可能是一个详细的安装指南,包含了步骤和注意事项。以下是离线安装GlusterFS的基本流程...
这些工具包括`gluster volume`命令、`gluster peer`命令等,方便进行集群管理和维护。 7. **多协议支持**:除了标准的POSIX接口,GlusterFS还支持NFS、SMB、iSCSI等多种协议,使它能被各种操作系统和应用无缝集成。...
Red Hat Gluster Storage 3.2 Administration Guide Red Hat Gluster Storage Administration Guide describes the configuration and management of Red Hat Gluster Storage for On-Premise
### Gluster集群搭建与操作详解 #### 一、GlusterFS概述 GlusterFS是一种开源的分布式文件系统,主要用于提供高性能、高可用性和可扩展性的数据存储解决方案。它支持多种类型的卷,包括分布式卷、复制卷、条带卷...
标题中的“多节点gluster_NFS安装配置性能对比”指的是在多台服务器上部署并比较GlusterFS和NFS这两种分布式文件系统的安装过程、配置方法以及它们在性能上的差异。这两种技术都是为了实现大规模存储环境下的数据...
gluster_exporter 普罗米修斯的胶合板出口商安装go get github.com/ofesseler/gluster_exporter./gluster_exportergluster_exporter用法选项默认描述-h,--help -- 显示用法。 --web.listen-address :9189 侦听HTTP...
Hat Gluster Storage是一款开源的分布式存储解决方案,专为大规模数据处理和云计算环境设计。本运维手册详细介绍了如何配置和管理Red Hat Gluster Storage 3.5版本,是管理员进行日常维护和高级操作的重要参考资料。...
### Gluster File System 3.2.5 Administration Guide #### 一、简介 《Gluster File System 3.2.5 Administration Guide》是一本由Red Hat Engineering Content Services编写的指导手册,旨在帮助用户理解、配置...
Performance in a Gluster System
### Gluster文件系统结构:分布式存储的创新与实践 #### 引言 GlusterFS作为一款可扩展的开源集群文件系统,提供了一个全球统一的命名空间、分布式前端,并且能够轻松扩展至数百PB的存储容量。它通过利用普通硬件...
Glusterfs(分布式文件系统) Hadoop到结合
Red Hat Gluster Storage is a software-only, scale-out storage solution that provides flexible and agile unstructured data storage for the enterprise. Red Hat Gluster Storage provides new ...
An Introduction to Gluster Architecture
- 使用 `gluster peer status` 和 `gluster volume info` 命令检查集群状态和卷信息。 #### 五、数据平衡 为了保证数据在各节点之间均衡分布,定期进行数据平衡是非常重要的。 **检查数据分布:** - 使用 `...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
Gluster运行状况报告工具 使用此工具来分析Gluster节点的正确性或运行状况。 注意:该项目的目标不是提高Gluster的“监视”功能,而是确保在发生问题时不要错过对重要内容的分析。 如果某人没有任何其他监视设置,...