①保持数据平均分布在每一个Brick中
②解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈
gluster volume create dis-volume server1:/dir1 server2:/dir2 ser3:/dir3
gluster volume create stripe-volume stripe 2 transport tcp server1:dir1 server2:/dir2
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
兼顾分布式卷和条带卷的功能
主要用于大文件访问处理
创建分布式条带卷:创建名为dis-stripe的分布式条带卷,配置分布式的条带卷时,卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)
gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
兼顾分布式卷和复制卷的功能
用于需要冗余的情况
创建分布式复制卷:创建名为dis-rep的分布式条带卷,配置分布式复制卷时,卷中Brick所包含的存储服务器数必须是条袋鼠的倍数(>=2倍)
gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
//仅拒绝
gluster volume set dis-vol auth.reject 192.168.50.134
//仅允许
gluster volume set dis-vol auth.allow 192.168.50.134
操作系统 | 作用 | IP地址 |
---|---|---|
Centos7.6 | GFS-node1 | 192.168.50.133 |
Centos7.6 | GFS-node2 | 192.168.50.134 |
Centos7.6 | GFS-node3 | 192.168.50.135 |
Centos7.6 | GFS-node4 | 192.168.50.136 |
Centos7.6 | 客户机 | 192.168.50.140 |
1、分别修改四台节点的主机名
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
hostnamectl set-hostname node4
2、编辑修改hosts文件
vim /etc/hosts ## 编辑host文件
192.168.50.133 node1
192.168.50.134 node2
192.168.50.135 node3
192.168.50.136 node4
3、将修改过后的hosts文件推动到其他服务器
scp /etc/hosts [email protected]:/etc/hosts
scp /etc/hosts [email protected]:/etc/hosts
scp /etc/hosts [email protected]:/etc/hosts
4、编辑disk分区配置脚本
vim /opt/disk.sh ## 创建disk分区脚本
#!/bin/bash
#
echo "the disk exist list:"
fdisk -l | grep '磁盘 /dev/sd[a-z]'
echo "===================================="
PS3="choose which disk you want to create:"
select VAR in `ls /dev/sd* | grep -o 'sd[b-z]' | uniq` quit
do
case $VAR in
sda)
fdisk -l /dev/sda
break ;;
sd[b-z])
#create partitions
echo "n
p
w" | fdisk /dev/$VAR
#make filesystem
mkfs.xfs -i size=512 /dev/${VAR}"1" &>/dev/null
#mount the system
mkdir -p /data/${VAR}"1" &>/dev/null
echo -e "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0\n" >> /etc/fstab
mount -a &> /dev/null
break ;;
quit)
break ;;
*)
echo "wrong disk,please check again";;
esac
done
5、将配置好的脚本上传到其他三台服务器
scp /opt/disk.sh [email protected]:/opt
scp /opt/disk.sh [email protected]:/opt
scp /opt/disk.sh [email protected]:/opt
6、使用阿里云的centos7.6 yum源安装gfs(每台设备均要安装)
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo ## 下载阿里云yum源配置文件
yum clean all ## 清理yum源
yum list ## 获取yum源列表
7、安装gfs(每台设备均要安装)
yum -y install centos-release-gluster
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
8、启动glusterfs
systemctl start glusterd.service
9、同步四台节点设备的时间
ntpdate ntp1.aliyun.com
10、添加节点到存储信任池(只要在任意一台主机商添加其他节点即可,我这里是在node1上执行命令)
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
每次执行命令后如果执行后返回 peer probe: success. 说明添加成功
11、使用命令查看所有节点信息
查看所有节点:gluster peer status
[root@node1 yum.repos.d]# gluster peer status
Number of Peers: 3
Hostname: node2
Uuid: 8b37c6d4-17c6-48b3-9603-a6f4781569ca
State: Peer in Cluster (Connected)
Hostname: node4
Uuid: 025bbca7-198c-45d2-90be-037d3eaa6c28
State: Peer in Cluster (Connected)
Hostname: node3
Uuid: cc071a1e-b21b-45db-ac8f-1b3e9ea85e6e
State: Peer in Cluster (Connected)
下面进行创建分布式卷:
1、在节点上创建分布式卷
gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force
执行后返回:volume create: dis-vol: success: please start the volume to access data
2、创建成功后查看一下创建卷的信息
gluster volume info dis-vol ## 查看分布式卷信息
Volume Name: dis-vol
Type: Distribute
Volume ID: 761e01cc-e9ef-464c-a16d-ce989d954786
Status: Created ## 目前状态还不能使用
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdb1
Brick2: node2:/data/sdb1
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
nfs.disable: on
3、启动分布式卷
gluster volume start dis-vol ## 启动分布式卷
执行后返回:volume start: dis-vol: success
Volume Name: dis-vol
Type: Distribute
Volume ID: 761e01cc-e9ef-464c-a16d-ce989d954786
Status: Started ## 现在就已经启动好了
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdb1
Brick2: node2:/data/sdb1
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
nfs.disable: on
4、如果想要停止或删除卷,则可以执行以下命令
停止卷:gluster volume stop dis-vol
删除卷:gluster volume delete dis-vol (先停止再删除)
分布式卷创建结果验证:
在客户机创建挂载点目录:mkdir -p /test/dis
进行临时挂载:mount.glusterfs node2:dis-vol /test/dis/
生成测试文件:
dd if=/dev/zero of=/demo1.log bs=1M count=40
dd if=/dev/zero of=/demo2.log bs=1M count=40
dd if=/dev/zero of=/demo3.log bs=1M count=40
dd if=/dev/zero of=/demo4.log bs=1M count=40
dd if=/dev/zero of=/demo5.log bs=1M count=40
将测试文件拷贝到挂载目录中:cp demo* /test/dis/
验证:
[root@node1 sdb1]# ll /data/sdb1/
总用量 163840
-rw-r--r--. 2 root root 41943040 9月 13 21:57 demo1.log
-rw-r--r--. 2 root root 41943040 9月 13 21:57 demo2.log
-rw-r--r--. 2 root root 41943040 9月 13 21:57 demo3.log
-rw-r--r--. 2 root root 41943040 9月 13 21:57 demo4.log
[root@node2 yum.repos.d]# ls -lh /data/sdb1/
总用量 40M
-rw-r--r--. 2 root root 40M 9月 13 21:57 demo5.log
下面进行创建复制卷:
1、在节点三上进行创建复制卷
gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force
2、启动复制卷
gluster volume start rep-vol
3、在客户端上挂载
mkdir /test/rep-vol ## 创建挂载点目录
mount.glusterfs node2:rep-vol /test/rep-vol/ ##挂载复制卷
cp demo* /test/rep-vol/ ## 拷贝测试文件去复制卷中
复制卷结果验证:
[root@node3 sdb1]# ll /data/sdb1/
总用量 204800
-rw-r--r--. 2 root root 41943040 9月 13 22:42 demo1.log
-rw-r--r--. 2 root root 41943040 9月 13 22:42 demo2.log
-rw-r--r--. 2 root root 41943040 9月 13 22:42 demo3.log
-rw-r--r--. 2 root root 41943040 9月 13 22:42 demo4.log
-rw-r--r--. 2 root root 41943040 9月 13 22:42 demo5.log
[root@node4 yum.repos.d]# ll /data/sdb1/
总用量 204800
-rw-r--r--. 2 root root 41943040 9月 13 22:42 demo1.log
-rw-r--r--. 2 root root 41943040 9月 13 22:42 demo2.log
-rw-r--r--. 2 root root 41943040 9月 13 22:42 demo3.log
-rw-r--r--. 2 root root 41943040 9月 13 22:42 demo4.log
-rw-r--r--. 2 root root 41943040 9月 13 22:42 demo5.log
下面进行创建分布式复制卷:
1、创建分布式复制卷
gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
2、开启复制卷
gluster volume start dis-rep
3、客户端挂载复制卷
mount.glusterfs node1:dis-rep /test/rep-vol/
复制卷结果验证:
1、拷贝测试文件到客户端挂载目录,在节点上查看存储情况
cp demo* /test/dis-rep/
[root@node1 data]# ls -lh /data/sde1/
总用量 160M
-rw-r--r--. 2 root root 40M 9月 13 23:02 demo1.log
-rw-r--r--. 2 root root 40M 9月 13 23:02 demo2.log
-rw-r--r--. 2 root root 40M 9月 13 23:02 demo3.log
-rw-r--r--. 2 root root 40M 9月 13 23:02 demo4.log
[root@node2 yum.repos.d]# ls -lh /data/sde1/
总用量 160M
-rw-r--r--. 2 root root 40M 9月 13 23:02 demo1.log
-rw-r--r--. 2 root root 40M 9月 13 23:02 demo2.log
-rw-r--r--. 2 root root 40M 9月 13 23:02 demo3.log
-rw-r--r--. 2 root root 40M 9月 13 23:02 demo4.log
[root@node3 sdb1]# ls -lh /data/sde1/
总用量 40M
-rw-r--r--. 2 root root 40M 9月 13 23:02 demo5.log
[root@node4 yum.repos.d]# ls -lh /data/sde1/
总用量 40M
-rw-r--r--. 2 root root 40M 9月 13 23:02 demo5.log
2 demo4.log
[root@node2 yum.repos.d]# ls -lh /data/sde1/
总用量 160M
-rw-r--r--. 2 root root 40M 9月 13 23:02 demo1.log
-rw-r--r--. 2 root root 40M 9月 13 23:02 demo2.log
-rw-r--r--. 2 root root 40M 9月 13 23:02 demo3.log
-rw-r--r--. 2 root root 40M 9月 13 23:02 demo4.log
[root@node3 sdb1]# ls -lh /data/sde1/
总用量 40M
-rw-r--r--. 2 root root 40M 9月 13 23:02 demo5.log
[root@node4 yum.repos.d]# ls -lh /data/sde1/
总用量 40M
-rw-r--r--. 2 root root 40M 9月 13 23:02 demo5.log