对用户建立文件,存入,读出,修改,转储,控制文件存取
除了根文件系统外,需要先挂载到挂载点后,才可被访问 挂载点即分区设备文件关联的某个目录文件
多种功能模块组合在一起,组成堆栈架构
RDMA:负责数据传输,数据传输协议
解决传输中客户端与服务器端数据处理的延迟
posix:可移植系统接口,解决不同操作系统见的移植性
用户:安装客户端,安装fuse,挂载到服务端,把文件存储进去
1.首先系统调用给vfs(虚拟接口),再将数据给fuse(伪文件系统)连接客户端和服务端
2.再数据保存在虚拟的文件中
3.通过客户端传递数据给服务端
4.服务端使用VFS接口,保存在实际文件系统中
gluster volume create dis-volume server1:/dir1 server2:/dir2
大小拆分,轮询存储在每个节点 不具备冗余,
gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2
冗余备份,多个节点存储空间不一致,按木桶效应最小节点存取 至少两个服务器和更多服务器
创建名为rep-volume的复制卷,文件将同时存储两个副本,分别在Server1:/dir1和Server2:/dir2两个Brick中
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
分布式,条带卷功能 大文件访问处理,至少4台服务器
创建了一个名为dis-stripe的分布式条带卷,配置分布式的条带卷时,卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
分布式,复制卷功能 兼具分布式卷和复制卷的特点
创建了一个名为dis-rep的分布式条带卷,配置分布式的复制卷时,卷中Brick所包含的存储服务器数必须是复制数的倍数(>=2倍)
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
类似RAID 10,同时具有条带卷和复制卷的特点
三种基本卷的复合卷通常用于类Map Reduce应用
gluster volume list
gluster volume info
gluster volume status
gluster volume stop dis-stripe
注意:删除卷时,需要先停止卷,且信任池中不能有主机处于宕机状态,否则删除不成功
gluster volume delete dis-stripe
仅拒绝
gluster volume set dis-rep auth.allow 192.168.133.100
仅允许
gluster volume set dis-rep auth.allow 192.168.133.* #设置192.168.133.0网段的所有IP地址都能访问dis-rep卷(分布式复制卷)
集群环境准备
节点名称 | ip地址 | 磁盘 | 挂载点 |
---|---|---|---|
Node1节点 | 192.168.133.10 | /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 | /data/sdb1 /data/sdc1 /data/sdd1/data/sde1 |
Node2节点 | 192.168.133.20 | /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 | /data/sdb1 /data/sdc1 /data/sdd1/data/sde1 |
Node3节点 | 192.168.133.30 | /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 | /data/sdb1 /data/sdc1 /data/sdd1/data/sde1 |
Node4节点 | 192.168.133.40 | /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 | /data/sdb1 /data/sdc1 /data/sdd1/data/sde1 |
客户端 | 192.168.133.50 |
关闭防火墙:
systemctl stop firewalld setenforce 0
Node1节点:192.168.133.10
Node2节点:192.168.133.20
Node3节点:192.168.133.30
Node4节点:192.168.133.40
这里使用node1作为示范,用脚本对磁盘进行操作
vim fdisk.sh #!/bin/bash NEWDEV=`ls /dev/sd* | grep -o 'sd[b-z]' | uniq` for VAR in $NEWDEV do echo -e "n\np\n\n\n\nw\n" | fdisk /dev/$VAR &> /dev/null mkfs.xfs /dev/${VAR}"1" &> /dev/null mkdir -p /data/${VAR}"1" &> /dev/null echo "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0" >> /etc/fstab done mount -a &> /dev/null chmod +x fdisk.sh ./fdisk.sh
Node1节点:192.168.133.10
Node2节点:192.168.133.20
Node3节点:192.168.133.30
Node4节点:192.168.133.40
使用node1作为示范
echo "192.168.133.10 node1" >> /etc/hosts echo "192.168.133.20 node2" >> /etc/hosts echo "192.168.133.30 node3" >> /etc/hosts echo "192.168.133.40 node4" >> /etc/hosts
四个节点相同操作:
Node1节点:192.168.133.10
Node2节点:192.168.133.20
Node3节点:192.168.133.30
Node4节点:192.168.133.40
使用node1作为示范
#将软件包放入opt目录下 cd /opt unzip gfsrepo.zip cd /etc/yum.repos.d/ mkdir repos.bak mv * repos.bak/ vim glfs.repo [glfs] name=glfs baseurl=file:///opt/gfsrepo gpgcheck=0 enabled=1 yum clean all && yum makecache yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma systemctl start glusterd.service systemctl enable glusterd.service systemctl status glusterd.service
这里仅需在一个节点上操作
Node1节点:192.168.133.10
添加节点到存储信任池中
gluster peer probe node1 gluster peer probe node2 gluster peer probe node3 gluster peer probe node4 #查看群集状态(可以在每个节点上使用) gluster peer status
创建卷只需要在一台节点上创建即可
根据以下规划创建卷:
卷名称 | 卷类型 | Brick |
---|---|---|
dis-volume | 分布式卷 | node1(/data/sdb1)、node2(/data/sdb1) |
stripe-volume | 条带卷 | node1(/data/sdc1)、node2(/data/sdc1) |
rep-volume | 复制卷 | node3(/data/sdb1)、node4(/data/sdb1) |
dis-stripe | 分布式条带卷 | node1(/data/sdd1)、node2(/data/sdd1)、node3(/data/sdd1)、node4(/data/sdd1) |
dis-rep | 分布式复制卷 | node1(/data/sde1)、node2(/data/sde1)、node3(/data/sde1)、node4(/data/sde1) |
创建分布式卷,没有指定类型,默认创建的是分布式卷
创建分布式卷:
gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force
查看卷列表
gluster volume list
启动新建分布式卷
gluster volume start dis-volume
查看创建分布式卷信息
gluster volume info dis-volume
指定类型为 stripe,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是条带卷
创建条带卷
gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
启动新建条带卷
gluster volume start stripe-volume
查看创建条带卷信息
gluster volume info stripe-volume
指定类型为 replica,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是复制卷
创建复制卷
gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force
启动新建复制卷
gluster volume start rep-volume
查看创建复制卷信息
gluster volume info rep-volume
指定类型为 stripe,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式条带卷
创建分布式条带卷
gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
启动新建分布式条带卷
gluster volume start dis-stripe
查看创建分布式条带卷信息
gluster volume info dis-stripe
指定类型为 replica,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式复制卷
创建分布式复制卷
gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
启动新建分布式复制卷
gluster volume start dis-rep
查看创建分布式复制卷信息
gluster volume info dis-rep
gluster volume list
部署Gluster客户端(192.168.133.50)
cd /opt unzip gfsrepo.zip cd /etc/yum.repos.d/ mkdir repos.bak mv * repos.bak/ vim glfs.repo [glfs] name=glfs baseurl=file:///opt/gfsrepo gpgcheck=0 enabled=1 yum clean all && yum makecache yum -y install glusterfs glusterfs-fuse
echo "192.168.133.10 node1" >> /etc/hosts echo "192.168.133.20 node2" >> /etc/hosts echo "192.168.133.30 node3" >> /etc/hosts echo "192.168.133.40 node4" >> /etc/hosts
mkdir -p /test/{dis,stripe,rep,dis_stripe,dis_rep}
mount.glusterfs node1:dis-volume /test/dis mount.glusterfs node1:stripe-volume /test/stripe mount.glusterfs node1:rep-volume /test/rep mount.glusterfs node1:dis-stripe /test/dis_stripe mount.glusterfs node1:dis-rep /test/dis_rep df -h
企业中最好用永久挂载,以防重启或服务器宕机:
vim /etc/fstab node1:dis-volume /test/dis glusterfs defaults,_netdev 0 0 node1:stripe-volume /test/stripe glusterfs defaults,_netdev 0 0 node1:rep-volume /test/rep glusterfs defaults,_netdev 0 0 node1:dis-stripe /test/dis_stripe glusterfs defaults,_netdev 0 0 node1:dis-rep /test/dis_rep glusterfs defaults,_netdev 0 0 mount -a
部署Gluster客户端(192.168.133.50)
向卷中写入文件
cd /opt dd if=/dev/zero of=/opt/demo1.log bs=1M count=40 dd if=/dev/zero of=/opt/demo2.log bs=1M count=40 dd if=/dev/zero of=/opt/demo3.log bs=1M count=40 dd if=/dev/zero of=/opt/demo4.log bs=1M count=40 dd if=/dev/zero of=/opt/demo5.log bs=1M count=40 ls -lh /opt
cp demo* /test/dis cp demo* /test/stripe/ cp demo* /test/rep/ cp demo* /test/dis_stripe/ cp demo* /test/dis_rep/
ll -h /data/sdb1
ll -h /data/sdb1
现象:分布式只会将demo文件分开存储(5个文件不在同一磁盘分区上),不会将数据分片和备份
ll -h /data/sdc1
ll -h /data/sdc1
现象:条带卷会将每个demo文件中的数据分片存储(两个分区各有20M的文件),没有备份
ll -h /data/sdb1
ll -h /data/sdb1
现象:复制卷会将每个文件放入卷中的磁盘分区中(两分区的文件一样)
ll -h /data/sdd1
ll -h /data/sdd1
ll -h /data/sdd1
ll -h /data/sdd1
现象:分布式条带卷中,带有分布式和条带卷的特点,即将数据分片,又将文件分开存储,没有备份
ll -h /data/sde1
ll -h /data/sde1
ll -h /data/sde1
ll -h /data/sde1
现象:分布式复制卷中,带有分布式和复制卷的特点,即将文件分开存储,又复制一遍文件(备份)
systemctl stop glusterd.service
ls -lh /test/dis
ls -lh /test/stripe/
ls -lh /test/dis_stripe/
ls -lh /test/dis_rep/
ls -lh /test/rep/
分布式卷:文件分开存,没有拆分大小,效率不提升文件分布在不同服务器,不具备冗余
条带卷:大小拆分,轮询存储在每个节点不具备冗余,
复制卷:冗余备份,多个节点存储空间不一致,按木桶效应最小节点存取
至少两个服务器和更多服务器
分布式条带:分布式,条带卷功能
大文件访问处理,至少4太服务器
分布式复制:分布式,复制卷功能
GFS原理:
1.首先系统调用给vfs(虚拟接口),再将数据给fuse(伪文件系统)连接客户端和服务端
2.再数据保存在虚拟的文件中
3.通过客户端传递数据给服务端
4.服务端使用VFS接口,保存在实际文件系统中