GFS存储服务
GlusterFS概述开源的分布式文件系统由存储服务器、客户端以及NFS/Samba存储网关组成无元数据服务器特点扩展性和高性能高可用性全局统一命名空间弹性卷管理基于标准协议术语:brick、volume、fuse、vfs、glusterd工作原理弹性HASH算法通过HASH算法得到32位整数划分N个连续的子空间,每个空间对应一个Brck弹性HASH算法优点保证数据平均分布在每一个Brick中解决
GlusterFS概述
开源的分布式文件系统
由存储服务器、客户端以及NFS/Samba存储网关组成
无元数据服务器
特点
扩展性和高性能
高可用性
全局统一命名空间
弹性卷管理
基于标准协议
术语:brick、volume、fuse、vfs、glusterd
工作原理
弹性HASH算法
通过HASH算法得到32位整数
划分N个连续的子空间,每个空间对应一个Brck
弹性HASH算法优点
保证数据平均分布在每一个Brick中
解决了对元数据服务的依赖,进而解决了单点故障以及访问瓶颈
卷的类型
分布式卷
没有对文件进行分块处理
通过扩展文件属性保存HASH值
支持底层文件系统EXT3、4、ZFS、XFS等
特点
文件分布在不同服务器不具备冗余性
更容易和廉价地扩展卷的大小
单点故障会造成数据丢失
依赖底层数据保护
gluster volume create dis-volume server1:/dir1 server2:/dir2…
条带卷
根据偏移量将文件分成N块(N个条带节点),轮询的方式存储在每一个Brick Server节点
存储大文件时,性能尤为突出
不具备冗余性,类似Raid0
特点
数据被分割成更小块分布到服务器群中不同条带区
分布减少了负载更小的文件加速了存取速度
没有数据冗余
gluster volume create stripe-volume stripe 2 server1:/dir1 server2:/dir2…
复制卷
同一个文件保存一份或多分副本
因为要保存副本,所以磁盘利用率较低
若多个节点上存储空间不一致,将按照木桶效应取最低节点容量作为该卷的总容量
特点
卷中所有的服务器均保存一个完整的副本
卷的副本数量可由客户创建时决定
至少有两块服务器或更多
具备冗余性
gluster volume create rep-volume replica 2 server1:/dir1 server2:/dir2…
分布式条带卷
兼顾分布式和条带功能
主要用于大文件访问处理
至少4台服务器
gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1 server2:/dir2…
分布式复制卷
兼顾分布式卷和复制卷功能
用于需要冗余的情况
gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2…
部署实验
准备环境、关闭防火墙selinux、配置hosts文件、安装软件、启动GFS、添加节点、查看集群
部署客户端
安装客户端软件、创建挂载目录、修改hosts文件、挂载gluster文件系统、修改fstab配置文件
首先在4台虚拟机中先添加4块硬盘然后全部格式化分区之后修改hosts
首先setenforce 0和stop firewalld关闭防护
[root@node1 ~]# vi /etc/hosts
20.0.0.25 node1
20.0.0.26 node2
20.0.0.27 node3
20.0.0.28 node4
然后设置共享目录右键属性共享第二个里面点击下拉有个everyone然后共享成功
还有一个要win+R打开运行控制台然后输入secpol.msc修改本地策略把Guest删除
还是不行就打开网络共享中心把所有的都设置为共享允许然后密码访问选择没有
设置对应主机名
[root@localhost ~]# hostnamectl set-hostname +主机名
做开局设置关闭防火墙关底层防护
stopfirewalld stenforce 0
内核三种模式
enforcing - 强制模式,代表selinux在运行中,且已经开始显示domain/type之间的验证关系
permissive - 宽容模式,代表selninux在运行中,不过不会限制domain/type之间的验证关系,即使验证不正确,进程仍可对文件进行操作,不过如果验证不正确会发出警告
disabled - 关闭模式,selinux并没有实际运行
做映射
[root@node1 ~]#vi /etc/hosts ###做映射
20.0.0.40 node1
20.0.0.41 node2
20.0.0.42 node3
20.0.0.43 node4
制作一个一件格式化的脚本
#!/bin/bash
echo "the disks exist list:"
fdisk -l |grep '磁盘 /dev/sd[a-z]'
echo "=========================================="
PS3="chose 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 systeml
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
wq保存退出
然后chmod+x给权限./运行脚本
1) sdb
2) sdc
3) sdd
4) sde
5) quit
选择磁盘自动格式化
然后df -Th查看,会多出4个磁盘
/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
每一个主机都要做
之后就是虚拟机挂载共享目录
[root@localhost ~]# smbclient -L //192.168.100.2/ ##查看一下共享目录
Enter SAMBA\root's password: ##无密码直接回车
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk 远程管理
C$ Disk 默认共享
D$ Disk 默认共享
E$ Disk 默认共享
F$ Disk 默认共享
chen Disk
IPC$ IPC 远程 IPC
Users Disk
Reconnecting with SMB1 for workgroup listing.
Connection to 192.168.100.33 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Failed to connect with SMB1 -- no workgroup availabl
然后挂载目录
[root@node1 ~]# mkdir /chen ###创建挂载目录
[root@node1 ~]# mount.cifs //192.168.10.2/gfsrepo /chen ###挂载
之后就是布置yum源
root@node1 chen]# cd /etc/yum.repos.d/ ###进入到etc/yum.repos.d/ 目录里
[root@node1 yum.repos.d]# mkdir bac ###创建一个bac目录
[root@node1 yum.repos.d]# mv CentOs-* bac/ ###把CentOs放到backup目录里
[root@node1 yum.repos.d]# vim glfs.repo
[GLFS]
name=glfs
baseurl=file:///chen ###本地源 http://mirror.centos.org/centos/$releasever/storage/$basearch/gluster-3.12/ ###现网源
gpgcheck=0
enabled=1
[root@node1 yum.repos.d]# yum clean all ###清除缓存
[root@node1 yum.repos.d]# yum list ###重新加载
上面的步骤每一台都需要操作
————————————————————
服务器安装glusterfs
[root@node1 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
[root@node1 yum.repos.d]# systemctl start glusterd.service ###启动服务
[root@node1 yum.repos.d]# systemctl enable glusterd ###开机自启
[root@node1 yum.repos.d]# systemctl status glusterd ###查看状态
[root@node1 yum.repos.d]# ntpdate ntp1.aliyun.com ##时间同步
之后添加信任存储只需要在一台上面做就行
[root@node1 yum.repos.d]# gluster peer probe node3
peer probe: success.
[root@node1 yum.repos.d]# gluster peer probe node4
peer probe: success.
[root@node1 yum.repos.d]# gluster peer probe node2
peer probe: success.
[root@node1 yum.repos.d]# gluster peer status ##查看池子状态
Number of Peers: 3
分布式卷
[root@node4 yum.repos.d]# gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force ###创建分布式卷,卷名叫dis-vol,用了node1:/data/sdb1和node2:/data/sdb1
[root@node4 yum.repos.d]# gluster volume info dis-vol ###查看详细信息和状态
Volume Name: dis-vol ###名称
Type: Distribute ###分布式卷的类型
Volume ID: 5b75e4bd-d830-4e3f-9714-456261c276be ###id,独一无二的
Status: Created ###Created(创建)状态不能使用
Snapshot Count: 0
Xlator 1: BD
Capability 1: thin
Capability 2: offload_copy
Capability 3: offload_snapshot
Number of Bricks: 2 ###两个块组成
Transport-type: tcp ###tcp协议
Bricks:
Brick1: node1:/data/sdb1 ###node1的sdb1
Brick1 VG:
Brick2: node2:/data/sdb1 ###node2的sbd1
Brick2 VG:
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node4 yum.repos.d]# gluster volume start dis-vol ###开启
[root@node4 yum.repos.d]# gluster volume info dis-vol ###再用这条查看状态就是Started12
条带卷
[root@node4 yum.repos.d]# gluster volume create stripe-vol stripe 2 node1:/data/sdc1 node2:/data/sdc1 force ##创建条带卷
[root@node4 yum.repos.d]# gluster volume start stripe-vol ###开启条带卷
复制卷
[root@node4 yum.repos.d]# gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force
yum.repos.d]# gluster volume start rep-vol ###开启
分布式条带卷
[root@node4 yum.repos.d]# gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
[root@node4 yum.repos.d]# gluster volume start dis-stripe ###开启
分布式复制卷
[root@node4 yum.repos.d]# gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
[root@node4 yum.repos.d]# gluster volume start dis-rep ###开启
查看状态
[root@node4 yum.repos.d]# gluster volume list
dis-rep
dis-stripe
dis-vol
rep-vol
stripe-vol
之后在客户端上面开始挂盘了
[root@client yum.repos.d]# yum -y install glusterfs glusterfs-fuse
创建五个挂载目录,并且挂载
ot@client yum.repos.d]# mkdir -p /test/dis ### 挂载分布式卷
[root@client yum.repos.d]# mount.glusterfs node1:dis-vol /test/dis/
[root@client yum.repos.d]# mkdir -p /test/stripe
[root@client yum.repos.d]# mount.glusterfs node1:stripe-vol /test/stripe/ ### 挂载条带卷
[root@client yum.repos.d]# mkdir -p /test/rep
[root@client yum.repos.d]# mount.glusterfs node1:rep-vol /test/rep/ ### 挂载复制卷
[root@client yum.repos.d]# mkdir -p /test/dis-stripe
[root@client yum.repos.d]# mount.glusterfs node1:dis-stripe /test/dis-stripe/ ### 挂载分布条带卷
[root@client yum.repos.d]# mkdir -p /test/dis-rep
[root@client yum.repos.d]# mount.glusterfs node1:dis-rep /test/dis-rep/ ###挂载分布式复制
[root@master ~]# df -Th ##挂载情况
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 291G 4.2G 287G 2% /
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sde1 xfs 20G 33M 20G 1% /data/sde1
/dev/sdd1 xfs 20G 33M 20G 1% /data/sdd1
/dev/sdc1 xfs 20G 33M 20G 1% /data/sdc1
/dev/sdb1 xfs 20G 33M 20G 1% /data/sdb1
/dev/sda1 xfs 1014M 179M 836M 18% /boot
tmpfs tmpfs 378M 0 378M 0% /run/user/0
tmpfs tmpfs 378M 12K 378M 1% /run/user/42
//192.168.100.2/chen cifs 477G 395M 477G 1% /root/chen
node1:dis-vol fuse.glusterfs 40G 265M 40G 1% /test/dis
node1:stripe-vol fuse.glusterfs 40G 265M 40G 1% /test/stripe
node1:rep-vol fuse.glusterfs 20G 233M 20G 2% /test/rep
node1:dis-stripe fuse.glusterfs 80G 330M 80G 1% /test/dis-stripe
node1:dis-rep fuse.glusterfs 40G 265M 40G 1% /test/dis-rep
就完成了
查看卷命令
[root@node1 yum.repos.d]# ls -h +磁盘
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)