GFS分布式文件系统
文章目录一、GlusterFS概述1.1 GlusterFS简介1.2 GlusterFS特点1.3 GlusterFS术语1.4 模块化堆栈式架构1.5 GlusterFS工作原理1.6 GlusterFS的卷类型二:GFS平台部署2.1:环境准备2.2:GFS平台部署2.3 GFS各类型卷部署一、GlusterFS概述1.1 GlusterFS简介●Gluster File System,开源
文章目录
一、GlusterFS概述
1.1 GlusterFS简介
●Gluster File System,开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端.在传统的解决 方案中Glusterfs能够灵活的结合物理的,虚拟的和云资源去体现高可用和企业级的性能存储
●由存储服务器(Brick Server)、客户端以及NFS/Samba 存储网关组成
●无元数据服务器
1.2 GlusterFS特点
●扩展性和高性能
●高可用性
●全局统一命名空间
●弹性卷管理
●基于标准协议
1.3 GlusterFS术语
●Brick:GFS中的存储单元,通过是一个受信存储池中的服务器的一个导出目录。可以通过主机名和目录名来标识,如’SERVER:EXPORT’
●Volume:卷
●FUSE:内核文件系统,Filesystem Userspace是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码。通过在用户空间运行文件系统的代码通过FUSE代码与内核进行桥接
●VFS:虚拟文件系统
●Glusterd:Gluster management daemon,要在trusted storage pool中所有的服务器上运行
1.4 模块化堆栈式架构
●模块化、堆栈式的架构
●通过对模块的组合,实现复杂的功能
1.5 GlusterFS工作原理
●客户端或应用程序通过GlusterFS的挂载点访问数据
●linux系统内核通过VFS API收到请求并处理
●VFS将数据递交给FUSE内核文件系统, fuse文件系统则是将数据通过/dev/fuse设备文件递交给了GlusterFS client端
●GlusterFS client 收到数据后,client根据配置文件的配置对数据进行处理
●通过网络将数据传递至远端的GlusterFS Server,并且将数据写入到服务器存储设备上
1.6 GlusterFS的卷类型
●分布式卷
●条带卷
●复制卷
●分布式条带卷
●分布式复制卷
●条带复制卷
●分布式条带复制卷
分布式卷
●没有对文件进行分块处理
●通过扩展文件属性保存HASH值
●支持的底层文件系统有ext3、ext4、ZFS、XFS等
分布式卷的特点
●文件分布在不同的服务器,不具备冗余性
●更容易和廉价地扩展卷的大小
●单点故障会造成数据丢失
●依赖底层的数据保护
创建分布式卷
gluster volume create dis-volume server1:/dir1 server2:/dir2 server3:/dir3
条带卷
●根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个Brick Server节点
●存储大文件时,性能尤为突出
●不具备冗余性,类似Raid0
●GlusterFS6.1版本之后已弃用stripe模式
条带卷的特点
●数据被分割成更小块分布到块服务器群中的不同条带区
●分布减少了负载且更小的文件加速了存取的速度,但是不具备安全性
●没有数据冗余
创建条带卷
gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3
复制卷
●同一文件保存一份或多分副本
●复制模式因为要保存副本,所以磁盘利用率较低
●若多个节点上的存储空间不一致,将按照木桶效应取最低节点的容量作为该卷的总容量
复制卷特点
●卷中所有的服务器均保存一个完整的副本
●卷的副本数量可由客户创建的时候决定
●至少由两个块服务器或更多服务器
●具备冗余性
创建复制卷
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
分布式条带卷
●兼顾分布式卷和条带卷的功能
●主要用于大文件访问处理
●至少最少需要 4 台服务器
创建分布式条带卷
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
分布式复制卷
●兼顾分布式卷和复制卷的功能
●用于需要冗余的情况下
创建分布式复制卷
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
二:GFS平台部署
2.1:环境准备
VMware软件
一台centos7虚拟机,IP地址为:192.168.100.100,主机名为:node1,添加4块20G磁盘
一台centos7虚拟机,IP地址为:192.168.100.10,主机名为:node2,添加4块20G磁盘
一台centos7虚拟机,IP地址为:192.168.100.8,主机名为:node3,添加3块20G磁盘
一台centos7虚拟机,IP地址为:192.168.100.6,主机名为:node4,添加4块20G磁盘
一台centos7虚拟机,IP地址为:192.168.100.66,主机名为:client,当做测试机使用
2.2:GFS平台部署
配置hosts文件,所有主机均进行配置,这里我只演示节点1
[root@node1 ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4G
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.100 node1
192.168.100.10 node2
192.168.100.8 node3
192.168.100.6 node4
[root@node1 ~]# scp /etc/hosts root@192.168.100.10:/etc/hosts
The authenticity of host '192.168.100.10 (192.168.100.10)' can't be established.
ECDSA key fingerprint is SHA256:RV00f7MSkqe7SK0tl8MNodKY5wZbjUL9379oSg2hm34.
ECDSA key fingerprint is MD5:d2:6d:6a:6a:53:bd:e7:f0:43:fd:8b:f9:8c:f3:a3:4b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.100.10' (ECDSA) to the list of known hosts.
root@192.168.100.10's password:
hosts 100% 242 6.3KB/s
编写脚本进行格式化磁盘
[root@node1 ~]# cd /opt/
[root@node1 opt]# vim disk.sh
#! /bin/bash
echo "the disks exist list:"
##grep出系统所带磁盘
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)
##本地磁盘就退出case语句
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
[root@node1 opt]# chmod +x disk.sh
[root@node1 opt]# scp disk.sh root@192.168.100.10:/opt
root@192.168.100.10's password:
disk.sh 100% 1020 547.6KB/s 00:00
[root@node1 opt]# ./disk.sh '执行脚本格式化新安装的4块硬盘'
将原本的源打包到其它文件夹,使用阿里云源安装相关软件包
[root@node1 gfsrepo]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@node1 yum.repos.d]# mkdir bak
[root@node1 yum.repos.d]# mv CentOS-* bak/
[root@node1 yum.repos.d]# ls
bak
[root@node1 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@node1 yum.repos.d]# yum clean all
[root@node1 yum.repos.d]# yum list
[root@node1 yum.repos.d]# yum install centos-release-gluster -y
[root@node1 yum.repos.d]# yum install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma -y
[root@node1 yum.repos.d]# systemctl start glusterd.service '开启glusterd服务'
[root@node1 yum.repos.d]# ntpdate ntp1.aliyun.com '时间同步'
或者
[root@node1 opt]# yum -y install centos-release-gluster
[root@node1 yum.repos.d]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
[root@web2 opt]# systemctl start glusterd ##启动服务
添加入存储信任池只要在一台主机上添加其它节点即可
[root@node1 yum.repos.d]# gluster peer probe node2
peer probe: success.
[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 status '查看所有节点'
Number of Peers: 3
Hostname: node2
Uuid: 1491a7f5-9182-4197-8308-32f827ca143a
State: Peer in Cluster (Connected)
Hostname: node3
Uuid: ad89887d-2902-4d8d-a902-ff8cb073e3c3
State: Peer in Cluster (Connected)
Hostname: node4
Uuid: 1905c643-baaa-42a3-a8cf-2878e8d24dd3
State: Peer in Cluster (Connected)
2.3:GFS各类型卷部署
分布式卷创建
[root@node1 yum.repos.d]# gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force
volume create: dis-vol: success: please start the volume to access data
[root@node1 yum.repos.d]# gluster volume start dis-vol
volume start: dis-vol: success
复制卷创建
[root@node1 /]# gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force
volume create: rep-vol: success: please start the volume to access data
[root@node1 /]# gluster volume start rep-vol
volume start: rep-vol: success
分布式复制卷创建
[root@node1 /]# gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
volume create: dis-rep: success: please start the volume to access data
[root@node1 /]# gluster volume start dis-rep
volume start: dis-rep: success
2.4:client客户端部署
配置阿里云源,hosts文件
[root@client ~]# cd /etc/yum.repos.d/
[root@client yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@client yum.repos.d]# mkdir bak
[root@client yum.repos.d]# mv CentOS-* bak/
[root@client yum.repos.d]# ls
bak
[root@client yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@client yum.repos.d]# yum clean all
[root@client yum.repos.d]# yum list
[root@client yum.repos.d]# yum install centos-release-gluster -y
[root@client yum.repos.d]# yum -y install glusterfs glusterfs-fuse
[root@client yum.repos.d]# vim /etc/hosts
192.168.100.100 node1
192.168.100.10 node2
192.168.100.8 node3
192.168.100.6 node4
创建挂载点目录,挂载Gluster文件系统
[root@client yum.repos.d]# dd if=/dev/zero of=/demo1.log bs=1M count=40
[root@client yum.repos.d]# dd if=/dev/zero of=/demo2.log bs=1M count=40
[root@client yum.repos.d]# dd if=/dev/zero of=/demo3.log bs=1M count=40
[root@client yum.repos.d]# dd if=/dev/zero of=/demo4.log bs=1M count=40
[root@client yum.repos.d]# dd if=/dev/zero of=/demo5.log bs=1M count=40
[root@client /]# ll | grep demo
-rw-r--r--. 1 root root 41943040 9月 13 22:15 demo1.log
-rw-r--r--. 1 root root 41943040 9月 13 22:15 demo2.log
-rw-r--r--. 1 root root 41943040 9月 13 22:15 demo3.log
-rw-r--r--. 1 root root 41943040 9月 13 22:16 demo4.log
-rw-r--r--. 1 root root 41943040 9月 13 22:16 demo5.log
将测试文件复制到三个卷中
[root@client /]# cp /demo* /text/dis-vol/
[root@client /]# cp /demo* /text/rep-vol/
[root@client /]# cp /demo* /text/dis-rep/
客户端查看3个卷中文件
[root@client text]# ls
dis-rep dis-vol rep-vol
[root@client text]# ll dis-rep/
总用量 204800
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo1.log
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo2.log
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo3.log
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo4.log
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo5.log
[root@client text]# ll dis-vol/
总用量 204800
-rw-r--r--. 1 root root 41943040 9月 13 22:17 demo1.log
-rw-r--r--. 1 root root 41943040 9月 13 22:17 demo2.log
-rw-r--r--. 1 root root 41943040 9月 13 22:17 demo3.log
-rw-r--r--. 1 root root 41943040 9月 13 22:17 demo4.log
-rw-r--r--. 1 root root 41943040 9月 13 22:17 demo5.log
[root@client text]# ll rep-vol/
总用量 204800
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo1.log
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo2.log
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo3.log
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo4.log
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo5.log
2.5:验证存储形式
分布式验证
[root@node1 ~]# cd /data/sdb1/
[root@node1 sdb1]# ls '节点1'
demo1.log demo2.log demo3.log demo4.log
[root@node2 yum.repos.d]# cd /data/sdb1/
[root@node2 sdb1]# ls '节点2'
demo5.log
复制卷验证
[root@node3 yum.repos.d]# cd /data/sdb1/
[root@node3 sdb1]# ls '节点3'
demo1.log demo2.log demo3.log demo4.log demo5.log
[root@node4 yum.repos.d]# cd /data/sdb1/
[root@node4 sdb1]# ls '节点4'
demo1.log demo2.log demo3.log demo4.log demo5.log
分布式复制卷验证
[root@node1 sdb1]# cd /data/sde1/
[root@node1 sde1]# ls '节点1'
demo1.log demo2.log demo3.log demo4.log
[root@node2 sdb1]# cd /data/sde1/
[root@node2 sde1]# ls '节点2'
demo1.log demo2.log demo3.log demo4.log
[root@node3 sdb1]# cd /data/sde1/
[root@node3 sde1]# ls '节点3'
demo5.log
[root@node4 sdb1]# cd /data/sde1/
[root@node4 sde1]# ls '节点4'
demo5.log
2.6:故障测试
关闭node2服务器观察分布卷及分布式复制卷结果
[root@client text]# ll dis-rep/ '分布式复制卷正常访问'
总用量 204800
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo1.log
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo2.log
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo3.log
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo4.log
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo5.log
[root@client text]# ll dis-vol/ '分布卷缺少demo5.log文件'
总用量 163840
-rw-r--r--. 1 root root 41943040 9月 13 22:17 demo1.log
-rw-r--r--. 1 root root 41943040 9月 13 22:17 demo2.log
-rw-r--r--. 1 root root 41943040 9月 13 22:17 demo3.log
-rw-r--r--. 1 root root 41943040 9月 13 22:17 demo4.log
关闭node3查看复制卷
[root@client text]# ll rep-vol/ '复制卷正常访问'
总用量 204800
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo1.log
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo2.log
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo3.log
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo4.log
-rw-r--r--. 1 root root 41943040 9月 13 22:18 demo5.log
2.7:访问控制
拒绝访问
例:
[root@node1 ~]# gluster volume set dis-rep auth.reject 192.168.100.6 '拒绝144节点访问分布式复制卷'
volume set: success
[root@client text]# ll dis-rep/ '客户端无法访问分布式复制卷'
总用量 0
仅允许访问
例:
[root@node1 ~]# gluster volume set dis-rep auth.allow 192.168.100.100
volume set: success
基本的操作命令都可以查的到,就不一一展示了
[root@node1 ~]# gluster volume
add-brick geo-replication log replace-brick status
barrier heal profile reset stop
clear-locks help quota set sync
create info rebalance start top
delete list remove-brick statedump
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)