千家信息网

GFS分布式文件系统集群(实践篇)

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,实践部署实践环境开启5台Linux虚拟机,并在其中四台分别添加4块硬盘,每块硬盘内存为:20G开启后分别设置虚拟机名称为:node1、node2、node3、node4、client服务器地址分别为n
千家信息网最后更新 2025年01月24日GFS分布式文件系统集群(实践篇)

实践部署

实践环境

  • 开启5台Linux虚拟机,并在其中四台分别添加4块硬盘,每块硬盘内存为:20G
  • 开启后分别设置虚拟机名称为:node1、node2、node3、node4、client
  • 服务器地址分别为
    • node1:192.168.116.128
    • node2:192.168.116.130
    • node3:192.168.116.129
    • node4:192.168.116.131
    • client:192.168.116.132

在所有虚拟机中配置主机名解析

vim /etc/hosts...192.168.116.128 node1192.168.116.130 node2192.168.116.129 node3192.168.116.131 node4:wq

在node1节点服务器中编辑格式磁盘脚本,并执行脚本

mkdir /abc                //创建目录cd /abcvim disk.sh                //编辑脚本mkdir -p /data/sd{b..e}1for i in {b..e};doecho 'nw' | fdisk /dev/sd${i}mkfs.xfs /dev/sd${i}1mount /dev/sd${i}1 /data/sd${i}1done:wqchmod +x disk.sh         //添加执行权限./disk.sh                //执行脚本df -hT                  //查看磁盘信息文件系统       类型      容量  已用  可用 已用% 挂载点/dev/sda2      xfs        20G  1.5G   19G    8% /devtmpfs       devtmpfs  903M     0  903M    0% /devtmpfs          tmpfs     912M     0  912M    0% /dev/shmtmpfs          tmpfs     912M  8.6M  904M    1% /runtmpfs          tmpfs     912M     0  912M    0% /sys/fs/cgroup/dev/sda5      xfs       8.0G   33M  8.0G    1% /home/dev/sda1      xfs       8.0G  135M  7.9G    2% /boottmpfs          tmpfs     183M     0  183M    0% /run/user/0/dev/sdb1      xfs        20G   33M   20G    1% /data/sdb1/dev/sdc1      xfs        20G   33M   20G    1% /data/sdc1/dev/sdd1      xfs        20G   33M   20G    1% /data/sdd1/dev/sde1      xfs        20G   33M   20G    1% /data/sde1  //成功分区

将脚本文件分别推送到两外3个节点服务器,并分别执行脚本文件

scp disk.sh root@192.168.116.130:/opt/scp disk.sh root@192.168.116.129:/opt/scp disk.sh root@192.168.116.131:/opt/

在所有node节点服务器中搭建yum源,使用yum源安装GFS服务

  • GFS软件yum包下载
    mount.cifs //192.168.80.2/shares /abc/   //挂载yum存放目录cd /etc/yum.repos.d/              //进入yum仓库目录mkdir bak                          //创建文件夹mv CentOS-* bak/                    //将已存在的源全部放入创建的文件夹内vim glfs.repo                       //编辑yum源[glfs]name=glfsbaseurl=file:///abc/gfsrepo           //指定yum源路径gpgcheck=0enabled=1:wqyum list                               //重新加载yum仓库yum install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma -y   //安装GFS服务systemctl stop firewalld.service    //关闭防火墙setenforce 0                        //关闭selinuxsystemctl start glusterd.service    //启动gfs服务systemctl enable glusterd.service   //设置开启自启ntpdate ntp1.aliyun.com             //同步阿里云时间

    进入node1节点服务器,添加信任节点

    gluster peer probe node2gluster peer probe node3gluster peer probe node4

    在所有节点服务器查看信任节点信息

gluster peer statusNumber of Peers: 3Hostname: node2Uuid: 86e94693-aaaf-4eb9-91d6-edce0489e4f7State: Peer in Cluster (Connected)Hostname: node3Uuid: 1ee7a579-4a0e-493e-8709-d8234b8bb858State: Peer in Cluster (Connected)Hostname: node4Uuid: b98e1eb0-3639-47be-a767-3a3df125443aState: Peer in Cluster (Connected)

在node1节点创建分布式卷

[root@node1 yum.repos.d]# gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force   //创建分布式卷 force 强制执行[root@node1 yum.repos.d]# gluster volume info dis-vol    //查看卷信息Volume Name: dis-volType: DistributeVolume ID: 370023d1-cdc9-4b0d-9c57-663ebad503cdStatus: CreatedSnapshot Count: 0Number of Bricks: 2Transport-type: tcpBricks:Brick1: node1:/data/sdb1Brick2: node2:/data/sdb1Options Reconfigured:transport.address-family: inetnfs.disable: on[root@node1 yum.repos.d]# gluster volume list     //查看创建的卷dis-vol[root@node1 yum.repos.d]# gluster volume start dis-vol   //启动卷volume start: dis-vol: success[root@node1 yum.repos.d]# gluster volume status dis-vol   //查看卷状态tatus of volume: dis-volGluster process                             TCP Port  RDMA Port  Online  Pid------------------------------------------------------------------------------Brick node1:/data/sdb1                      49152     0          Y       12100Brick node2:/data/sdb1                      49152     0          Y       11714Task Status of Volume dis-vol------------------------------------------------------------------------------There are no active volume tasks[root@node1 yum.repos.d]# gluster volume info dis-vol   //再次查看卷信息Volume Name: dis-volType: Distribute        Volume ID: 370023d1-cdc9-4b0d-9c57-663ebad503cdStatus: Started                 //处于启动状态Snapshot Count: 0Number of Bricks: 2Transport-type: tcpBricks:Brick1: node1:/data/sdb1Brick2: node2:/data/sdb1Options Reconfigured:transport.address-family: inetnfs.disable: on

创建条带卷

[root@node1 yum.repos.d]# gluster volume create stripe-vol stripe 2 node1:/data/sdc1 node2:/data/sdc1 forcevolume create: stripe-vol: success: please start the volume to access data[root@node1 yum.repos.d]# gluster volume start stripe-vol volume start: stripe-vol: success[root@node1 yum.repos.d]# gluster volume info stripe-vol Volume Name: stripe-volType: StripeVolume ID: da81b00a-0e98-43d9-b55a-726c758ecef9Status: StartedSnapshot Count: 0Number of Bricks: 1 x 2 = 2Transport-type: tcpBricks:Brick1: node1:/data/sdc1Brick2: node2:/data/sdc1Options Reconfigured:transport.address-family: inetnfs.disable: on

创建复制卷

[root@node1 yum.repos.d]# gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 forcevolume create: rep-vol: success: please start the volume to access data[root@node1 yum.repos.d]# gluster volume start rep-vol volume start: rep-vol: success[root@node1 yum.repos.d]# gluster volume info rep-vol Volume Name: rep-volType: ReplicateVolume ID: fa5bd0c7-5d8d-49da-a25d-9d3fb0592fe3Status: StartedSnapshot Count: 0Number of Bricks: 1 x 2 = 2Transport-type: tcpBricks:Brick1: node3:/data/sdb1Brick2: node4:/data/sdb1Options Reconfigured:transport.address-family: inetnfs.disable: on

创建分布式条带卷(至少4个节点)

[root@node1 yum.repos.d]# gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 forcevolume create: dis-stripe: success: please start the volume to access data[root@node1 yum.repos.d]# gluster volume start dis-stripe volume start: dis-stripe: success[root@node1 yum.repos.d]# gluster volume info dis-stripe Volume Name: dis-stripeType: Distributed-StripeVolume ID: 6dc5d7c3-76ed-437d-b5fe-e0b875c0de18Status: StartedSnapshot Count: 0Number of Bricks: 2 x 2 = 4Transport-type: tcpBricks:Brick1: node1:/data/sdd1Brick2: node2:/data/sdd1Brick3: node3:/data/sdd1Brick4: node4:/data/sdd1Options Reconfigured:transport.address-family: inetnfs.disable: on

创建分布式复制卷(至少4个节点)

[root@node1 yum.repos.d]# gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 forcevolume create: dis-rep: success: please start the volume to access data[root@node1 yum.repos.d]# gluster volume start dis-rep volume start: dis-rep: success[root@node1 yum.repos.d]# gluster volume info dis-rep Volume Name: dis-repType: Distributed-ReplicateVolume ID: dd2c8b19-d63b-42aa-be66-ca760335d0a0Status: StartedSnapshot Count: 0Number of Bricks: 2 x 2 = 4Transport-type: tcpBricks:Brick1: node1:/data/sde1Brick2: node2:/data/sde1Brick3: node3:/data/sde1Brick4: node4:/data/sde1Options Reconfigured:transport.address-family: inetnfs.disable: on

查看创建的卷

[root@node1 yum.repos.d]# gluster volume listdis-repdis-stripedis-volrep-volstripe-vol

client配置

systemctl stop firewalld.service    //关闭防火墙setenforce 0mkdir /abcmount.cifs //192.168.100.8/shares /abc/   //挂载yum源码包目录cd /etc/yum.repos.d/mkdir bakmv CentOS-* bak/vim glfs.repo                    //创建yum源[glfs]name=glfsbaseurl=file:///abc/gfsrepogpgcheck=0enabled=1:wqyum listyum install glusterfs glusterfs-fuse -y     //安装GFSmkdir -p /text/dismkdir /text/stripmkdir /text/repmkdir /text/dis-strmkdir /text/dis-rep       //创建5个挂载点目录mount.glusterfs node1:dis-vol /text/dis/     //挂载分布式卷mount.glusterfs node1:stripe-vol /text/strip/     //挂载条带卷mount.glusterfs node3:rep-vol /text/rep/          //挂载复制卷mount.glusterfs node2:dis-stripe /text/dis-str/    //挂载分布式条带卷mount.glusterfs node4:dis-rep /text/dis-rep/        //挂载分布式复制卷df -h件系统                 容量  已用  可用 已用% 挂载点···node1:dis-vol             20G  265M   20G    2% /test/disnode1:stripe-vol          20G  265M   20G    2% /test/stripnode1:rep-vol             10G  233M  9.8G    3% /test/repnode1:dis-stripe          40G  330M   40G    1% /test/dis_stripenode1:dis-rep             20G  265M   20G    2% /test/dis_rep

在client服务器中创建5个40M的文件,并将文件分别复制到5个挂载目录中

dd if=/dev/zero of=/demo1.log bs=1M count=40dd if=/dev/zero of=/demo2.log bs=1M count=40dd if=/dev/zero of=/demo3.log bs=1M count=40dd if=/dev/zero of=/demo4.log bs=1M count=40dd if=/dev/zero of=/demo5.log bs=1M count=40cp /demo* /test/discp /demo* /test/stripcp /demo* /test/repcp /demo* /test/dis_stripecp /demo* /test/dis_rep

在node1、node2中查看分布式卷存放方式

[root@node1 ~]# ll -h /data/sdb1/总用量 160M-rw-r--r--. 2 root root 40M 12月 18 16:22 demo1.log   //每个文件都是完整的-rw-r--r--. 2 root root 40M 12月 18 16:22 demo2.log   -rw-r--r--. 2 root root 40M 12月 18 16:22 demo3.log-rw-r--r--. 2 root root 40M 12月 18 16:22 demo4.log[root@node2 ~]# ll -h /data/sdb1/总用量 40M-rw-r--r--. 2 root root 40M 12月 18 16:22 demo5.log  //通过hash算法分布式存放在两台节点服务器中

在node1、node2中查看条带卷存放方式

[root@node1 ~]# ll -h /data/sdc1/总用量 100M-rw-r--r--. 2 root root 20M 12月 18 16:23 demo1.log-rw-r--r--. 2 root root 20M 12月 18 16:23 demo2.log-rw-r--r--. 2 root root 20M 12月 18 16:23 demo3.log-rw-r--r--. 2 root root 20M 12月 18 16:23 demo4.log-rw-r--r--. 2 root root 20M 12月 18 16:23 demo5.log[root@node2 ~]# ll -h /data/sdc1/总用量 100M-rw-r--r--. 2 root root 20M 12月 18 16:23 demo1.log-rw-r--r--. 2 root root 20M 12月 18 16:23 demo2.log-rw-r--r--. 2 root root 20M 12月 18 16:23 demo3.log-rw-r--r--. 2 root root 20M 12月 18 16:23 demo4.log-rw-r--r--. 2 root root 20M 12月 18 16:23 demo5.log//所有文件都被分成各一半进行分布存储

在node3、node4中查看复制卷

[root@node3 ~]# ll -h /data/sdb1总用量 200M-rw-r--r--. 2 root root 40M 12月 18 16:23 demo1.log-rw-r--r--. 2 root root 40M 12月 18 16:23 demo2.log-rw-r--r--. 2 root root 40M 12月 18 16:23 demo3.log-rw-r--r--. 2 root root 40M 12月 18 16:23 demo4.log-rw-r--r--. 2 root root 40M 12月 18 16:23 demo5.log[root@node4 ~]# ll -h /data/sdb1/总用量 200M-rw-r--r--. 2 root root 40M 12月 18 16:23 demo1.log-rw-r--r--. 2 root root 40M 12月 18 16:23 demo2.log-rw-r--r--. 2 root root 40M 12月 18 16:23 demo3.log-rw-r--r--. 2 root root 40M 12月 18 16:23 demo4.log-rw-r--r--. 2 root root 40M 12月 18 16:23 demo5.log//所有文件都被完整复制一遍,进行存储

分别在所有节点服务器中查看分布式条带卷存放方式

[root@node1 ~]# ll -h /data/sdd1/总用量 80M-rw-r--r--. 2 root root 20M 12月 18 16:23 demo1.log-rw-r--r--. 2 root root 20M 12月 18 16:23 demo2.log-rw-r--r--. 2 root root 20M 12月 18 16:23 demo3.log-rw-r--r--. 2 root root 20M 12月 18 16:23 demo4.log[root@node2 ~]# ll -h /data/sdd1/总用量 80M-rw-r--r--. 2 root root 20M 12月 18 16:23 demo1.log-rw-r--r--. 2 root root 20M 12月 18 16:23 demo2.log-rw-r--r--. 2 root root 20M 12月 18 16:23 demo3.log-rw-r--r--. 2 root root 20M 12月 18 16:23 demo4.log[root@node3 ~]# ll -h /data/sdd1/总用量 20M-rw-r--r--. 2 root root 20M 12月 18 16:23 demo5.log[root@node4 ~]# ll -h /data/sdd1/总用量 20M-rw-r--r--. 2 root root 20M 12月 18 16:23 demo5.log//根据哈希算法将部分数据分布到前两个节点各存储一般,另一部分数据分配到另外两个节点各存储一半

分别在所有节点服务器中查看分布式复制卷存放方式

[root@node1 ~]# ll -h /data/sde1/总用量 160M-rw-r--r--. 2 root root 40M 12月 18 16:23 demo1.log-rw-r--r--. 2 root root 40M 12月 18 16:23 demo2.log-rw-r--r--. 2 root root 40M 12月 18 16:23 demo3.log-rw-r--r--. 2 root root 40M 12月 18 16:23 demo4.log[root@node2 ~]# ll -h /data/sde1/总用量 160M-rw-r--r--. 2 root root 40M 12月 18 16:23 demo1.log-rw-r--r--. 2 root root 40M 12月 18 16:23 demo2.log-rw-r--r--. 2 root root 40M 12月 18 16:23 demo3.log-rw-r--r--. 2 root root 40M 12月 18 16:23 demo4.log[root@node3 ~]# ll -h /data/sde1/总用量 40M-rw-r--r--. 2 root root 40M 12月 18 16:23 demo5.log[root@node4 ~]# ll -h /data/sde1/总用量 40M-rw-r--r--. 2 root root 40M 12月 18 16:23 demo5.log通过哈希算分布在两个节点上存储,另外两个节点分别保存副本

在node1删除卷

[root@node1 ~]# gluster volume list   //查看已有的卷die-replicadis-stripedis-volrep-volstripe-vol[root@node1 ~]# gluster volume stop rep-vol     //停止要删除的卷topping volume will make its data inaccessible. Do you want to continue? (y/n) y     //输入y确认停止volume stop: rep-vol: success[root@node1 ~]# gluster volume delete rep-vol    //执行命令删除卷Deleting volume will erase all information about the volume. Do you want to continue? (y/n) yvolume delete: rep-vol: success     //成功删除[root@node1 ~]# gluster volume list    //再次查看卷,已成功删除die-replicadis-stripedis-volstripe-vol

访问控制设置

gluster volume set dis-vol auth.reject 192.168.116.130     //设置拒绝主机访问、挂载gluster volume set dis-vol auth.allow 192.168.116.130       //设置允许主机访问、挂载
0