- 浏览: 54772 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
mayatama:
jiakon 写道你好,请问yum install glust ...
Glusterfs+Swift 对外提供对像存储 -
jiakon:
你好,请问yum install glusterfs glus ...
Glusterfs+Swift 对外提供对像存储
Glusterfs使用了xlator模块化架构,用户可以通过编辑卷的配置文件来自定义xlator的结构。下面本人结合源码,说说从配置文件构建xlator结构的流程。
首先要说明的是glusterfs根据执行程序名字的不同,有三种启动方式:glusterd, server , client, 具体可见函数glusterfsd/src/glusterfsd.c:gf_get_process_mode
static uint8_t gf_get_process_mode (char *exec_name) { char *dup_execname = NULL, *base = NULL; uint8_t ret = 0; dup_execname = gf_strdup (exec_name); base = basename (dup_execname); if (!strncmp (base, "glusterfsd", 10)) { ret = GF_SERVER_PROCESS; } else if (!strncmp (base, "glusterd", 8)) { ret = GF_GLUSTERD_PROCESS; } else { ret = GF_CLIENT_PROCESS; } GF_FREE (dup_execname); return ret; }
然后请跳到glusterfsd/src/glusterfsd.c: main 函数,它是glusterfs的入口函数。
之后有glusterfs_volumes_init 这样一个函数, 我们将从这个函数分析起
int glusterfs_volumes_init (glusterfs_ctx_t *ctx) { FILE *fp = NULL; cmd_args_t *cmd_args = NULL; int ret = 0; cmd_args = &ctx->cmd_args; if (cmd_args->sock_file) { ret = glusterfs_listener_init (ctx); if (ret) goto out; } //如果在启动的时候指定volfile_server(意味着启动的是client),将会返回。 if (cmd_args->volfile_server) { ret = glusterfs_mgmt_init (ctx); /* return, do not emancipate() yet */ return ret; } //获得cmd_args->volfile文件的fp fp = get_volfp (ctx); if (!fp) { gf_log ("glusterfsd", GF_LOG_ERROR, "Cannot reach volume specification file"); ret = -1; goto out; } //解析volfile文件,构建xlator结构 ret = glusterfs_process_volfp (ctx, fp); if (ret) goto out; out: emancipate (ctx, ret); return ret; }
下面进入glusterfs_process_volfp函数:
int glusterfs_process_volfp (glusterfs_ctx_t *ctx, FILE *fp) { glusterfs_graph_t *graph = NULL; int ret = -1; xlator_t *trav = NULL; //glusterfs使用flex和bison为volfile发明了一种简单的编程语言 //这个函数定义在libglusterfs/src/y.tab.c 中 graph = glusterfs_graph_construct (fp); if (!graph) { gf_log ("", GF_LOG_ERROR, "failed to construct the graph"); goto out; } //如果有fuse xlator在volfile中,则报错返回。 for (trav = graph->first; trav; trav = trav->next) { if (strcmp (trav->type, "mount/fuse") == 0) { gf_log ("glusterfsd", GF_LOG_ERROR, "fuse xlator cannot be specified " "in volume file"); goto out; } } ret = glusterfs_graph_prepare (graph, ctx); if (ret) { glusterfs_graph_destroy (graph); goto out; } ret = glusterfs_graph_activate (graph, ctx); if (ret) { glusterfs_graph_destroy (graph); goto out; } gf_log_volume_file (fp); ret = 0; out: if (fp) fclose (fp); if (ret && !ctx->active) { /* there is some error in setting up the first graph itself */ cleanup_and_exit (0); } return ret; }
发表评论
-
Glusterfs+Swift 对外提供对像存储
2013-11-27 16:14 3057虽然Glusterfs本身对外只提供POSIX兼容的文件存 ... -
poll实现详解
2013-06-04 16:11 0说到select和poll,也就是IO多路转接,在APUE ... -
qemu-kvm使用gluster协议
2013-03-29 10:12 3292为了提高以glusterfs做为存储的 虚拟机的IO性能, ... -
Glusterfs社区开发流程
2013-03-21 14:36 1659Glusterfs开源社区使用 Git + Ger ... -
Glusterfs扩展属性
2013-03-06 12:27 1693英文原文: http://hekafs ... -
图说DHT
2013-02-28 14:22 1301dht-diskusage.c 它包含dh ... -
call_stack 与 call_frame
2013-02-28 10:04 1202call_stack由一个或多个call_frame组成。 ... -
使用glusterfs API
2013-02-21 10:43 3516如果是通过rpm安装的glusterfs 在执行 ... -
Glusterfs吞吐量性能测试
2013-01-10 13:55 3636我在这里 介绍了如何用iozone来测试glusterfs性 ... -
Glusterfs配置文件
2012-12-20 14:58 0Glusterfs会在 /var/lib/glusterfs存 ... -
glusterd中的状态机浅析
2012-12-20 13:14 2422当RPC请求到达Glusterd守护进程后, 它会根据rpcs ... -
Gluster术语表
2012-12-19 16:31 1587接触新的东西的时候,缩写/术语啥的最头疼了。下面我总结了一 ... -
iozone测试glusterfs性能
2012-11-27 11:39 2699iozone 是linux下的磁 ... -
syntask@glusterfs
2012-11-26 16:04 0syntask struct sy ... -
inode详解
2012-11-23 16:38 2858inode是glusterfs中重要的数据结构之一, glus ... -
epoll与event_pool
2012-11-07 14:56 1784epoll is a scalable I/O even ... -
CircleBuffer@glusterfs
2012-11-05 17:22 890CircleBuffer 是逻辑上呈环形的缓冲区 。 ... -
如何查看brick上文件扩展属性
2012-10-25 16:25 1272在brick目录(不是volume挂载目录)执行: ... -
xlators 综述
2012-10-11 15:19 0xlator是glusterfs里面比较有意思的东西,下面由简 ... -
afr代码解析
2012-09-26 14:30 255afr 是一个xlator, 全称是Automatic F ...
相关推荐
而配置文件`redis.master.conf`和`redis.slave.conf`分别代表主节点和从节点的配置,它们是构建Redis集群的关键组成部分。 1. **创建Redis主节点** 主节点负责处理所有写操作,并将新数据广播给从节点。`redis....
PV的配置文件示例如下所示: apiVersion: v1 kind: PersistentVolume metadata: name: pv0003 spec: capacity: storage: 5Gi volumeMode: Filesystem accessModes: - ReadWriteOnce ...
在Nginx作为反向代理或静态文件服务器时,可能需要持久化存储其配置文件或静态内容。PV可以绑定到云提供商的存储服务或者集群内的本地存储。 ```yaml apiVersion: v1 kind: PersistentVolume metadata: name: ...
1. **服务的基本配置文件读取、密码密钥管理等**:这些通常是配置数据的一部分,可以通过简单的Volume实现。 2. **服务的存储状态、数据存储等**:这需要使用更高级的存储方案,如PersistentVolume (PV) 和 ...
动态卷插件就是一种解决方法,它允许系统自动为Pods分配存储资源,而无需手动预先创建PV(Persistent Volume)。"k8s的动态卷之nfs分配器.rar"这个压缩包涉及到的就是Kubernetes中的一个动态卷插件——NFS(Network ...
YAML(Yet Another Markup Language)是一种简洁的人类可读的数据序列化语言,常用于配置文件,特别适合k8s这种需要复杂配置的系统。 首先,了解YAML的基本语法是非常必要的。YAML文件以`.yaml`或`.yml`为扩展名。...
YAML 文件是 Kubernetes 集群中用来定义资源对象的配置文件格式,如 Deployment、Service、Pod、ConfigMap 和 Secret 等。 在 Kubernetes 中,YAML 文件的结构通常包括以下几个部分: 1. **APIVersion**: 定义了...
- **Rook配置文件**:Rook的部署可以通过修改YAML配置文件进行定制。例如,你可以调整Ceph的性能参数、添加或删除存储池、更改监控策略等。 - **Ceph配置**:在Rook中,Ceph的配置通常位于CephCluster CR的spec...
配置过程中,管理员需要定义卷(Volume),并通过卷规格文件(glusterfs-volume.spec)来指定卷的类型、选项和子卷。例如,创建一个使用TCP/IP传输协议、连接至本地主机的客户端卷,以及包含性能优化和跟踪功能的更...
DOS命令总共大约有100个,包括文本编辑、查杀病毒、配置文件、批处理等。这里将详细介绍20个常用的DOS命令。 1. dir命令 dir命令是英文单词directory(目录)的缩写,主要用来显示一个目录下的文件和子目录。功能...
在Pod的`spec`中,`containers`列表包含了容器的定义,每个容器有自己的`name`、`image`(容器镜像)、`ports`(暴露的端口)和其他环境变量、卷挂载等配置。 总结来说,Kubernetes资源清单模板是理解和操作...
7. **volume**: 描述持久化存储,如挂载的数据卷,用于存储应用数据,即使Pod被销毁也能保留。 **KubeSphere**是基于Kubernetes构建的企业级多租户容器平台,它提供了更高级别的服务和功能,如工作负载管理、服务...
首先,我们需要准备Jenkins的部署资源定义,这通常是一个YAML文件,用于描述Jenkins主服务、持久卷(Persistent Volume, PV)和持久卷声明(Persistent Volume Claim, PVC)。PV用于存储Jenkins的数据,PVC则是应用...
在“k8s-二进制yaml.zip”这个压缩包中,我们很显然关注的是Kubernetes的YAML配置文件,这些文件是k8s集群中定义和管理对象(如Pods、Services、Deployments等)的主要方式。YAML是一种易读的数据序列化语言,特别...
对于FlexVolume类型的PV,其YAML文件会包含flexVolume字段,其中指定了driver和fsType(文件系统类型),以及自定义的options字段,用于提供特定于存储的配置选项。在我们的例子中,options字段被用来设置NFS服务器...
在Ubuntu操作系统上部署Kubernetes集群并利用NFS(Network File System)来创建持久卷(PV)和持久卷声明(PVC)是云原生应用存储管理的重要环节。NFS允许Kubernetes集群中的不同Pod共享同一份存储资源,适用于数据...
- **邮件系统配置**:涉及邮件服务器的配置文件、守护进程、别名管理等。 - **邮件日志与统计**:用于记录邮件系统的操作日志和统计数据,有助于问题排查和审计。 #### 十、X Window 系统 - **启动与管理**:AIX...
1. **LVM(Logical Volume Manager)**:提供逻辑卷管理,通过聚合物理磁盘空间,实现灵活的存储分配和扩展。 2. **JFS(Journal File System)**:日志文件系统,增强了文件系统的稳定性和性能,支持快速恢复和事务...
YAML(Yet Another Markup Language)是一种轻量级的数据序列化语言,常被用作Kubernetes配置文件的格式,因为它的易读性和简洁性。在k8s-yaml压缩包中,包含了一个名为"k8s-yaml-main"的文件,这很可能是用户的...
在 Kubernetes 中,可以通过动态卷 provisioner 自动创建 PVC (Persistent Volume Claim) 来绑定到 PV (Persistent Volume)。 2. **创建 StatefulSet**:编写 YAML 文件定义 StatefulSet,包含 MongoDB 的配置,如...