GlusterFS 存储结构原理介绍

1、分布式文件系统node

    分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源并不直接与本地节点相连,而是分布于计算网络中的一个或者多个节点的计算机上。目前意义上的分布式文件系统大多都是由多个节点计算机构成,结构上是典型的客户机/服务器模式。流行的模式是当客户机须要存储数据时,服务器指引其将数据分散的存储到多个存储节点上,以提供更快的速度,更大的容量及更好的冗余特性。
linux

    目前流行的分布式文件系统有许多,如MooseFS、OpenAFS、GoogleFS,具体实现原理我这里再也不介绍。算法

2、GlusterFS概述bash

    GlusterFS系统是一个可扩展的网络文件系统,相比其余分布式文件系统,GlusterFS具备高扩展性、高可用性、高性能、可横向扩展等特色,而且其没有元数据服务器的设计,让整个服务没有单点故障的隐患。服务器

术语:网络

  • Brick:GFS中的存储单元,经过是一个受信存储池中的服务器的一个导出目录。能够经过主机名和目录名来标识,如'SERVER:EXPORT'负载均衡

  • Client:挂载了GFS卷的设备tcp

  • Extended Attributes:xattr是一个文件系统的特性,其支持用户或程序关联文件/目录和元数据。分布式

  • FUSE:Filesystem Userspace是一个可加载的内核模块,其支持非特权用户建立本身的文件系统而不须要修改内核代码。经过在用户空间运行文件系统的代码经过FUSE代码与内核进行桥接。ide

  • Geo-Replication

  • GFID:GFS卷中的每一个文件或目录都有一个惟一的128位的数据相关联,其用于模拟inode

  • Namespace:每一个Gluster卷都导出单个ns做为POSIX的挂载点

  • Node:一个拥有若干brick的设备

  • RDMA:远程直接内存访问,支持不经过双方的OS进行直接内存访问。

  • RRDNS:round robin DNS是一种经过DNS轮转返回不一样的设备以进行负载均衡的方法

  • Self-heal:用于后台运行检测复本卷中文件和目录的不一致性并解决这些不一致。

  • Split-brain:脑裂

  • Translator:

  • Volfile:glusterfs进程的配置文件,一般位于/var/lib/glusterd/vols/volname

  • Volume:一组bricks的逻辑集合

一、无元数据设计

    元数据是用来描述一个文件或给定区块在分布式文件系统中所在的位置,简而言之就是某个文件或某个区块存储的位置。传统分布式文件系统大都会设置元数据服务器或者功能相近的管理服务器,主要做用就是用来管理文件与数据区块之间的存储位置关系。相较其余分布式文件系统而言,GlusterFS并无集中或者分布式的元数据的概念,取而代之的是弹性哈希算法。集群中的任何服务器和客户端均可以利用哈希算法、路径及文件名进行计算,就能够对数据进行定位,并执行读写访问操做。

    这种设计带来的好处是极大的提升了扩展性,同时也提升了系统的性能和可靠性;另外一显著的特色是若是给定肯定的文件名,查找文件位置会很是快。可是若是要列出文件或者目录,性能会大幅降低,由于列出文件或者目录时,须要查询所在节点并对各节点中的信息进行聚合。此时有元数据服务的分布式文件系统的查询效率反而会提升许多。

二、服务器间的部署

    在以前的版本中服务器间的关系是对等的,也就是说每一个节点服务器都掌握了集群的配置信息,这样作的好处是每一个节点度拥有节点的配置信息,高度自治,全部信息均可以在本地查询。每一个节点的信息更新都会向其余节点通告,保证节点间信息的一致性。但若是集群规模较大,节点众多时,信息同步的效率就会降低,节点信息的非一致性几率就会大大提升。所以GlusterFS将来的版本有向集中式管理变化的趋势。

三、客户端访问流程

wKioL1lwbomyS0baAAC-XT7KF5o551.jpg

    当客户端访问GlusterFS存储时,首先程序经过访问挂载点的形式读写数据,对于用户和程序而言,集群文件系统是透明的,用户和程序根本感受不到文件系统是本地仍是在远程服务器上。读写操做将会被交给VFS(Virtual File System)来处理,VFS会将请求交给FUSE内核模块,而FUSE又会经过设备/dev/fuse将数据交给GlusterFS Client。最后通过GlusterFS Client的计算,并最终通过网络将请求或数据发送到GlusterFS Server上。

3、GlusterFS集群的模式

    GlusterFS 集群的模式只数据在集群中的存放结构,相似于磁盘阵列中的级别。

一、分布式卷(Distributed Volume)

    又称哈希卷,近似于RAID0,文件没有分片,文件根据hash算法写入各个节点的硬盘上,优势是容量大,缺点是没冗余。

wKiom1lweJay5hM-AAC4beaL-ac599.png

    建立卷指令以下:

gluster volume create test-volume server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4

二、复制卷(Replicated Volume)

    至关于raid1,复制的份数,决定集群的大小,一般与分布式卷或者条带卷组合使用,解决前两种存储卷的冗余缺陷。缺点是磁盘利用率低。

    复本卷在建立时可指定复本的数量,一般为2或者3,复本在存储时会在卷的不一样brick上,所以有几个复本就必须提供至少多个brick,当其中一台服务器失效后,能够从另外一台服务器读取数据,所以复制GlusterFS卷提升了数据可靠性的同事,还提供了数据冗余的功能。

wKioL1lweLKzr_7vAACsL8CfHUI325.png

    建立卷指令以下:

gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2

三、分布式复制卷(Distributed Replicated Volume)

   分布式复制GlusterFS卷结合了分布式和复制Gluster卷的特色,看起来相似RAID10,但其实不一样,RAID10其实质是条带化,但分布式复制GlusterFS卷则没有。

wKioL1lweMHiS2LtAAD1095bDP8347.png

    建立卷指令以下:

gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4

四、条带卷(Striped Volume)

    至关于raid0,文件是分片均匀写在各个节点的硬盘上的,优势是分布式读写,性能总体较好。缺点是没冗余,分片随机读写可能会致使硬盘IOPS饱和。

wKiom1lweM7i_nwIAACpNvdyUGo412.png

    建立卷指令以下:

gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2

五、分布式条带卷(Distributed Striped Volume)

    当单个文件的体型十分巨大,客户端数量更多时,条带卷已经没法知足需求,此时将分布式与条带化结合起来是一个比较好的选择。其性能与服务器数量有关。

wKioL1lweNyTFaaqAADSF1tRLiY956.png

    建立卷指令以下:

gluster volume create test-volume stripe 4 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6 server7:/exp7 server8:/exp8

参考文档:http://gluster.readthedocs.io/en/latest/Quick-Start-Guide/Architecture/


4、GlusterFS 的安装与应用,请点击查看

http://wzlinux.blog.51cto.com/8021085/1949619


                               wKiom1lwfNOj7ampAACmb4CVfN4109.jpg

相关文章
相关标签/搜索