2021-06-04

Glusterfs是一个开源的分布式文件系统,容量可以按比例的扩展,且性能却不会因此而降低。
廉价且使用简单,完全抽象在已有的文件系统之上。
扩展和容错设计的比较合理,复杂度较低
适应性强,部署方便,对环境依赖低,使用,调试和维护便利。

一. 环境准备

1. 服务器

192.168.1.10 gfs01
192.168.1.11 gfs02
192.168.1.13 gfs03
192.168.1.14 gfs04

2. 添加磁盘

添加数据硬盘,每台服务器至少2块硬盘,1块是系统盘,另一块是存放数据,数据盘如果多块建议做lvm卷便于管理。
配置磁盘lv挂载到目录,并写入/etc/fstab.
(添加磁盘数量按需分配,本环境3块磁盘用于演示)

mkfs.xfs /dev/xvdb
mkfs.xfs /dev/xvdc
mkfs.xfs /dev/xvde

mount /dev/xvdb /data1
mount /dev/xvdc /data2
mount /dev/xvde /data3

echo "/dev/xvdb  /data1  xfs  defaults 0 0" >> /etc/fstab
echo "/dev/xvdb  /data1  xfs  defaults 0 0" >> /etc/fstab
echo "/dev/xvdb  /data1  xfs  defaults 0 0" >> /etc/fstab

3. 添加glusterfs yum源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

将下段repo添加至Centos-7.repo最后
gluster-6为版本,可以改为gluster-9新版本

[centos-gluster6]
name=CentOS-$releasever - Gluster 6
mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=$releasever&repo=storage-gluster-6
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage

二.安装glusterfs服务

1. 安装服务:

每个节点操作:

yum install -y centos-release-gluster  glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma vim net-tools
systemctl start glusterd
systemctl enable glusterd

2. 添加节点

除本地外的节点(在192.168.1.10操作)

gluster peer probe 192.168.1.11

3. 查看集群状态

gluster peer status

4. 创建GlusterFS卷:

在192.168.1.10操作(在其中一台服务器上创建即可),以下类型可选则适合自己环境的一种进行创建。

(1) 分布式卷(distribute voulme)

分布式模式,既DHT,是GlusterFS的默认模式,在创建卷时,默认选项是创建分布式卷。在该模式下,并没有对文件进行分块处理,而是通过hash算法分布到所有brick server上,只是扩大了磁盘空间,类似window中的跨区卷
distribute voulme特点:
文件分布在不同的服务器,不具备冗余性。
更容易且廉价地扩展卷的大小。
单点故障会造成数据丢失,不具备容错性。
依赖底层的数据保护。

gluster volume create ocp 192.168.1.10:/data1/ocp 192.168.1.11:/data1/ocp

ocp为自定义卷名,可任意命名,客户端挂载此存储时会用到,下文中不再注解。

(2) 条带卷(stripe volume)

条带模式,既Striped,类似RADI 0,在该模式下,根据偏移量将文件分成N块(N个条带节点),轮询地存储在每个Brick Server节点。节点把每个数据块都作为普通文件存入本地文件系统,通过扩展属性记录总块数和每块的序号。在配置时指定条带数必须等于卷中Brick 所包含的存储服务器数,在存储大文件时,性能尤为突出,但是不具备冗余性。

stripe volume特点
数据被分割成更小块分布到块服务器群中的不同条带区。
分布减少了负载且更小的文件加速了存取的速度。
没有数据冗余,不具备冗余性。
单点故障会造成数据丢失,不具备容错性。

gluster volume create ocp stripe 2 192.168.1.10:/data2/ocp 192.168.1.11:/data2/ocp

(3) 复制卷:(replica volme)

复制模式,既AFR,文件级别RAID 1,即同一文件保存一份或多份副本,每个节点上保存相同的内容和目录结构。复制模式因为要保存副本,所以磁盘利用率较低,如果多个节点上的存储空间不一致,那么将按照木桶效应取最低节点的容量作为该卷的总容量。复制卷具有冗余性,即使一个节点损坏,也不影响数据的正常使用。

replica volme特点
卷中所有的服务器均保存一个完整的副本。
卷的副本数量可由客户创建的时候决定。
磁盘利用率低。
具备冗余性

gluster volume create ocp replica 2 192.168.1.10:/data3/ocp 192.168.1.11:/data3/ocp

(4) 分布式条带卷(distribute stripe volume)

最少需要4台服务器才能创建。 brickserver数量是条带数的倍数,兼具distribute和stripe卷的特点,是DHT 与 Striped 的组合型。

gluster volume create ocp stripe 2 192.168.1.10:/data4/ocp 192.168.1.11:/ data4/ocp 192.168.1.12:/data4/ocp 192.168.1.13:/data4/ocp

(5) 分布式复制卷(distribute replica volume)

最少需要4台服务器才能创建。brickserver数量是镜像数的倍数,兼具distribute和replica卷的特点,可以在2个或多个节点之间复制数据,是DHT 与 AFR 的组合型。

gluster volume create ocp  replica 2 192.168.1.10:/data5/ocp 192.168.1.11:/data5/ocp 192.168.1.12:/data5/ocp 192.168.1.13:/data5/ocp

(6) 条带复制卷(stripe replica volume)

最少需要4台服务器才能创建。类似RAID 10,是 Striped 与 AFR 的组合型。
先组成RAID1,然后组成RAID0
RAID 10(又叫RAID 1+0)特点:
先按RAID 0分成两组,再分别对两组按RAID 1方式镜像
兼顾冗余(提供镜像存储)和性能(数据条带形分布)

gluster volume create ocp stripe 2 replica 2 192.168.1.10:/data6/ocp 192.168.1.11:/data6/ocp 192.168.1.12:/data6/ocp 192.168.1.13:/data6/ocp

(7) 分布式条带复制卷(distribute stripe volume)

至少需要8台 服务器才能创建。三种模式的混合。

gluster volume create ocp stripe 2 replica 2 192.168.1.10:/data6/ocp 192.168.1.11:/data6/ocp 192.168.1.12:/data6/ocp 192.168.1.13:/data6/ocp exampleNode5:/data6/ocp exampleNode6:/data6/ocp exampleNode7:/data6/ocp exampleNode8:/data6/ocp

三.启动卷

创建卷完成后,需启动卷,启动命令

gluster volume start ocp

只在其中一台服务器启动即可。

四.常用命令

启动卷
gluster volume start ocp
停止models卷
gluster volume stop ocp
查看卷信息
gluster volume info
查看卷状态
gluster volume status
查看卷IO
gluster volume profileb ocp start
gluster volume profile ocp info
gluster volume profile ocp stop 
(查看结束后关闭profiling功能)

brick监控
查看打开的fd
gluster volume top ocp open brick 192.168.100.111:/data1/ocp list-cnt 3
查看调用次数最多的读调用
gluster volume top ocp read brick 192.168.100.111:/data1/ocp list-cnt 3
查看调用次数最多的写调用
gluster volume top ocp write brick 192.168.100.111:/data1/ocp list-cnt 3
查看次数最多的目录调用
gluster volume top ocp opendir brick 192.168.100.111:/data1/ocp list-cnt 3
查看每个Brick的读性能
gluster volume top ocp read-perf brick 192.168.100.111:/data1/ocp list-cnt 3
查看每个Brick的写性能
gluster volume top ocp write-perf brick 192.168.100.111:/data1/ocp list-cnt 3

启动gluster
gluster start
停止gluster
gluster stop
重启gluster
gluster restart

五. 客户端挂载:

配置yum源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

将下段repo添加至Centos-7.repo最后

[centos-gluster6]
name=CentOS-$releasever - Gluster 6
mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=$releasever&repo=storage-gluster-6
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage

安装

yum install -y glusterfs glusterfs-fuse openssl-devel

挂载glusterfs存储 (只需要挂载其中一个节点)

mount -t glusterfs 192.168.1.10:ocp /gluster/data 

{message type=“error”}注意:如果以主机名挂载。需要在客户端将所有glusterfs节点写入到/etc/hosts解析
因为客户端向gfs服务器写数据是同时向所有gfs节点写入。{/message}

开机自动挂载:

vim /etc/fstab 
192.168.1.10:ocp /mnt/glusterfs glusterfs defaults,_netdev 0 0

六. 优化配置

以下参数并非所有环境通用,需根据自己的环境进行调整。

  1. 设置允许挂载范围,注意默认是允许所有客户端,哪怕不在授信池内的客户端
    gluster volume set ocp auth.allow dn11,dn22,dn33;
  2. 开启ACL支持
    gluster volume set ocp acl on;
  3. 设置磁盘剩余空间最小阈值,达到这个值就不能再继续写入数据了
    gluster volume set ocp cluster.min-free-disk 15;
  4. 设置请求等待超时时间,默认1800秒,设置范围0-1800秒,读写的数据超过1800秒未返回结果就认为超时
    gluster volume set ocp network.frame-timeout 1500;
  5. 设置客户端检测服务器可用超时时间,默认42秒,范围为0-42秒
    gluster volume set ocp network.ping-timeout 20;
  6. NFS服务,默认为开启
    gluster volume set ocp nfs.disable off;
  7. 设置IO线程数,默认为16,范围为0-65
    gluster volume set ocp performance.io-thread-count 32;
  8. 设置缓存数据校验周期,默认为1秒,默认为0-61秒,如果同时有多个用户在读写一个文件,一个用户更新了数据,另一个用户在Cache刷新周期到来前可能读到非最新的数据,即无法保证数据的强一致性。因此实际应用时需要在性>能和数据一致性之间进行折中,如果需要更高的数据一致性,就得调小缓存刷新周期,甚至禁用读缓存;反之,是可以把缓存周期调大一点,以提升读性能 
    gluster volume set ocp performance.cache-refresh-timeout 2;
  9. 设置读缓存大小,单位为字节,默认大小为32M
    gluster volume set ocp performance.cache-size 128MB;
  10. 启用对小文件的优化性能,默认即为打开
    gluster volume set ocp performance.quick-read on;
  11. 设置文件预读,用预读的方式提高读取的性能,读取操作前就预先抓取数据,这个有利于应用频繁持续性的访问文件,当应用完成当前数据块读取的时候,下一个数据块就已经准备好了,预读处理有page-size和page-count来定义,page-size定义了,一次预读取的数据块大小,page-count定义的是被预读取的块的数量,不过官方网站上说这个中继在以太网上没有必要,一般都能跑满带宽。主要是在IB-verbs或10G的以太网上用。
    gluster volume set ocp performance.read-ahead on;
  12. 设置在写数据的时候先写入到缓存再写入到磁盘,以提高写入性能,默认为开启
    gluster volume set ocp performance.nfs.write-behind on;
  13. 缓存已经读过的数据,默认即开启,结合上面的performance.quick-read和performance.read-ahead使用
    gluster volume set ocp performance.io-cache on;
  14. 开启磁盘修复功能(只适用于复制卷或分布式复制卷)
    gluster volume heal ocp full;
  15. 查看磁盘状况
    gluster volume heal ocp info;
  16. 查看卷信息
    gluster volume info ocp;
  17. 清空一个选项的参数,如清空acl的配置
    gluster volume reset ocp acl force;
  18. 查看一个选项的参数,如查看acl的配置  
    gluster volume get ocp acl;

七. 删除共享存储的卷:

  1. 设置所有节点开机自启glusterfs
  2. gluster peer status检查节点情况
  3. gluster volume stop 停止你要删除的卷
  4. gluster volume delete 删除你要删的卷
  5. rm -f 彻底删除硬盘上的卷残留
上一篇:gluster 管理 命令和配置lvm


下一篇:CF341E Candies Game