GFS

概述

gfs 架构 gfs部署_gfs 架构

特点

gfs 架构 gfs部署_客户端_02

术语

gfs 架构 gfs部署_数据_03

架构

模块化:每个模块可以提供不同的功能

堆栈式:同时启用多个模块,多个功能可以组合,实现复杂的功能

通过对模块的组合,实现复杂的功能

gfs 架构 gfs部署_数据_04


上半部分为客户端,中间为网络层,下半部分为服务端

1、封装多个功能模块,组成堆栈式的结构,来实现复杂的功能

2、然后以请求的方式与客户端进行交互,客户端与服务端进行交互,由于可能会存在系统兼容问题,需要通过posix来解决系统兼容性问题,让客户端的命令通过posix过滤后可以在服务端执行

gfs 架构 gfs部署_客户端_05


gfs 架构 gfs部署_客户端_06

后端存储定位文件

弹性HASH算法
通过HASH算法得到一个固定长度的数据(这里是32位整数)
通常情况下,不同数据得到的结果是不同的
为了解决分布式文件数据索引、定位的复杂程度,而使用了HASH算法来辅助

GFS支持的七种卷

gfs 架构 gfs部署_数据_07

GFS部署

gfs 架构 gfs部署_数据_08

创建磁盘分区挂载

所有节点划分磁盘

Node1节点:192.168.21.10
Node2节点:192.168.21.20
Node3节点:192.168.21.30
Node4节点:192.168.21.40


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
df -h

gfs 架构 gfs部署_gfs 架构_09


gfs 架构 gfs部署_gfs 架构_10

更改节点名称,配置hosts文件

Node1节点:192.168.21.10
Node2节点:192.168.21.20
Node3节点:192.168.21.30
Node4节点:192.168.21.40
hostname node1
su -
echo "192.168.21.10 node1" >> /etc/hosts
echo "192.168.21.20 node2" >> /etc/hosts
echo "192.168.21.30 node3" >> /etc/hosts
echo "192.168.21.40 node4" >> /etc/hosts
cat /etc/hosts

安装、启动GFS服务

gfs 架构 gfs部署_gfs 架构_11


gfs 架构 gfs部署_客户端_12


gfs 架构 gfs部署_数据_13

添加节点创建集群

gfs 架构 gfs部署_Server_14

卷名称 				卷类型				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)

gfs 架构 gfs部署_数据_15

(2)创建条带卷
指定类型为 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

gfs 架构 gfs部署_数据_16

(3)创建复制卷
指定类型为 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

gfs 架构 gfs部署_gfs 架构_17

(4)创建分布式条带卷
指定类型为 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

gfs 架构 gfs部署_gfs 架构_18

(5)创建分布式复制卷
指定类型为 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

gfs 架构 gfs部署_数据_19


gfs 架构 gfs部署_客户端_20

配置客户端

gfs 架构 gfs部署_Server_21


gfs 架构 gfs部署_Server_22


gfs 架构 gfs部署_gfs 架构_23


gfs 架构 gfs部署_数据_24

测试

gfs 架构 gfs部署_gfs 架构_25


gfs 架构 gfs部署_数据_26

查看

gfs 架构 gfs部署_gfs 架构_27

gfs 架构 gfs部署_Server_28


gfs 架构 gfs部署_gfs 架构_29


gfs 架构 gfs部署_客户端_30


gfs 架构 gfs部署_gfs 架构_31


gfs 架构 gfs部署_客户端_32


gfs 架构 gfs部署_gfs 架构_33


gfs 架构 gfs部署_客户端_34


gfs 架构 gfs部署_Server_35


gfs 架构 gfs部署_客户端_36


gfs 架构 gfs部署_gfs 架构_37


gfs 架构 gfs部署_数据_38

冗余测试

节点模拟故障

gfs 架构 gfs部署_客户端_39

验证

gfs 架构 gfs部署_客户端_40


gfs 架构 gfs部署_gfs 架构_41


gfs 架构 gfs部署_Server_42


gfs 架构 gfs部署_客户端_43


gfs 架构 gfs部署_gfs 架构_44


gfs 架构 gfs部署_数据_45

总结

分布式卷:属于文件级的RAIDO,不具备容错能力,如果有一块磁盘损坏,数据就丢失
条带卷:类似RAID0,文件将被分成数据块并以轮询方式分布到Brick server上
复制卷:将文件同步到多个Brick上,属于文件RAID1,数据分数在多个Brick中
分布式条带卷:Brick server数量是条带数兼具分布式卷和条带卷的特定
分布式复制卷:Brick server数量是镜像数,兼具分布式卷和复制卷的特点条带复制卷:类似RAID10,同时具有条带卷和复制卷的特点
分布式条带复制卷:三种基本卷的集合
在企l业中数据的安全性是非常重要的,不具备冗余的卷是不会被企业所接受,所以使用频率较高的就是冗余性好的几种,例如本章讲的复制卷、分布式复制卷,还有没讲的条带复制卷和分布式条带复制卷了。