Nfs挂在共享卷当serverA服务未启动,或者共享目录被删除,即使重建,也会导致serverB启动失败,此时需要寻求主机管理员的帮助,需要将/etc/exports的挂在描述注释。对此,解决办法暂时列出来两个:

  1. 将/etc/exports的描述去掉。该配置本来是为了客户端自动重启nfs挂在服务,但是如果服务端有问题,serverB正好又重启,会导致serverB直接启动失败。
  2. 将NFS修改为glusterfs的共享模式。

本次使用的系统版本为7.8;ip地址为:179.168.132.206;179.168.132.208

image-1654839701911

配置repo地址:
yum install -y centos-release-gluster
这个要先跑,不然可能会导致后续的glusterfs-server下载失败,glusterfs-server在阿里云镜像上都是找不到的。
下载glusterfs-server及相关:
yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
安装过程中有报错,版本没有对上,可能是之前跑了yum install centos-release-gluster41的原因,参照提示解决:

image-1654839719796

添加skip-broken忽略报错:
yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma --skip-broken

在206,208启动服务
设置开机启动:systemctl enable glusterd.service
启动glusterfs服务:systemctl start glusterd.service

创建集群:
在206执行:
gluster peer probe 179.168.132.208

image-1654839731761

测试执行过的,提示已经在列表当中。

在208执行:
gluster peer probe 179.168.132.206

应该只需要在206执行集群的创建就好了。
在206查看集群状态:

image-1654839746883

创建数据存储目录:
这一步在206和208都需要创建
mkdir /tmp/glus
数据存储目录,根据不同的模式有不同的存储表现,是真正存放数据的地方。

创建glusterfs卷:
gluster volume create storage_volumes stripe 2 179.168.132.206:/tmp/glus 179.168.132.208:/tmp/glus force
如果没有最后的foce参数:

image-1654839758717

参照提示,添加force参数:

image-1654839767222

卷的模式有若干种:
默认为DHT分布卷:一个文件数据全部随机进入到某一个server的glus中。
AFR复制卷:一个文件同时存在多个server的glus中。
Striped条带卷:一个文件切分为与server同等数量的份数,分别存放在各个server的glus中。
此处例子stripe 后接2,刚好与server数量相等,文件会被切分到各个server。
各种模式还可以进行组合,如stripe 2 replica 2,代表文件数据会切分成2份,分别存在在2个server中。所以2*2,至少需要4个server。
如果有4台server,设置为stripe 2,代表文件数据会切分成2份,存储在2台server当中,即切分的1份存放到1或者2server中。即有2台server并没有存储该文件数据。相对stripe 2 replica 2少了复制的操作。

启用glusterfs卷:

image-1654839779061

创建挂载卷的目录:mkdir -p /tmp/mnt

image-1654839790011

以下在208操作。
挂载206的glusterfs卷:mount -t glusterfs 179.168.132.206:/storage_volumes /tmp/mnt

image-1654839797647

创建测试文件,查看效果: dd if=/dev/zero of=test bs=1M count=1000
创建一个1000M的test文件,写入磁盘;

dd if=/dev/zero of=test bs=1M count=0 seek=10000 这种是不写入磁盘的。

image-1654839808888

image-1654839811845

test文件创建成功
查看test在存储目录的分配

image-1654839823653

可以看到test的大小为1000M的一半,另外一半分配在206的glus目录中,对应创建glusterfs卷的时候,使用的是stripe 2。

测试的一些点:

  1. 在测试过程中,重启206,会导致mnt使用有问题。
  2. 如果在使用过程中,对存储目录放入文件,会导致一些报错,如:

image-1654839836722
清理掉新移入的文件即可。
删除存储目录的文件,也会导致文件不可用
image-1654839845529
就是说,使用glusterfs需要保证存储目录不会有额外操作,否则就GG了。

  1. 停止glusterfs卷:gluster volume stop storage_volumes
  2. 删除glusterfs卷:gluster volume del storage_volumes
  3. 删除挂在卷:umount /tmp/mnt

更多操作参考:
https://blog.csdn.net/weiyuefei/article/details/79022672

参考资料:
图说各种模式:CentOS 7 安装部署 GlusterFS:
https://blog.csdn.net/weiyuefei/article/details/79022672

简单的挂载操作:https://zhuanlan.zhihu.com/p/45471041

Q.E.D.


知之为知之