GlusterFS简介以及部署

GlusterFS简介

PB级容量、高可用、读写性能、基于文件系统级别共享、分布式、无metadata(元数据)的存储方式。

GlusterFS(GNU ClusterFile System)是一种全对称的开源分布式文件系统,所谓全对称是指GlusterFS采用弹性哈希算法,没有中心节点,所有节点全部平等。GlusterFS配置方便,稳定性好,可轻松达到PB级容量,数千个节点。

2011年被红帽收购,之后推出了基于GlusterFS的Red Hat Storage Server,增加了针对KVM的许多特性,可用作为KVM存储image存储集群,也可以为LB或HA提供存储。

GlusterFS重要特性:全对称架构、支持多种卷类型(类似RAID0/1/5/10/01)、支持卷级别的压缩、支持FUSE、支持NFS、支持SMB、支持Hadoop、支持OpenStack、与oVirt深度整合(对应RHEL红帽企业级虚拟化)。

GlusterFS重要概念

  • birck:GlusterFS的存储单元,以节点服务器目录形式展现;类似于Linux上块设备(block device)的概念。
  • volume:多个brick的逻辑集合;类似于LVM中的Volume。
  • metadata:元数据,用于描述文件、目录等的信息;
  • self-heal:用于后台运行检测副本卷中文件和目录的不一致性并解决这些不一致;
  • FUSE:Filesystem Userspace是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码通过在用户空间运行文件系统的代码通过FUSE代码与内核进行桥接;
  • Gluster Server:数据存储服务器,即组成GlusterFS存储集群的节点;
  • Gluster Client:使用GlusterFS存储服务的服务器,如KVM、OpenStack、LB RealServer、HA node。

GlusterFS部署

准备工作

由于GlusterFS并没有服务器与元数据等概念,因此所有服务器的设置都相同。如果操作时都用ip地址,不使用主机名,那么就不需要做hosts绑定,建议还是使用主机名方式。

部署时GlusterFS至少需要两台服务器搭建(建议三台),服务器配置最好相同,每个服务器两块磁盘,一块是用于安装系统,一块是用于GlusterFS。

1
2
3
4
5
[root@GlusterFS-master ~]# vim /etc/hosts
.....
172.31.0.6 node6
172.31.0.7 node7
172.31.0.8 node8

本文直接使用IP方式进行测试。有三台服务器,分别为 172.31.0.6/7/8

软件包安装

根据 官方Quickstart,可以使用

服务端

1
2
yum -y install centos-release-gluster	
yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma glusterfs-geo-replication glusterfs-devel

客户端只需要glusterfs、glusterfs-fuse

创建集群

分别启动glusterd服务(并添加开机自启动):

1
2
systemctl start glusterd
systemctl enable glusterd

创建集群(任意节点上执行一下操作,向集群中添加节点):

1
2
gluster peer probe 172.31.0.7
gluster peer probe 172.31.0.8

从集群中去除节点(该节点中不能存在卷中正在使用的brick):gluster peer detach 172.31.0.7。不需要添加自己,只需要添加其他节点即可

查看集群状态:gluster peer status

volume模式

GlusterFS中的volume的模式有很多中,包括以下几种:

  • 分布卷(默认模式):即DHT, 也叫 分布卷: 将文件以hash算法随机分布到 一台服务器节点中存储。
  • 复制模式:即AFR, 创建volume 时带 replica x 数量: 将文件复制到 replica x 个节点中。
  • 条带模式:即Striped, 创建volume 时带 stripe x 数量: 将文件切割成数据块,分别存储到 stripe x 个节点中 ( 类似raid 0 )。
  • 分布式条带模式:最少需要4台服务器才能创建。 创建volume 时 stripe 2 server = 4 个节点: 是DHT 与 Striped 的组合型。
  • 分布式复制模式:最少需要4台服务器才能创建。 创建volume 时 replica 2 server = 4 个节点:是DHT 与 AFR 的组合型。
  • 条带复制卷模式:最少需要4台服务器才能创建。 创建volume 时 stripe 2 replica 2 server = 4 个节点: 是 Striped 与 AFR 的组合型。
  • 三种模式混合: 至少需要8台 服务器才能创建。 stripe 2 replica 2 , 每4个节点 组成一个 组。

分布卷

分布式卷也成为哈希卷,多个文件以文件为单位在多个brick上,使用哈希算法随机存储。

  • 应用场景:大量小文件
  • 优点:读/写性能好
  • 缺点:如果存储或服务器故障,该brick上的数据将丢失

img

创建分布式卷:

1
2
3
4
5
6
7
8
9
10
# volumn_name:卷名
# node1:节点名
# /data/br1:可以理解为节点上的目录,这个目录最好是一个单独的分区(分区类型最好为逻辑卷的方式,这样易于操作系统级别的存储空间扩展)
gluster volume create volume_name node1:/data/br1 node2:/data/br1

# 启动这个卷:
gluster volume start volume_name

# 查看这个卷的信息:
gluster volume info volume_name

复制卷

多个文件在多个brick上复制多份,brick的数目要与需要复制的份数相等,建议brick分布在不同的服务器上。

应用场景:对可靠性高和读写性能要求高的场景

优点:读写性能好

缺点:写性能差

创建复制卷:

1
2
3
4
5
6
7
8
# 加上replica参数就完成了复制卷,后接文件保存的份数
gluster volume create volume_name replica 2 node1:/data/br1 node2:/data/br1

# 启动这个卷:
gluster volume start volume_name

# 查看这个卷的信息:
gluster volume info volume_name

条带卷

将大文件分成条带,存放在多个brick上,默认条带大小128k,应用场景为大文件,缺点:可靠性低,brick故障会导致数据全部丢失

创建条带卷:stripe:条带个数,gluster volume create volume_name stripe 2 node1:/data/br1 node2:/data/br1

分布式条带卷

多个文件在多个节点哈希存储,每个文件再多分条带在多个brick上存储

  • 应用场景:读/写性能高的大量大文件场景
  • 优点:高并发支持
  • 缺点:没有冗余,可靠性差
  • brick数是stripe的倍数

创建分布式条带卷:gluster volume create volume_name stripe 2 node1:/data/br1 node2:/data/br1 node3:/data/br1 node4:/data/br1

启动这个卷: gluster volume start volume_name

查看这个卷的信息:gluster volume info volume_name

创建时没有具体的选项,来指定卷的类型,只根据stripe和brick数量分配

分布式复制卷

多个文件在多个节点上哈希存储,在多个brick复制多份存储。

  • 应用场景:大量文件读和可靠性要求高的场景
  • 优点:高可靠,读性能高
  • 缺点:牺牲存储空间,写性能差
  • brick数量是replica的倍数

创建:gluster volume create volume_name replica 2 node1:/data/br1 node2:/data/br1 node3:/data/br1 node4:/data/br1

配置客户端使用卷

将卷挂载到本地的mysql目录:mount –t glusterfs node1:/volume_name /mysql

设置开机自动挂载

vim /etc/fstab加入:node1:/volume_name /mysql glusterfs defaults,_netdev 0 0

使用mount -a检测并挂载测试

其他挂在方式(NFS、Samba)参考:

http://www.mamicode.com/info-detail-1925105.html

实操

以172.31.0.6 172.31.0.7 172.31.0.8这三台机器为例,演示安装和配置过程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 安装
yum -y install centos-release-gluster
yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma glusterfs-geo-replication glusterfs-devel
# 启动服务
systemctl start glusterd
systemctl enable glusterd
mkdir /cache1/glusterd/ /gfsshare/ -p
# 在0.6的机器运行,添加peer
gluster peer probe 172.31.0.7
gluster peer probe 172.31.0.8
# 添加volume,使用三副本的方式
gluster volume create hidsdata replica 3 172.31.0.6:/cache1/glusterd/ 172.31.0.7:/cache1/glusterd/ 172.31.0.8:/cache1/glusterd/
gluster volume start hidsdata
mount -t glusterfs 172.31.0.6:hidsdata /gfsshare/ #手工
echo "172.31.0.6:hidsdata /gfsshare glusterfs defaults,_netdev 0 0" >>/etc/fstab

查看peer状态:

1
2
3
4
5
6
7
8
9
10
[root@wlpx09w8npgsdp ~]# gluster peer status
Number of Peers: 2

Hostname: 172.31.0.7
Uuid: e9208e52-1d8e-4251-9f39-9df46537a31a
State: Peer in Cluster (Connected)

Hostname: 172.31.0.8
Uuid: b82d5eb1-391b-48d8-8d1e-d004274c6bd0
State: Peer in Cluster (Connected)

查看volume的状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[root@wlpx09w8npgsdp ~]# gluster volume list
hidsdata
[root@wlpx09w8npgsdp ~]#
[root@wlpx09w8npgsdp ~]# gluster volume info hidsdata

Volume Name: hidsdata
Type: Replicate
Volume ID: f4d5905c-0e3a-448d-a1d6-ea73c7a5259f
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: 172.31.0.6:/cache1/glusterd
Brick2: 172.31.0.7:/cache1/glusterd
Brick3: 172.31.0.8:/cache1/glusterd
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: off
performance.client-io-threads: off

[root@wlpx09w8npgsdp ~]# gluster volume status hidsdata
Status of volume: hidsdata
Gluster process TCP Port RDMA Port Online Pid
------------------------------------------------------------------------------
Brick 172.31.0.6:/cache1/glusterd 49152 0 Y 20608
Brick 172.31.0.7:/cache1/glusterd 49152 0 Y 54538
Brick 172.31.0.8:/cache1/glusterd 49152 0 Y 117976
Self-heal Daemon on localhost N/A N/A Y 123716
Self-heal Daemon on 172.31.0.8 N/A N/A Y 118014
Self-heal Daemon on 172.31.0.7 N/A N/A Y 54556

Task Status of Volume hidsdata
------------------------------------------------------------------------------
There are no active volume tasks

参考链接

GlusterFS部署

GlusterFS学习之路(三)客户端挂载和管理GlusterFS卷

【beegfs相关】beegfs集群部署

  • 本文作者: wumingx
  • 本文链接: https://www.wumingx.com/linux/GlusterFS.html
  • 本文主题: GlusterFS简介以及部署
  • 版权声明: 本站所有文章除特别声明外,转载请注明出处!如有侵权,请联系我删除。
0%