Glusterfs分布式存储部署-八零岁月
记录所见
分享所感

Glusterfs分布式存储部署

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

一. 环境准备

1. 服务器

192.168.4.203 gfs01
192.168.4.205 gfs02
192.168.4.207 gfs03
192.168.4.208 gfs04

2. 添加磁盘

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

mkfs.xfs /dev/sdb1
mount /dev/sdb1 /data1
echo "/dev/sdb1 /data1 xfs defaults 0 0" >> /etc/fstab

二.安装glusterfs服务

1. 安装服务:

每个节点操作:

yum -y install centos-release-gluster -y
yum -y install glusterfs-server -y
systemctl start glusterd.service
systemctl enable glusterd.service
systemctl status glusterd.service

2. 添加节点

除本地外的节点[gfs01]

gluster peer probe 02
gluster peer probe 03

其他节点依次添加

3. 查看集群状态

gluster peer status
[root@gfs01 ~]# gluster peer status
Number of Peers: 3

Hostname: gfs02
Uuid: 4c34f2b3-ebcd-4d72-a2b2-b467a5ace233
State: Peer in Cluster (Connected)

Hostname: gfs03
Uuid: 8100576b-12aa-4328-9dc1-8d915f68f471
State: Peer in Cluster (Connected)

Hostname: gfs04
Uuid: ac890b98-3ee4-40d9-98c7-7b4125a74797
State: Peer in Cluster (Connected)

4. 创建GlusterFS卷:

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

(1) 分布式卷(distribute voulme)

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

gluster volume create test gfs01:/data1/test1 gfs02:/data1/test1

(2) 条带卷(stripe volume)

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

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

gluster volume create test2 stripe 2 gfs01:/data1/test2 gfs02:/data1/test2

(3) 复制卷:(replica volme)

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

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

gluster volume create test3 replica 2 gfs01:/data1/test3 gfs02:/data1/test3

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

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

gluster volume create test4 stripe 2 gfs01:/data1/test4 gfs02:/data1/test4 gfs03:/data1/test4 gfs04:/data1/test4

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

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

gluster volume create test5  replica 2 gfs01:/data1/test5 gfs02:/data1/test5 gfs03:/data1/test5 gfs04:/data1/test5

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

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

gluster volume create test6 stripe 2 replica 2 gfs01:/data1/test6 gfs02:/data1/test6 gfs03:/data1/test6 gfs04:/data1/test6

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

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

gluster volume create test7 stripe 2 replica 2 gfs01:/data1/test7 gfs02:/data1/test7 gfs03:/data1/test7 gfs04:/data1/test7 exampleNode5:/data1/test7 exampleNode6:/data1/test7 exampleNode7:/data1/test7 exampleNode8:/data1/test7

三.启动卷

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

gluster volume start test

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

四.常用命令

启动卷

gluster volume start test

停止models卷

gluster volume stop test

查看卷信息

gluster volume info

查看卷状态

gluster volume status

查看卷IO

gluster volume profileb test start
gluster volume profile test info
gluster volume profile test stop

查看结束后关闭profiling功能)

brick监控 查看打开的fd

gluster volume top test open brick 192.168.4.203:/data1/test list-cnt 3

查看调用次数最多的读调用

gluster volume top test read brick 192.168.4.203:/data1/test list-cnt 3

查看调用次数最多的写调用

gluster volume top test write brick 192.168.4.203:/data1/test list-cnt 3

查看次数最多的目录调用

gluster volume top test opendir brick 192.168.4.203:/data1/test list-cnt 3

查看每个Brick的读性能

gluster volume top test read-perf brick 192.168.4.203:/data1/test list-cnt 3

查看每个Brick的写性能

gluster volume top test write-perf brick 192.168.4.203:/data1/test list-cnt 3

启动gluster

gluster start

停止gluster

gluster stop

重启gluster

gluster restart

五. 客户端挂载:

安装:

yum -y install centos-release-gluster -y
yum install -y glusterfs glusterfs-fuse openssl-devel

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

echo '
192.168.4.203 gfs01
192.168.4.205 gfs02
192.168.4.207 gfs03
192.168.4.208 gfs04' >> /etc/hosts

mount -t glusterfs 192.168.xx.xx:test /gluster/data

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

开机自动挂载:

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

六. 优化配置

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

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

七. 删除共享存储的卷:

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

文章转载请说明出处:八零岁月 » Glusterfs分布式存储部署

分享到:更多 ()

吐槽集中营 抢沙发

评论前必须登录!