随笔分类 -  glusterfs

分布式文件系统glusterfs相关技术
摘要:声明:本文转至IT168:因为GlusterFS实现了IB网络(RDMA协议,专用硬件网卡支持),当时就在想普通的网卡能不能实现,就找到一篇这样的文章介绍,基于TCP协议来实现。!附件RDMAoverTCP的协议栈工作过程浅析第一节RDMA概述随着网络带宽和速度的发展和大数据量数据的迁移的需求,网络带宽增长速度远远高于处理网络流量时所必需的计算节点的能力和对内存带宽的需求,数据中心网络架构已经逐步成为计算和存储技术的发展的瓶颈,迫切需要采用一种更高效的数据通讯架构。 传统的TCP/IP技术在数据包处理过程中,要经过操作系统及其他软件层,需要占用大量的服务器资源和内存总线带宽,所产生严重的延迟. 阅读全文
posted @ 2012-05-17 00:10 蔷薇理想人生 阅读(5690) 评论(0) 推荐(0) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。第三节、rpc通信过程分析前面两个小节分别对rpc服务端和客户端的建立流程做了详细的分析,也就是说rpc客户端和服务器端已经能够进行正常的通信了(rpc客户端已经通过connect链接上rpc服务器了),那么这一小节主要根据一个实际的例子来分析一个完整的rpc通信过程。下面以客户端创建逻辑卷(volume)为例来分析rpc的通信过程,就以下面这个客户端的命令开始:glustervolumecreatetest-volumeserver3:/exp3server4:/exp4先简单看 阅读全文
posted @ 2012-05-16 02:23 蔷薇理想人生 阅读(2702) 评论(0) 推荐(1) 编辑
摘要:第二节、rpc客户端实现原理及代码分析rpc客户端主要发起一个rpc请求,执行完rpc请求以后就退出rpc,下面分析客户端rpc请求建立的整个过程。Rpc客户端请求建立的第一步是执行cli_rpc_init函数,主要实现代码如下: 1 this = THIS;//取得本线程的xlator列表 2 3 cli_rpc_prog = &cli_prog;//设置rpc调用过程集合(许多函数) 4 5 options = dict_new ();//新建一个字典数据结构用于存放选项信息 6 7 ret = dict_set_str... 阅读全文
posted @ 2012-05-14 22:36 蔷薇理想人生 阅读(3456) 评论(0) 推荐(1) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。二、Glusterfs的rpc模块实现第一节、rpc服务器端实现原理及代码分析1.rpc服务初始化Rpc服务的初始化工作在函数rpcsvc_init中实现的,实现代码如下: 1 rpcsvc_t * rpcsvc_init (glusterfs_ctx_t *ctx, dict_t *options) 2 3 { 4 5 rpcsvc_t *svc = NULL;//所有rpc服务的全局状态描述对象 6 7 int ... 阅读全文
posted @ 2012-05-14 00:06 蔷薇理想人生 阅读(3147) 评论(0) 推荐(1) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。一、RPC概述第一节、RPC结构网络RPC(RemoteProcedureCallProtocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调 阅读全文
posted @ 2012-05-13 10:54 蔷薇理想人生 阅读(3011) 评论(0) 推荐(0) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。六、NFS协议之RPC的实现因为nfs服务器启动时的端口是不确定的,所以nfs服务器将自己的端口注册到rpc服务,客户端通过rpc请求知道nfs服务器的监听端口。下面就分析整个rpc的处理过程。现在假设客户端有一个rpc请求达到服务器端了,通过上面nfs协议初始化的分析知道:所有的数据读写事件都是在函数nfs_rpcsvc_conn_data_handler中处理,因为是客户端发送来的请求数据,所以执行的是epoll_in事件处理相关代码,这些事件的处理都是在函数nfs_rpcsv 阅读全文
posted @ 2012-05-09 22:42 蔷薇理想人生 阅读(3322) 评论(0) 推荐(1) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。五、Glusterfs实现NFS服务器第一节、启动过程分析Glusterfs的nfs服务器启动命令如下:/usr/local/sbin/glusterfs-f/etc/glusterd/nfs/nfs-server.vol-p/etc/glusterd/nfs/run/nfs.pid-l/usr/local/var/log/glusterfs/nfs.log说明:所有列出的代码都把错误处理、参数检查和日志输出去掉了!上面的命令会启动glusterfsd程序,下面是入口函数main的 阅读全文
posted @ 2012-05-08 21:57 蔷薇理想人生 阅读(4917) 评论(0) 推荐(2) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。一、网络文件系统概述SunMicrosystems公司于1984年推出了一个在整个计算机工业中被广泛接受的远程文件存取机制,它被称为Sun的网络文件系统(NetworkFileSystem),或者简称为NFS。该机制允许在一台计算机上运行一个服务器,使对其上的某些或所有文件都可以进行远程存取,还允许其他计算机上的应用程序对这些文件进行存取。它使我们能够达到文件的共享。当使用者想用远端档案时只要用"mount"就可把remote档案系统挂接在自己的档案系统之下,使 阅读全文
posted @ 2012-05-07 22:38 蔷薇理想人生 阅读(4355) 评论(0) 推荐(1) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。上一篇博客详细分析了GlusterFS之内存池的实现技术,今天我们看看GlusterFS是怎么使用这个技术的。第一步:分配和初始化:cli进程在初始化的过程中会涉及到内存池的建立和初始化,具体涉及到内存池初始化的代码如下(在cli.c文件中的glusterfs_ctx_defaults_init函数): 1 /* frame_mem_pool size 112 * 64 */ 2 pool->frame_mem_pool = mem_pool_new (call_frame_ 阅读全文
posted @ 2012-04-28 14:39 蔷薇理想人生 阅读(3365) 评论(0) 推荐(1) 编辑
摘要:我的新浪微博:http://weibo.com/freshairbrucewoo。欢迎大家相互交流,共同提高技术。最近一直在研究glusterfs的源代码,自己也在上面做了一些小的改动。我最开始研究的是3.2.5这个版本,因为据同行和网上资料显示这个版本目前是最稳定的版本。glusterfs实现比较复杂,具体的设计思想和架构就不详细介绍了,网上有这方面的资料(CSDN博客里面就有很好介绍的文章)。 研究开源系统的一个好处就是可以充分了解它的实现,如果是看这方面的论文只能了解一些原理性的东西,但是我们真正做项目还需要实际的实现。很多开源系统可能本身不一定就很适合你的系统,但是如果可以改造那... 阅读全文
posted @ 2012-04-26 21:35 蔷薇理想人生 阅读(4281) 评论(2) 推荐(2) 编辑