GlusterFS是一个可扩展的网络文件系统,适用于云存储和媒体流等数据密集型任务。GlusterFS是免费的开源软件,可以使用常见的现成硬件
本文将以实验的形式来慢慢了解GlusterFS:
首先来看下GlusterFS支持的卷类型
- 分布式Distributed – 分布式卷在卷中的块中分布文件。您可以使用需要扩展存储的分布式卷,冗余要么不重要,要么由其他硬件/软件层提供。
- 复制卷Replicated – 复制的卷跨卷中的块复制文件。您可以在高可用性和高可靠性至关重要的环境中使用复制卷。
- 分布式复制卷Distributed Replicated – 分布式复制卷在卷中的复制块中分配文件。您可以在需要扩展存储且高可靠性至关重要的环境中使用分布式复制卷。分布式复制卷还可在大多数环境中提供更高的读取性能。(可理解为分布式与复制卷的组合)
- 分散Dispersed-分布式分散卷在分散的子卷上分发文件。这与分发复制卷具有相同的优点,但使用分散将数据存储到块中。
- Distributed Dispersed – 分布式分散卷在分散的子卷上分发文件。这与分发复制卷具有相同的优点,但使用分散将数据存储到块中
- Striped [Deprecated] – 条带卷在卷中的砖块上划分数据。为获得最佳结果,您应仅在访问非常大的文件的高并发环境中使用条带卷。
- Distributed Striped [Deprecated] – 分布式条带卷跨群集中的两个或多个节点条带化数据。您应该使用需要扩展存储的分布式条带卷,而在高并发环境中访问非常大的文件至关重要。
场景:假如我们有4台x86服务器,每台服务器12块硬盘,单盘1TB,做好raid10后每台服务器磁盘总量为6T,4台服务器就是24TB。我们可以利用GlusterFS分布式磁盘特性将4台服务器组成逻辑上单台24TB的linux磁盘,再通过SMB\iscsi协议共享给其它服务器(Linux、Windows)使用
分布式特性-Distributed实验

实验环境:
CENTOS7.x
GFS1-192.168.1.10
GFS2-192.168.1.11
GFS3-192.168.1.12
Client-192.168.1.13
本次实验采用LVM分区,分区大小为450G,你也可以采用sdb、sdc……的方式

1、修改主机名,设置hosts相关条目
2、安装 GlusterFS 服务器
选用一个组件源:从 CentOS 存储 SIG 或 Gluster.org 选其一
2.1、选用 CentOS 存储 SIG 组件
yum search centos-release-gluster yum install centos-release-gluster yum install glusterfs gluster-cli glusterfs-libs glusterfs-server
2.2、选用 Gluster.org 组件
yum install wget -y wget -P /etc/yum.repos.d/ http://download.gluster.org/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-epel.repo
另外亦从 fedoraproject.org 安装最新版的 EPEL 软件库,以便能满足所有依赖性:
# yum install http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
在两个存储群集节点上安装 GlusterFS 服务器及 Samba 组件。
# yum install glusterfs-server samba -y
3、在GFS1\GFS2\GFS3个三台节点启用并启动 glusterfsd.service:
systemctl enable glusterd.service systemctl start glusterd.service
GlusterFS 节点之间的沟通必须运用 TCP 端口 24007-24008,另外每件砖块须要一个由 24009 起分派的 TCP 端口。 在防火墙上启用所需的端口:
# firewall-cmd --zone=public --add-port=24007-24008/tcp --permanent firewall-cmd --reload
4、在任意一台GlusterFS节点中利用Gluster 指令连接到其它 GlusterFS 节点并创建一个 Trusted Pool(存储群集);如在gfs1节点中添加:
gluster peer probe gfs2<br/>gluster peer probe gfs3

检查同节点状态:
# gluster peer status

在三台节点中分别建立相同路径的目录
mkdir -p /gfs/bricks
创建分布式卷,gvname为卷名,请自定义(如果你的bricks在root分区,需要加force参数)
gluster volume create gvname gfs1:/gfs/bricks gfs2:/gfs2/bricks gfs3:/gfs3/bricks \<br/>force

启用卷,并查看卷状态
gluster volume start gvname<br/>gluster volume status gvname<br/>gluster volume info

5、客户端设置
所有需用的组件都已通过 CentOS 7 缺省的 Base 软件库所提供。 安装 GlusterFS 客户端组件:
# yum install glusterfs glusterfs-fuse attr -y
5.1、附加分布卷到客户端指定目录
mount.glusterfs gfs1:/gvname /mnt/

6、删除卷gluster volume stop gvname gluster volume delete gvname
GlusterFS创建volume失败的解决方法
volume create: gvname: failed: Staging failed on gfs3. Error: /gfs3/bricks is already part of a volume
解决:
删除/gfs3/bricks目录里".glusterfs"rm -rf /gfs3/bricks/.gltsterfs<br/>setfattr -x trusted.glusterfs.volume-id /gfs3/bricks
默认情况下,所有客户端都可以连接到卷。如果您只想授予对client1.example.com(= 192.168.1.3)的访问权限,请运行: gluster volume set gvname auth.allow 192.168.1.102
设置随系统启动,不建议添加到/etc/fstab中,因为rc.local总是在网络启动后执行,所以
建议将mount命令添加到/etc/rc.local文件
打开/etc/rc.local 并追加以下行: vi /etc/rc.local/usr/sbin/mount.glusterfs ma.acs.com:/gvname /mnt/授权rc.local chmod +x /etc/rc.d/rc.local
防火墙信息:
firewall-cmd --zone=public --add-port=24007-24008/tcp --permanent firewall-cmd --zone=public --add-port=24009/tcp --permanent firewall-cmd --zone=public --add-service=nfs --add-service=samba --add-service=samba-client --permanent firewall-cmd --zone=public --add-port=111/tcp --add-port=139/tcp --add-port=445/tcp --add-port=965/tcp --add-port=2049/tcp \ --add-port=38465-38469/tcp --add-port=631/tcp --add-port=111/udp --add-port=963/udp --add-port=49152-49251/tcp --permanent
firewall-cmd --reload