网站优化主要内容,甘肃省建设厅官网站,电子商务网站建设模式,湖南公司网站建设一、GlusterFS的概述#xff1a; GlusterFS 是一个开源的分布式文件系统。 只在扩展存储容器#xff0c;提高性能 并且通过多个互联网络的存储节点的进行几余#xff0c;以确保数据的可用性和一致性 由存储服务器、客户端以及NFS/Samba 存储网关#xff08;可选#xff0c…一、GlusterFS的概述 GlusterFS 是一个开源的分布式文件系统。 只在扩展存储容器提高性能 并且通过多个互联网络的存储节点的进行几余以确保数据的可用性和一致性 由存储服务器、客户端以及NFS/Samba 存储网关可选根据需要选择使用组成。没有元数据服务器组件这有助于提升整个系统的性能、可靠性和稳定性。MFS 传统的分布式文件系统大多通过元服务器来存储元数据元数据包含存储节点上的目录信息、目录结构等。这样的设计在浏览目录时效率高但是也存在一些缺陷例如单点故障。一旦元数据服务器出现故障即使节点具备再高的冗余性整个存储系统也将崩溃。而 GlusterFS 分布式文件系统是基于无元服务器的设计数据横向扩展能力强具备较高的可靠性及存储效率。GlusterFS同时也是Scale-Out横向扩展存储解决方案Gluster的核心在存储数据方面具有强大的横向扩展能力通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS支持借助TCP/IP或InfiniBandRDMA网络一种支持多并发链接的技术具有高带宽、低时延、高扩展性的特点将物理分散分布的存储资源汇聚在一起统一提供存储服务并使用统一全局命名空间来管理数据。 GFS由三个组件组成 ①存储服务器Brick Server ② 客户端不在本地且有客户端也会有服务端这点类似于 NFS但是更为复杂 ③ 存储网关NFS/Samaba无元数据服务器就是保存数据的地方
二、GlusterFS的特点
扩展性和高性能
GlusterFS利用双重特性来提供高容量存储解决方案。 1Scale-Out架构允许通过简单地增加存储节点的方式来提高存储容量和性能磁盘、计算和I/O资源都可以独立增加支持10GbE和 InfiniBand等高速网络互联。 2Gluster弹性哈希ElasticHash解决了GlusterFS对元数据服务器的依赖改善了单点故障和性能瓶颈真正实现了并行化数据访问。GlusterFS采用弹性哈希算法在存储池中可以智能地定位任意数据分片将数据分片存储在不同节点上不需要查看索引或者向元数据服务器查询。
高可用性
GlusterFS可以对文件进行自动复制如镜像或多次复制从而确保数据总是可以访问甚至是在硬件故障的情况下也能正常访问。 当数据出现不一致时自我修复功能能够把数据恢复到正确的状态数据的修复是以增量的方式在后台执行几乎不会产生性能负载。 GlusterFS可以支持所有的存储因为它没有设计自己的私有数据文件格式而是采用操作系统中主流标准的磁盘文件系统如EXT3、XFS等来存储文件因此数据可以使用传统访问磁盘的方式被访问。
全局统一命名空间
分布式存储中将所有节点的命名空间整合为统一命名空间将整个系统的所有节点的存储容量组成一个大的虚拟存储池供前端主机访问这些节点完成数据读写操作。
弹性卷管理
GlusterFS通过将数据储存在逻辑卷中逻辑卷从逻辑存储池进行独立逻辑划分而得到。 逻辑存储池可以在线进行增加和移除不会导致业务中断。逻辑卷可以根据需求在线增长和缩减并可以在多个节点中实现负载均衡。 文件系统配置也可以实时在线进行更改并应用从而可以适应工作负载条件变化或在线性能调优。
基于标准协议
Gluster 存储服务支持 NFS、CIFS、HTTP、FTP、SMB 及 Gluster原生协议完全与 POSIX 标准可移植操作系统接口兼容。 现有应用程序不需要做任何修改就可以对Gluster 中的数据进行访问也可以使用专用 API 进行访问。
三、GlusterFS 术语
1.Brick存储块
实际存储用户数据的服务器
指可信主机池中由主机提供的用于物理存储的专用分区是GlusterFS中的基本存储单元同时也是可信存储池中服务器上对外提存储目录
存储目录的格式由服务器和目录的绝对路径构成表示方法为SERVER:EXPORT。如192.168.91.100:/data/mydir/
2.Volume逻辑卷:
本地文件系统的分区”
一个逻辑卷是一组Brick的集合。卷是数据存储的逻辑设备类似于LVM 中的逻辑卷。大部分Gluster管理操作是在卷上进行的
3.3 FUSE
用户空间的文件系统
是一个内核模块允许用户创建自己的文件系统无须修改内核代码
用户 空间的文件系统(类比EXT4)“这是一个伪文件系统”;以本地文件系统为例用户想要读写一个文件会借助于EXT4文件系统然后把数据写在磁盘上而如果是远端的GFS客户端的请求则应该交给FUSE(为文件系统)就可以实现跨界点存储在GFS上
3.4 VFS虚拟端口
内核态的虚拟文件系统
内核空间对用户空间提供的访问磁盘的接口用户是先提交请求交给VFS然后VFS交给FUSE再交给GFS客户端最后由客户端交给远端的存储
3.5 Glusterd后台管理进程
运行在存储节点的进程
在存储群集中的每个节点上都要运行允许在存储节点的进程
四、GlusterFS 的工作流程 客户端通过 GlusterFS 的挂载点访问数据。linux系统内核通过 VFS API 收到请求并处理。VFS 将数据递交给 FUSE 内核文件系统并向系统注册一个实际的文件系统 FUSE而 FUSE 文件系统则是将数据通过 /dev/fuse 设备文件递交给了 GlusterFS client (客户)端。可以将 FUSE 文件系统理解为一个代理。GlusterFS client 收到数据后client 根据配置文件的配置对数据进行处理。经过 GlusterFS client 处理后通过网络将数据传递至远端的 GlusterFS Server服务器并且将数据写入到服务器存储设备上。
数据流向
①mysql服务器——存储数据到挂载目录中/data
②mysql数据会优先交给内核的文件系统处理——GFS客户端处理本地
③GFS客户端会和GFS服务端进行交互GFS服务端接收到数据然后再通过挂载的卷的类型对应保存在后端block块节点服务器上
分布式条带复制卷Distribute Stripe Replicavolume三种基本卷的复合卷通常用于类 Map Reduce 应用器——存储数据到挂载目录中/data
五、弹性HASH算法 弹性HASH算法是Davies-Meyer 算法的具体实现通过HASH 算法可以得到一个32位的整数范围的hash 值假设逻辑卷中有N个存储单位Brick 则32位的整数范围将被划分为N个连续的子空间每个空间对应一个Brick。当用户或应用程序访问某一个命名空间时通过对该命名空间计算HASH值根据该HASH 值所对应的32位整数空间定位数据所在的Brick。
优点
保证数据平均分布在每一个Brick 中。解决了对元数据服务器的依赖进而解决了单点故障以及访问瓶颈。
六、GlusterFS的卷类型
GlusterFS支持7种卷前5种使用的多
分布式卷提高存储容量和扩展性但不提供冗余保护条带卷提高读写性能但不提供冗余保护复制卷提供冗余保护但会降低存储容量和扩展性分布式条带卷提供读写性能和扩展性分布式复制卷提供冗余保护和扩展性条带复制卷分布式条带复制卷
1.分布式卷Distribute volume
文件通过HAS日算法分布到所有Brick Server上这种卷是GlusterFS的默认卷以文件为单位根据HASH算法散列到不同的Brick其实只是扩大了磁盘空间如果有一块磁盘损坏数据也将丢失属于文件级的RAIDO不具有容错能力。 在该模式下并没有对文件进行分块处理文件直接存储在某个Server 节点上。 由于直接使用本地文件系统进行文件存储所以存取效率并没有提高反而会因为网络通信的原因而有所降低。
示例原理
File1和File2存放在Server1而File3存放在server2文件都是随机存储一个文件如File1要么在server1上要么在Server2上不能分块同时存放在Server1和Server2上。
分布式卷的特点
文件分布在不同的服务器不具备冗余性。更容易和廉价地扩展卷的大小。单点故障会造成数据丢失。依赖底层的数据保护。
创建分布式卷
创建一个名为dis-volume的分布式卷文件将根据HASH分布在server1/dir1、server2/dir2和server3/dir3中
gluster volume create dis-volume server1:/dirl server2:/dir2 server3:/dir32、条带卷Stripe volume
根据偏移量将文件分成N块N个条带节点轮询的存储在每个Brick Server节点存储大文件时性能尤为突出不具备冗余性类似Raid0
特点
数据被分割成更小块分布到块服务器群中的不同条带区分布减少了负载且更小的文件加速了存取的速度没有数据冗余
创建条带卷
创建了一个名为Stripe-volume的条带卷文件将被分块轮询的存储在Server1/dir1和Server2/dir2两个Brick中
gluster volume create stripe-volume stripe 2 transport tcp server1:/dirl server2:/dir23、复制卷Replica volume
将文件同步到多个Brick上使其具备多个文件副本属于文件级RAID1具有容错能力。因为数据分散在多个Brick中所以读性能得到很大提升但写性能下降。复制卷具备冗余性即使一个节点损坏也不影响数据的正常使用。但因为要保存副本所以磁盘利用率较低。
示例原理
File1 同时存在Server1和Server2File2也是如此相当于server2中的文件是Server1中文件的副本。
复制卷特点
卷中所有的服务器均保存一个完整的副本。卷的副本数量可由客户创建的时候决定但复制数必须等于卷中Brick所包含的存储服务器数。至少由两个块服务器或更多服务器。具备冗余性。
创建复制卷
创建名为rep-volume的复制卷文件将同时存储两个副本分别在server1/dirl和Server2/dir2两个Brick中
gluster volume create rep-volume replica 2 transport tcp serverl:/dirl server2:/dir24、分布式条带卷Distribute Stripe volume
兼顾分布式卷和条带卷的功能主要用于大文件访问处理至少最少需要4台服务器
创建分布式条带卷
创建了名为dis-stripe的分布式条带卷配置分布式的条带卷时卷中Brick所包含的存储服务器数必须是条带数的倍数2倍
gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir45、分布式复制卷Distribute Replica volume
兼顾分布式卷和复制卷的功能用于需要冗余的情况
创建分布式复制卷
创建名为dis-rep的分布式条带卷配置分布式复制卷时卷中Brick所包含的存储服务器数必须是条带数的倍数2倍
gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir46、条带复制卷Stripe Replica volume
类似 RAID 10同时具有条带卷和复制卷的特点。
7、分布式条带复制卷Distribute Stripe Replicavolume
三种基本卷的复合卷通常用于类 Map Reduce 应用。
五、部署GlusterFS集群
1.环境准备
服务器类型系统和IP地址需要安装的组件node1服务器CentOS7.4(64 位) 192.168.91.3添加4块20G硬盘node2服务器CentOS7.4(64 位) 192.168.91.4添加4块20G硬盘node3服务器CentOS7.4(64 位) 192.168.91.5添加4块20G硬盘node4服务器CentOS7.4(64 位) 192.168.91.7添加4块20G硬盘
2.关闭所有节点服务器的防火墙和SElinux
systemctl stop firewalld
setenforce 0
3.编写脚本:
由于节点服务器的操作都一样这里我仅展示node1的操作步骤
[rootnode1 ~] # vim /opt/fdisk.sh#!/bin/bash
NEWDEVls /dev/sd* | grep -o sd[b-z] | uniq
for VAR in $NEWDEV
doecho -e n\np\n\n\n\nw\n | fdisk /dev/$VAR /dev/nullmkfs.xfs /dev/${VAR}1 /dev/nullmkdir -p /data/${VAR}1 /dev/nullecho /dev/${VAR}1 /data/${VAR}1 xfs defaults 0 0 /etc/fstab
done
mount -a /dev/null
4.执行脚本并查看磁盘挂载情况:
chmod x /opt/fdisk.sh
cd /opt/
./fdisk.sh
mount -a
df -h
--------------------------------------------------------------------------
文件系统 容量 已用 可用 已用% 挂载点
... ... ... ... ...
/dev/sdb1 20G 33M 20G 1% /data/sdb1
/dev/sdc1 20G 33M 20G 1% /data/sdc1
/dev/sdd1 20G 33M 20G 1% /data/sdd1
/dev/sde1 20G 33M 20G 1% /data/sde1
5.添加临时DNS域名解析:
echo 192.168.91.3 node1 /etc/hosts
echo 192.168.91.4 node2 /etc/hosts
echo 192.168.91.5 node3 /etc/hosts
echo 192.168.91.7 node4 /etc/hosts
cat /etc/hosts
6.放入gfsrepo.zip安装包解压然后创建glfs.repo配置文件:
cd /opt
rz -E
tar zxf gfsrepo.zip.tar
cd /etc/yum.repos.d/
mkdir repos.bak #如果有则无需创建
mv * repos.bak/
ls
##应该剩下repos.bak#创建glfs.repo配置文件内容如下
vim glfs.repo
[glfs]
nameglfs
baseurlfile:///opt/gfsrepo
gpgcheck0
enabled1yum clean all yum makecache 7.安装gfs相关程序然后开启服务:
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
systemctl start glusterd.service
systemctl enable glusterd.service
systemctl status glusterd.service 8.添加节点到存储信任池中:
#只要在一台Node节点上添加其它节点即可
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4#在每个Node节点上查看群集状态
gluster peer status 六、创建卷:
1、操作均在node1要求规划如下:
卷名称卷类型Brickdis-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)
2.创建分布式卷:
#创建分布式卷没有指定类型默认创建的是分布式卷
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 3.创建条带卷
#指定类型为 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 4.创建复制卷
#指定类型为 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 5.创建分布式条带卷
#指定类型为 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 forcegluster volume start dis-stripegluster volume info dis-stripe 6.创建分布式复制卷
#指定类型为 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 forcegluster volume start dis-repgluster volume info dis-rep 7.查看当前所有卷的列表
[rootnode1 ~]#gluster volume list 七、部署客户端并创建测试文件
1、关闭防火墙和SElinux
systemctl stop firewalld
setenforce 0 八、查看卷对应磁盘中的测试文件
1.查看分布式文件分布
#查看分布式文件分布
[rootnode1 opt]# ls -lh /data/sdb1 #数据没有被分片[rootnode2 ~]# ls -lh /data/sdb1 2.查看条带卷文件分布
[rootnode1 ~]# ls -lh /data/sdc1 #数据被分片50% 没副本 没冗余[rootnode2 ~]# ls -lh /data/sdc1 #数据被分片50% 没副本 没冗余 3.查看复制卷文件分布
[rootnode3 ~]# ll -h /data/sdb1 #数据没有被分片 有副本 有冗余 [rootnode4 ~]# ll -h /data/sdb1 #数据没有被分片 有副本 有冗余 4.查看分布式条带卷分布
[rootnode1 ~]# ll -h /data/sdd1 #数据被分片50% 没副本 没冗余[rootnode2 ~]# ll -h /data/sdd1[rootnode3 ~]# ll -h /data/sdd1[rootnode4 ~]# ll -h /data/sdd1 5.查看分布式复制卷分布
[rootnode1 ~]# ll -h /data/sde1 #数据没有被分片 有副本 有冗余[rootnode2 ~]# ll -h /data/sde1[rootnode3 ~]# ll -h /data/sde1[rootnode4 ~]# ll -h /data/sde1 九、破坏性测试
1.挂起 node2节点或者关闭glusterd服务来模拟故障:
[rootnode2 ~]# init 0[rootzabbix test]#ll /test/dis
总用量 163840
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo1.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo2.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo3.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo4.log
2.条带卷无法访问不具备冗余:
[rootzabbix test]#ll /test/stripe/
总用量 0
[rootpromote test]#3、复制卷在node3和node4上的关闭node4:
[rootnode4 ~]#init 0客户端仍然存在
[rootzabbix test]#ll /test/rep/
总用量 204800
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo1.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo2.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo3.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo4.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo5.log
[rootpromote test]#4.分布式条带卷不具备冗余:
[rootzabbix test]#ll /test/dis_stripe/
总用量 05、分布式复制卷具有冗余:
[rootzabbix test]#ll /test/dis_rep/
总用量 204800
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo1.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo2.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo3.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo4.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo5.log十、其他维护命令
1查看GlusterFS卷
gluster volume list 2查看所有卷的信息
gluster volume info3查看所有卷的状态
gluster volume status4停止一个卷
gluster volume stop dis-stripe5删除一个卷注意删除卷时需要先停止卷且信任池中不能有主机处于宕机状态否则删除不成功
gluster volume delete dis-stripe6设置卷的访问控制
#仅拒绝
gluster volume set dis-rep auth.allow 192.168.184.100#仅允许
gluster volume set dis-rep auth.allow 192.168.184.* #设置192.168.184.0网段的所有IP地址都能访问dis-rep卷分布式复制卷总结 ①mysql服务器——存储数据到挂载目录中/data ②mysql数据会优先交给内核的文件系统处理——GFS客户端处理本地 ③GFS客户端会和GFS服务端进行交互GFS服务端接收到数据然后再通过挂载的卷的类型对应保存在后端block块节点服务器上 分布式条带复制卷Distribute Stripe Replicavolume三种基本卷的复合卷通常用于类 Map Reduce 应用器——存储数据到挂载目录中/data