安装

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

启动 glusterFS

1
2
systemctl start glusterd.service
systemctl enable glusterd.service

创建存储目录

1
mkdir -p /data/gluster/data

创建挂接目录

1
2
mkdir g_kaldi_train
chmod -R 777 g_kaldi_train

配置节点,任何一台机器,建议非当前机器

1
gluster peer probe <ip/hostname>

A)新增节点,任何一台机器,建议非当前机器

1
gluster volume create kaldi-train server1:/exp1 server2:/exp2

B)扩容节点,任何一台机器,建议非当前机器

1
gluster volume add-brick kaldi-train 172.23.0.14:/data/gluster/data

启动volume

1
gluster volume start models

挂接到机器路径

1
mount -t glusterfs 172.23.0.32:kaldi-train g_kaldi_train

移除挂接

1
sudo fusermount-glusterfs -uz /data/app/asr_data

官方推荐volume使用的5种方式:

1、默认模式,既DHT, 也叫 分布卷: 将文件已hash算法随机分布到一台服务器节点中存储。

1
gluster volume create test-volume server1:/exp1 server2:/exp2

图片

2、复制模式,既AFR, 创建volume 时带 replica x 数量: 将文件复制到 replica x 个节点中。

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

图片

3、条带模式,既Striped, 创建volume 时带 stripe x 数量: 将文件切割成数据块,分别存储到 stripe x 个节点中 ( 类似raid 0 )。

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

图片

4、分布式条带模式(组合型),最少需要4台服务器才能创建。 创建volume 时 stripe 2 server = 4 个节点: 是DHT 与 Striped 的组合型。

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

图片

5、分布式复制模式(组合型), 最少需要4台服务器才能创建。 创建volume 时 replica 2 server = 4 个节点:是DHT 与 AFR 的组合型。

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

图片

其他问题

  • 创建volume失败,再重新创建会报volume存在,处理办法:
    1
    2
    3
    # 在/data/gluster/data目录中删除".glusterfs"的目录
    rm -rf /data/gluster/data/.glusterfs
    sudo setfattr -x trusted.glusterfs.volume-id /data/gluster/data

参数优化

(k8s-volume 为 volume 名称)

# 开启 指定 volume 的配额

$ gluster volume quota k8s-volume enable

# 限制 指定 volume 的配额

$ gluster volume quota k8s-volume limit-usage / 1TB

# 设置 cache 大小, 默认32MB

$ gluster volume set k8s-volume performance.cache-size 4GB

# 设置 io 线程, 太大会导致进程崩溃,可以开到64

$ gluster volume set k8s-volume performance.io-thread-count 16

# 设置 网络检测时间, 默认42s

$ gluster volume set k8s-volume network.ping-timeout 10

# 设置 写缓冲区的大小, 默认1M

$ gluster volume set k8s-volume performance.write-behind-window-size 1024MB

# 开启 异步 , 后台操作,默认打开

$ gluster volume set k8s-volume performance.flush-behind on

# 设置 回写 (写数据时间,先写入缓存内,再写入硬盘),默认打开

$ gluster volume set k8s-volume performance.write-behind on

# 设置server进程数,默认2

$ gluster volume set k8s-volume server.event-threads 4

# 设置client进程数,默认2

$ gluster volume set k8s-volume client.event-threads 4

gluster异常修复

1
2
3
4
# 追查问题,先查看volume的状态
sudo gluster volume status

# 出现相关N/A的字样
1
2
3
4
5
6
7
8
9
10
# 修复方法
# 1、先找gluster进程
ps aux|grep gluster|grep fuse
# 2、选择异常的volfile-id对应的pid,然后kill
sudo kill $pid
# 3、gluster重启
sudo systemctl restart glusterd.service
# 4、查看网盘是否存在,不存在重新mount
df -h
sudo mount -t glusterfs 192.168.50.10:kaldi-data asr_data

机器重装系统,gluster补救办法

假设:192.168.50.204是重装机器,192.168.50.197是正常机器

准备工作

保证重装前后的机器host一致,更改hosts和hostname保证一致。
如果修改了hostname,别忘记重启。

第一步:先找到重装机器的uuid

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 197机器输入:
sudo gluster peer status

# 显示:
Number of Peers: x

Hostname: 192.168.50.200
Uuid: 481afd14-9feb-4617-aac4-60dd68a2f05c
State: Peer in Cluster (Connected)

Hostname: 192.168.50.201
Uuid: 71857cff-9640-472c-9e31-ac88db043c64
State: Peer in Cluster (Connected)

Hostname: 192.168.50.204
Uuid: 59b99029-a2d7-47f8-bdd1-6b0f812952e8
State: Peer Rejected (Disconnected)

...

可见204机器状态是peer rejected,而且获取到uuid

第二步:修改重装机器的uuid

1
2
3
4
5
6
sudo vim /var/lib/glusterd/glusterd.info

# 把UUid更改为第一步查询到的那个值

# 重启
sudo systemctl start glusterd

第三步:从正常机器同步gluster配置

1
2
3
4
5
# 通常发现204机器仍然会是peer rejected
Hostname: 192.168.50.204
Uuid: 59b99029-a2d7-47f8-bdd1-6b0f812952e8
State: Peer Rejected (Disconnected)

故需要从其他机器同步配置

1
2
3
4
5
6
7
8
9
# 在204机器执行
# 注意这步通常不用执行,除非以下步骤不行才执行:删除/var/lib/glusterd/目录下除glusterd.info文件的其他文件,重启glusterd

# 同步配置:
sudo gluster peer probe 192.168.50.197

# 在197机器执行:
sudo gluster peer status
# 观察204机器是否正常